Ffmpeg: видео TS может быть преобразовано непосредственно в видео MP4 без перекодирования?

Я вижу здесь (Как преобразовать .ts файл в основной формат без потерь?), что MKV рекомендуется с этой целью (ffmpeg -i input -map 0 -c copy output.mkv), но не MP4, который, как говорят, включает перекодирование видео.

(На основе этого я использую sh -c 'ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv' %f в действии контекстного меню, как сказано здесь.)

Здесь (Как преобразовать .mkv файл в .mp4 файл без потерь?) Я вижу, что преобразование MKV к MP4 без перекодирования очень легко (ffmpeg -i input.mkv -codec copy output.mp4), путем простого изменения контейнера.

Если TS-> MKV-> MP4 conversion-without-recoding возможен, не был должен TS->, MP4 возможны непосредственно также?


Я добавил к своему контекстному меню файлового менеджера команду sh -c 'ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mp4' %f и это работает без проблем на .ts файлы точно так же, как для .mkv.

Сверение с Mediainfo два получающихся файла MP4 ( TS->MP4 и TS->MKV->MP4, где -> вышеупомянутая команда), я вижу в основном ту же информацию об их видеоконтенте.

enter image description here

Остальное - то же:

Настройки кодировки: cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x3:0x3 / me=dia / subme=3 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=8 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=0 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=0 / rc=crf / mbtree=0 / crf=24.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / vbv_maxrate=3000 / vbv_bufsize=3000 / crf_max=0.0 / nal_hrd=none / filler=0 / ip_ratio=0.71 / pb_ratio=1.30 / aq=1:1.00

3
задан 4 March 2020 в 17:48

1 ответ

TS> MP4? Это Depends™

Да, видео TS быть преобразованным (повторно мультиплексированный) непосредственно в видео MP4, не повторно кодируя, если форматы видео и форматы аудио совместимы. Ваше видео является H.264, который в настоящее время является наиболее распространенным и самым совместимым форматом видео в MP4, таким образом копирование его от TS до MP4 не будет никакой проблемой.

Произвольные форматы

TS поддерживает больше форматов, чем MP4. При попытке мультиплексировать произвольные форматы в MP4, возможные результаты:

  • Успех - форматы поддерживаются FFmpeg MP4 muxer и Вашим плеером/устройством.

  • Частичный успех - форматы поддерживаются FFmpeg MP4 muxer, но не поддерживаются Вашим плеером/устройством. Это могло иметь место для меньшего количества распространенных или унаследованных форматов, поддерживаемых MP4.

  • Отказ - форматы не поддерживаются, и muxer даст Вам сообщение об ошибке такой как Could not find tag for codec foo in stream #0, codec not currently supported in container

Рекомендуемая процедура

Таким образом для полной совместимости я рекомендую повторно кодировать, если форматы не являются общим и широко поддерживаемым H.264 или видео H.265/HEVC + аудио AAC.

Для автоматизации можно использовать ffprobe определить форматы. Посмотрите там способ использовать ffmpeg для определения кодирования файла перед транскодированием? для примера. Затем используйте условный оператор в своем сценарии для выполнения корректной команды.

Подзаголовки

Основным исключением являются подзаголовки. MP4 не имеет хорошей поддержки подзаголовка. Если Ваш TS содержит текстовые подзаголовки (ASS/SSA, SRT) затем, можно преобразовать их в синхронизированный текст (-c:s mov_text), но поддержка синхронизированных текстовых подзаголовков среди плееров не универсальна. Основанные на изображении подзаголовки должны будут быть исключены, такой как с отрицательным отображением -map 0 -map -0:s.

3
ответ дан 17 March 2020 в 00:09

Другие вопросы по тегам:

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