Я безуспешно пытался изменить номер программы определенного файла .ts с помощью FFmpeg. Я видел документацию, и в ней упоминается использование опции -program. Но я не могу добавлять потоки по своему желанию. Вот информация о программе для потока, которым я владею в настоящее время:

Input #0, mpegts, from 'output_2_without_pgm_num.ts':
  Duration: 00:01:49.92, start: 1.400000, bitrate: 1816 kb/s
  Program 1
    Metadata:
  service_name    : Service01
  service_provider: FFmpeg
Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x101](ger): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 384 kb/s (clean effects)
Stream #0:2[0x102](eng): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 384 kb/s (clean effects)
Stream #0:3[0x103](ger): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)

Теперь я хочу изменить номер программы с 1 на 22. Есть идеи, как я могу это сделать? Я пробовал использовать параметр -program, но не могу добавить потоки 2 и 3 во вновь созданный файл .ts.

Заранее спасибо!

0
C.B. Akshay Kumar 17 Май 2018 в 08:08

1 ответ

Лучший ответ

Здесь есть два шага. Указание ffmpeg, какие потоки включить в вывод с помощью параметра -map, и установка метаданных программы с помощью параметра -program.

ffmpeg -i in.ts -map 0 -c copy -program program_num=22:st=0:st=1:st=2:st=3 out.ts

-map 0 указывает ffmpeg включить все потоки с первого входа.

Значения st сообщают ffmpeg, какие индексы выходного потока следует включить в программу.

0
Gyan 17 Май 2018 в 05:43