我正在尝试对媒体文件进行编码以用于 HTTP Live Streaming,但到目前为止还没有太多运气。当我使用 ICodec.ID.CODEC_ID_MPEG2TS 或 ICodec.ID.CODEC_ID_MPEG4 对流编码进行编码时,但使用 Apple 的验证工具时出现错误:
错误:(-12971)MPEG2 解析器损坏流(程序 1,轨道 257)错误:(-12971)未能将段解析为 MPEG-2 TS 或 ES
如果我将它们保存为 .mp4 而不是 .ts,那么它们会在 Quicktime 中播放(但不是 .ts)
如果我使用 ICodec.ID.CODEC_ID_H264 我在编码时收到以下错误:
java.lang.RuntimeException: 无法打开流 com.xuggle.xuggler.IStream@-397916640[index:0;id:1;streamcoder:com.xuggle.xuggler.IStreamCoder@-397916528[codec=com.xuggle.xuggler. ICodec@-397916032[type=CODEC_TYPE_VIDEO;id=CODEC_ID_H264;name=libx264;];时基=1/25;帧率=0/0;像素类型=YUV420P;宽度=640;高度=360;];帧率: 0/0;时基:1/90000;方向:OUTBOUND;]:不允许操作
我对编码器有以下设置:
coderSettings.width = 640;
coderSettings.height = 360;
coderSettings.bitRate = 700000;
coderSettings.codec = ICodec.ID.CODEC_ID_H264;
coderSettings.globalQuality = 75;
coderSettings.sampleRate = 22050;
我只是想知道我是否做错了什么。我不太了解视频编码,因此在尝试编码为 H264 时可能只是忘记了一个简单的选项。