尝试使用H264进行HTTP Live Streaming编码

时间:2012-04-22 13:09:51

标签: video-processing video-encoding http-live-streaming xuggle

我正在尝试对媒体文件进行编码以用于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 [指数:0; ID:1; streamcoder:com.xuggle.xuggler.IStreamCoder@-397916528 [codec=com.xuggle.xuggler.ICodec@-397916032 [类型= CODEC_TYPE_VIDEO;编号= CODEC_ID_H264;名称= libx264;];时间   base = 1/25;帧速率= 0/0;像素   type = YUV420P; width = 640; height = 360;]; framerate:0/0; timebase:1/90000; direction:OUTBOUND;]:不允许操作

我对编码器有以下设置:

        coderSettings.width = 640;
        coderSettings.height = 360;
        coderSettings.bitRate = 700000;
        coderSettings.codec = ICodec.ID.CODEC_ID_H264;
        coderSettings.globalQuality = 75;
        coderSettings.sampleRate = 22050;

我只是想知道我是否做错了什么。我不太了解视频编码,所以在尝试编码为H264时可能只是忘记了一个简单的选项。

2 个答案:

答案 0 :(得分:1)

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

直接使用FFMPEG可能会有更好的控制效果。

答案 1 :(得分:0)

xuggler是否需要?如果没有,可以使用ffmpeg(xuggler的基础)准备资产,例如使用these instructions