Похожие вопросы

Фильтр Alphamerge работает только на первом кадре
Преобразование видео с кодеком vp9 с помощью ffmpeg
Кодирование видео с использованием схемы кодирования VP8 и аудиокодек
Объединить видео MKV и аудио дорожки MKA с сохранением субтитров
Как использовать ffmpeg для downmix 5.1 DTS HD MA или Dolby TrueHD для стерео AAC с Dolby Pro Logic II?
ffmpeg миниатюры с точным размером основное соотношение сторон
720p к микро-720p
Вывод по конвейеру из ffmpeg / avconv через ssh в файл
Как разделить, вставить и объединить видео файлы вместе ffmpeg
Установка кодека iLBC (libilbc) на Mac OS X для использования с FFmpeg
Как определить разрядность AAC
FFmpeg добавить фоновый звук к видео, но не полностью приглушая оригинальный звук
Кодировка команды базовый профиль h264, уровень 1, с FFmpeg и libx264
FFMpeg генерирует сегментированные видео m3u8 с длительной задержкой перед началом воспроизведения
ffmpeg mpeg2 в MP4 H264 создает артефакты горизонтальных линий в сценах движения

Преобразование ATSC TS в MKV, включая все звуковые дорожки и субтитры из FFMPEG

Я предполагаю, что это можно сделать как-то, потому что я видел программы, которые являются графическим интерфейсом для FFMPEG, которые по существу делают это, но я пытаюсь понять это из командной строки в Ubuntu. Я хочу перекодировать из видеопотока MPEG2 с записи ATSC в h264, но просто сохранить все аудиоканалы как есть. Я также хотел бы преобразовать субтитры в трек субтитров в финальной оболочке MKV. Кроме того, можно ли отметить хотя бы основную звуковую дорожку и дорожки субтитров как "English"? Чтобы сделать его еще более удивительным, сделав это скрипт BASH, где я могу назвать входной файл и сохранить его как то же имя, но изменить его .mkv сделает его идеальным. Я не разбираюсь в написании сценария с нуля и не знаю соответствующих переменных для команды FFMPEG.

5
задан PCSO SAR COMM
источник

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 2018-09-09 04:41:15
источник

Другие вопросы ffmpeg matroska