0

我正在尝试对媒体文件进行编码以用于 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 时可能只是忘记了一个简单的选项。

4

2 回答 2

1

新版本的 Xuggler 5.5 解决了该问题。但是,即使指定 H264 编码器(基于扩展名),它似乎也使用了 mpeg2ts 编码器。这会给 QT 和 iOS 设备带来问题。

直接使用 FFMPEG 可能会更好,因为有更多的控制。

于 2012-05-01T19:45:57.967 回答
0

xuggler 是必需的吗?如果没有,可以使用 ffmpeg(xuggler 的基础)准备资产,例如使用这些说明

于 2012-04-24T15:49:07.120 回答