FFmpeg: невозможно записать метаданные в файл .ts - PullRequest
1 голос
/ 28 октября 2019

У меня есть вход, который я смешиваю в файл .ts, однако, несмотря на то, что вики FFmpeg говорит (что он поддерживает ключи метаданных title и language) для транспортных потоков MPEG), title isnне распространяется на видео и аудио:

ffmpeg -i "source" \
-map 0:0 -metadata:s:v:0 title="VIDEO_TITLE" \
-map 0:1 -metadata:s:a:0 language="eng" -metadata:s:a:0 title="AUDIO_TITLE" \
-c copy "output.ts"

Язык есть, но не название.

Это то, что я получаю, когда фактически смешиваюсь:

Output #0, mpegts, to 'output.ts':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 25 tbr, 90k tbn, 90k tbc (default)
    Metadata:
      variant_bitrate : 0
      title           : VIDEO_TITLE
    Stream #0:1(zxx): Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0
      comment         : AUDIO_TITLE
      title           : AUDIO_TITLE

Однако после завершения, кажется, название не там. Он не отображается в mediainfo (или VLC в этом отношении):

Input #0, mpegts, from 'output.ts':
  Duration: 01:00:00.00, start: 1.440000, bitrate: 5120 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], Closed Captions, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x101](zxx): Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 68 kb/s

Если бы мне нужно было выполнить ту же команду, но дать файлу расширение mp4, метаданные были мультиплексированы, как и ожидалось,но не для файла TS - я что-то не так делаю?

1 Ответ

1 голос
/ 29 октября 2019

Поля title применяются к программам, а не к медиапотокам в файле TS, а имя ключа на самом деле service_name.

Итак,

ffmpeg -i "source" \
-metadata service_name="PROGRAM_TITLE" \
-map 0:0 \
-map 0:1 -metadata:s:a:0 language="eng" \
-c copy "output.ts"

FFmpeg будет автоматически созданодна программа, если ни одна не была определена в команде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...