Не знаю, пригодится ли кому:
в общем, ffmpeg умеет не только извлекать дорожки и конвертировать, он умеет и полностью копировать видеофайл с конвертацией только аудио. То есть, видеодорожку копирует как есть (если указать), а любую аудиодорожку может сконвертнуть во что надо. Надо только скачать бинарник ffmpeg
В целом, параметры такие:
- Код: Выделить всё
ffmpeg.exe -i <source_video_file> -map 0:s -map 0:v -map 0:a -c:v copy -c:a:0 ac3 -b:a 320k <new_video_file>
-map 0:s - смаппить (использовать при конвертации как есть) субтитры
-map 0:v - смаппить видеодорожки
-map 0:a - смаппить аудиодорожки (все). Если нужны только некоторые, то можно не указывать этот параметр, а указать только следующий (-c:a:X), который конвертит.
-c:v copy - видеодорожки просто скопировать
-c:a:0 ac3 - конвертнуть аудодорожку 0 в ac3 (если надо ещё одну, просто указываем ещё раз -c:a:X ac3)
-b:a 320k - битрейт аудио
По идентификации дорожек немного заковыристо -- используется индекс именно аудиодорожек. То есть, если ffprobe или ffmpeg показывает несколько стримов скопом (и видео, и аудио, и субтитры со сквозной нумеровкой), то нужно именно самому отсчитывать индекс нужной аудио дорожки
как пример:
Вывод ffmpeg по дорожкам:
Stream #0:0 (eng): Video: hevc
Stream #0:1 (rus): Audio: dts
Stream #0:2 (rus): Audio: dts
Stream #0:3 (rus): Audio: dts
Stream #0:4 (rus): Audio: ac3
Stream #0:5 (eng): Audio: dts
Stream #0:6 (rus): Subtitle
...
то тут нам нужно считать: дорожка 0:1 это дорожка №0, дорожка 0:5 это дорожка 4 и так далее.
Метод неудобен разве что если у вас места на диске не очень много и не хочется ждать, пока весь файл сконвертится (скопируется), но удобно тем, что не надо заниматься извлечением и склеиванием.
Я себе написал скрипт на PowerShell для извлечения инфы по дорожкам и конвертированию нужных (английская почему-то постоянно в DTS).
Пытался в ffmpeg Batch AV converter засунуть эти параметры, но он, почему-то, ругается. надо ещё покопать.
Если есть вопросы, постараюсь ответить. скрипт можно дописать и для линупса (есть макось, думаю, там бинарник ffmpeg не сильно другой).
UPD: победил ffmpeg Batch AV converter (те же параметры, в принципе. список дорожек можно посмотреть в соседней вкладке Stream multiplex)