【问题标题】:Converting mp2's to mpeg transport stream将 mp2 转换为 mpeg 传输流
【发布时间】:2013-10-04 03:25:38
【问题描述】:

此应用程序用于 HTTP Live Streaming。 (仅限音频)

我有两个连续的 10 秒 mp2 文件(它们一个接一个地编码,但如果拼接在一起作为一个无缝文件播放)。我想从这些文件中创建两个 mpeg-2 传输流。不幸的是,当我执行以下操作时:

ffmpeg -i 0.mp2 0.ts

输出成功但我得到以下信息:

[mp3 @ 0x7fcc2a006600] max_analyze_duration 5000000 reached at 5015510 microseconds
[mp3 @ 0x7fcc2a006600] Estimating duration from bitrate, this may be inaccurate

另外,如果我用 0.ts 和 1.ts 创建 m3u8 清单文件,两者之间有一个空格。

因为我是动态创建播放列表,所以我不能同时访问这两个文件,否则我会简单地连接然后在转换后分割文件。

我在这里缺少什么?我应该以不同的方式对 mp2 进行编码吗?我正在使用 twolame,一次做 10 秒。

【问题讨论】:

    标签: audio ffmpeg codec mpeg2-ts mpeg-2


    【解决方案1】:

    您不应该自己进行细分。通过单独编码段,您会无意中重置连续性计数器,以及插入新的启动样本。这就是导致暂停的原因。

    你应该从单个音频文件开始,然后使用 ffmpeg 进行分段。

    ffmpeg -i 0.mp2 out.m3u8

    更多文档在这里:http://www.ffmpeg.org/ffmpeg-formats.html#hls-1

    您可以忽略 mp3 警告。但是,我强烈建议您将 AAC 用于 HLS。对mp3的支持很差。

    【讨论】:

    • 我正在直播录制的音频,我必须每十秒进行一次编码才能将压缩文件上传到服务器。有没有办法设置连续性计数器?另外,我希望使用 MPEG-TS,因为它是唯一可以在 Android 上开箱即用的。否则我很可能会使用 AAC。
    • 你很困惑。 mpegts 是容器,AAC 是编解码器。您可以将 AAC 帧放入 mpeg-ts 容器中(在 PMT 中为 stream_type 0x0F)。
    • 我明白了。不幸的是,根据这个developer.android.com/guide/appendix/media-formats.html,目前只有 mpeg-2 ts 支持 android。我看错了吗?
    • 有什么办法吗?或者我应该在录制时创建我的 mpeg-ts 文件(即,我可以使用 libavformat 来创建 MPEG TS 文件,而不是在设备上使用 twolame 来生成 mp2 段),这样我就不必做任何进一步的处理?
    • 双脚? mpeg2-ts 与 mpeg 音频第二层不同。它们完全不同。 mpeg2-ts 是容器。 mpeg 音频第二层是编解码器。我会使用 AAC 编解码器(最好使用硬件编码器),并使用 libavformat 创建 ts 段。
    猜你喜欢
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 2013-07-28
    相关资源
    最近更新 更多