我创建了一个基于 Xuggle 的服务器系统,将传入的文件编码为 H264 并对其进行分段。但是,在 Quicktime 中播放视频时,它几乎可以正常工作(有时音频会出现小问题),但是当从一个质量流更改为另一个质量流时,图像会丢失。
所以我运行了'mediastreamvalidator'并得到了以下错误:
错误:(-1)未知的视频编解码器:1836069494(程序 0,轨道 0)错误:(-1)未能将段解析为 MPEG-2 TS 或 ES
所以我使用 FFMPEG 来获取有关 codex 的一些信息:我的 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。但是,在编码时,我确实将 Coder 设置为 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,我可以分割文件,同时更容易跟踪过程的进度。