Я создал серверную систему на основе 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 я могу сегментировать файл и легче отслеживать ход процесса.