LINUX.ORG.RU

ffmpeg не проставляет vtag в MPEGTS

 


0

1

Описание проблемы:
У меня есть файл TS, где видно что параметр codec_tag_string, установленный в HEVC. Этот файл воспроизводится на телевизорах LG, Toshiba и т.д. Когда я пытаюсь принудительно выставить этот идентификатор формата мультимедиа в мой файл с помощью ffmpeg с параметром -vtag, я вижу codec_tag_string в выводе FFmpeg правильный (HEVC), но выходной файл остается без изменений.

Пример файла, работающего, с проставленным codec_tag_string = HEVC. 33-06000.ts: ​https://dropmefiles.com/FIftm
Входной файл, для теста. 5000-000.ts: ​https://dropmefiles.com/3I0Yx
ffmpeg версия 4.1.1

Как делал:

/usr/bin/ffmpeg -hide_banner -i /5000-000.ts -vtag HEVC -vcodec copy -acodec copy -sn -f mpegts 50.ts
Input #0, mpegts, from '/5000-000.ts':
  Duration: 00:00:05.31, start: 1.400000, bitrate: 13307 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: hevc (Main 10) ([36][0][0][0] / 0x0024), yuv420p10le(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x101](eng): Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 126 kb/s
Output #0, mpegts, to '50.ts':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0: Video: hevc (Main 10) (HEVC / 0x43564548), yuv420p10le(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 50 fps, 50 tbr, 90k tbn, 90k tbc
    Stream #0:1(eng): Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 126 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=  192 fps=0.0 q=-1.0 Lsize=    9101kB time=00:00:05.26 bitrate=14149.7kbits/s speed= 304x
video:8334kB audio:84kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 8.112041%
ffprobe -hide_banner 50.ts
Input #0, mpegts, from '50.ts':
  Duration: 00:00:05.31, start: 1.400000, bitrate: 14038 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: hevc (Main 10) ([36][0][0][0] / 0x0024), yuv420p10le(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x101](eng): Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 126 kb/s

Подскажите, как проставить codec_tag_string = HEVC, как в файле 33-06000.ts?

Судя по всему параметр -vtag не работает в режиме copy, потому что даже явно неправильное значение (например, XVID) ничего не меняет. А что файл не играется телеком? Попробуй tsMuxeR. Как вариант в двоичном редакторе править.

anonymous ()
Ответ на: комментарий от anonymous

Возможно телек не тянет 10-битный HEVC.

Тянет, LG c WebOs 3.5. Различия в параметрах видео файлов именно в codec_tag_string. C (HEVC / 0x43564548) - показывает, c ([36][0][0][0] / 0x0024) - нет. И главный вопрос - как его проставить в ffmpeg? В примере же реализовано.

Antares13 ()
Ответ на: комментарий от Antares13

как его проставить в ffmpeg?

Пересжать в libx265.

В примере же реализовано

Этот параметр предназначен только для энкодеров XviD и MPEG2, насколько я понимаю. Нагуглить ман по нему не получается.

denislpn ()
Ответ на: комментарий от Anoxemian

а issue на трекере ffmpeg ты завел? тебе же ответили, что не работает/не реализовано.

ffmpeg знает эти параметры, но проставлять их изначально не предусмотрено. Всем спасибо, вопрос решили, программист подкорректировал исодники под нас - все заработало.

Antares13 ()