Я предполагаю, что это можно сделать как-то, потому что я видел программы, которые являются графическим интерфейсом для FFMPEG, которые по существу делают это, но я пытаюсь понять это из командной строки в Ubuntu. Я хочу перекодировать из видеопотока MPEG2 с записи ATSC в h264, но просто сохранить все аудиоканалы как есть. Я также хотел бы преобразовать субтитры в трек субтитров в финальной оболочке MKV. Кроме того, можно ли отметить хотя бы основную звуковую дорожку и дорожки субтитров как "English"? Чтобы сделать его еще более удивительным, сделав это скрипт BASH, где я могу назвать входной файл и сохранить его как то же имя, но изменить его .mkv сделает его идеальным. Я не разбираюсь в написании сценария с нуля и не знаю соответствующих переменных для команды FFMPEG.
Преобразование ATSC TS в MKV, включая все звуковые дорожки и субтитры из FFMPEG
23
1 ответ
это немного сложно, но вот метод работы:
INFILE=input.ts
OUTFILE=output.mkv
ffmpeg \
-i "${INFILE}" \
-f lavfi -i movie="${INFILE}[out+subcc]" \
-map 0 -map 1:s \
-codec:v libx264 \
-codec:a copy \
-codec:s srt \
-metadata:s:s:0 language=eng \
"${OUTFILE}"
здесь input.ts
и output.mkv
ваши желаемые входные MPEG-TS и выходные Matroska файлы, соответственно. Обобщение на сценарий остается упражнением для читателя.
интерпретация параметров построчно:
-i ...
входной файл.
-f lavfi -i ...
позволяет извлечь встроенный поток субтитров.
-map 0 -map 1:s
выбор потока для выход.
-codec:v libx264
говорит ffmpeg конвертировать видео в H. 264.
-codec:a copy
копирует все аудио потоки на выход без изменений.
-codec:s srt
указывает ffmpeg преобразовать встроенные заголовки в SRT.
-metadata:s:s:0 language=eng
устанавливает язык потока субтитров на английский.
Примечания:
- я использовал это только с воздушными потоками ATSC, включая то, что я предполагаю, являются заголовками EIA-608. Я понятия не имею, работает ли он с QAM (кабельное) записи, хотя я ожидаю, что это так.
- могут возникнуть проблемы с именами входных файлов, содержащих определенные символы, даже если имя файла заключено в кавычки.
- это скопирует все звуковые потоки. Если вам нужен только первый, вам нужно явно отобразить отдельные потоки из ввода 0.
- скорее всего, звуковые потоки уже имеют набор языков. Если они этого не делают, добавьте другой параметр-metadata, чтобы установить язык аудиопотока, слишком.
- вы, вероятно, захотите поэкспериментировать с качеством кодирования видео с помощью опции-crf. Если входное видео чересстрочное, вы также можете деинтерлейс и масштабировать до 720p, добавив
-filter:v bwdif=0,scale=1280:720
после-map
строка(ы).
0
отвечен Scott Reynolds 2022-12-18 09:42
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]