Кодирование для HTTP Live Streaming с помощью Xuggle

Я создал серверную систему на основе Xuggle для кодирования входящего файла в H264 и его сегментации. Тем не менее, при воспроизведении видео в Quicktime оно почти работает (иногда с небольшой заминкой в ​​звуке), но при переключении с одного потока качества на другой изображение теряется.

Итак, я запустил «mediastreamvalidator» и получил следующую ошибку:

ОШИБКА: (-1) Неизвестный видеокодек: 1836069494 (программа 0, дорожка 0) ОШИБКА: (-1) не удалось проанализировать сегмент либо как TS MPEG-2, либо как ES

Поэтому я использовал FFMPEG, чтобы получить некоторую информацию о кодексе: Результат моей кодировки Xuggler:

Input #0, mpegts, from 'segment_0.ts':
  Duration: 00:00:09.40, start: 0.000000, bitrate: 3618 kb/s
  Program 1 
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 960x540 [PAR 1:1 DAR 16:9], 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x101]: Audio: mp2, 48000 Hz, stereo, s16, 128 kb/s

Результат файла, созданного Compressor:

Seems stream 0 codec frame rate differs from container frame rate: 180000.00 (180000/1) -> 25.00 (25/1)
Input #0, mpegts, from 'fileSequence1.ts':
  Duration: 00:00:09.97, start: 19.984578, bitrate: 5308 kb/s
  Program 1 
    Stream #0.0[0x101]: Video: h264 (Main), yuv420p, 960x540, 25 tbr, 90k tbn, 180k tbc
    Stream #0.1[0x102]: Audio: aac, 22050 Hz, stereo, s16, 32 kb/s

Основное отличие мне кажется в том, что для файла, закодированного Xuggler, написано Video: mpeg2video вместо h264. Однако при кодировании я специально установил кодировщик на ICodec.ID.CODEC_ID_H264.

Как я могу заставить его использовать h264. То же самое с аудио. Я указал AAC и получил MP2.

Затем я использовал FFMPEG напрямую, и это привело к:

Input #0, mpegts, from 'encoded.ts':
  Duration: 00:00:24.16, start: 1.400000, bitrate: 360 kb/s
  Program 1 
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0.0[0x100]: Video: h264 (Main), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x101](eng): Audio: aac, 48000 Hz, stereo, s16, 57 kb/s

Это выглядит лучше. Я мог бы использовать FFMPEG напрямую, но с помощью Xuggler я могу сегментировать файл и легче отслеживать ход процесса.


person Luuk D. Jansen    schedule 01.05.2012    source источник


Ответы (1)


На данный момент я отошел от Xuggle и использую FFMPEG для кодирования и сегментации и использую его только для получения информации о кодировании и т. д. В настоящее время требуются два процесса (сначала кодировать, затем сегментировать с помощью FFMPEG), но, надеюсь, скоро FFMPEG позволит сегментировать на муха во время кодирования

person Luuk D. Jansen    schedule 26.05.2012