我创建了一个基于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编码文件的主要区别在于视频: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,我可以分割文件,同时更容易跟踪进程的进度。
答案 0 :(得分:0)
我暂时离开Xuggle并使用FFMPEG进行编码和分段,只使用它来获取编码信息等。 目前需要两个进程(首先编码,然后使用FFMPEG进行分段),但希望很快FFMPEG将允许在编码时动态分段