У меня есть файл 1080p m2ts с тремя звуковыми дорожками и дорожкой субтитров. Я хотел бы преобразовать его в 720p MKV или вообще в любой формат, сохранив при этом все три звуковые дорожки вместе с файлом субтитров.

Несмотря на наличие трех звуковых дорожек, он показывает шесть дорожек и два субтитра.

Input #0, mpegts, from '00003.m2ts':
  Duration: 00:24:53.39, start: 4198.958300, bitrate: 29700 kb/s
  Program 1 
    Stream #0.0[0x1011]: Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
    Stream #0.1[0x1100]: Audio: truehd, 48000 Hz, 5.1, s32
    Stream #0.2[0x1100]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Stream #0.3[0x1101]: Audio: truehd, 48000 Hz, stereo, s32
    Stream #0.4[0x1101]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
    Stream #0.5[0x1102]: Audio: truehd, 48000 Hz, mono, s32
    Stream #0.6[0x1102]: Audio: ac3, 48000 Hz, mono, s16, 96 kb/s
    Stream #0.7[0x1200]: Subtitle: pgssub
    Stream #0.8[0x1201]: Subtitle: pgssub

Выполнение этой команды выводит видео 1280x720 с одной звуковой дорожкой и без субтитров.

ffmpeg -threads 8 -i 00003.m2ts -vcodec libx264 -preset veryslow -tune film -crf 22 -vf scale=-1:720 -acodec aac -b:a 256k -strict experimental output.mp4

Поиск в Google подсказал мне функцию -map, но выбор только тех треков, которые я хочу включить, выдает ошибку.

ffmpeg -threads 8 -i 00003.m2ts -vcodec libx264 -preset veryslow -tune film -crf 22 -vf scale=-1:720 -acodec aac -b:a 256k -strict experimental -map 0:0 -map 0:1 -map 0:3 -map 0:5 -map 0:7 -vn output.mp4
Number of stream maps must match number of output streams

Любой совет, который я нашел, совершенно бесполезен из-за изменений в синтаксисе. Например, многие руководства используют c:v и a:v вместо -vcodec и -acodec . Я предполагаю, что версия, которую я установил, не слишком устарела. Для записи я использую Debian 7.

ffmpeg version 0.8.13-6:0.8.13-1, Copyright (c) 2000-2014 the Libav developers
  built on Jun 28 2014 17:50:37 with gcc 4.7.2

Любой совет будет принят во внимание.


Обновление: переход на ffmpeg, указанный в комментариях, решил мою проблему.

Выполнение команды ниже успешно выводит все три звуковые дорожки и дорожки субтитров.

ffmpeg -threads 8 -i 00003.m2ts -vcodec libx264 -crf 21 -preset veryslow -tune film -scodec copy -acodec aac -b:a 192k -strict experimental -map 0:0 -map 0:5 -map 0:3 -map 0:1 -map 0:7 output.mkv

Для тех, кто сталкивается с этим во время поиска в Google , измените второе число в функциях -map чтобы выбрать ваши треки, и обязательно включайте -scodec copy при копировании субтитров. Отредактируйте число -crf чтобы изменить степень сжатия. Google, чтобы узнать больше, и не забудьте посмотреть-настроиться, так как есть много разных типов, подходящих для разных видов видео.

0