【问题标题】:Trying to encode using H264 for HTTP Live Streaming尝试使用 H264 对 HTTP 实时流进行编码
【发布时间】:2012-04-22 13:09:51
【问题描述】:

我正在尝试对媒体文件进行编码以用于 HTTP 实时流式传输,但到目前为止运气不佳。当我使用 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;名称=libx264;];时间 基数=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 时忘记了一个简单的选项。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢,我可以,但是通过使用 Xuggler,我可以即时进行分段并更好地跟踪编码进度。
      • 新版本的 ffmpeg 可以即时分段,但我相信您是对的,使用 Xuggler 更容易跟踪编码进度。
      • 你真的知道哪个版本支持这个吗?我检查了 SVN 并构建,但段选项是未知的。毕竟,我或多或少倾向于直接使用 FFMPEG,因为如果涉及到编码器,Xuggler 似乎很难完全按照你的意愿去做。
      • 添加于 2011 年 12 月 19 日星期一。git.videolan.org/gitweb.cgi/ffmpeg.git/…
      • 感谢vipw!它包含在 0.10.2 中,我设法在我的生产盒上构建它。现在只需解决一些小问题,例如分段似乎没有分段音频的事实。但我会在那个问题上提出另一个问题。
      猜你喜欢
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 2011-08-07
      • 2018-09-01
      • 2011-09-25
      • 2011-06-15
      相关资源
      最近更新 更多