【问题标题】:How to process single segment from fragmented mp4 container?如何处理碎片化 mp4 容器中的单个片段?
【发布时间】:2020-12-31 21:59:29
【问题描述】:

我有分段播放的 mp4。首先是 mp4 标头,然后是每个 GOP 的各个段。这是我从 RTMP 服务器获取的 h264 和 aac 编码视频。

我想用 ffmpeg 处理这些单独的片段(我怀疑还有其他可用的工具)。如果需要,可以调整分辨率或比特率,甚至转码为 vp8/9 或 avi1。

但似乎 ffmpeg 无法处理此问题,因为该段没有标头。所以我想知道是否有一个标志或一组标志让 ffmpeg 能够在没有标头的情况下处理这些段?如果有帮助,我可以只从 RTMP 中获取原始 h264 和 aac 数据包而不将其打包到 MP4 容器中 - ffmpeg 能够处理这些吗?

【问题讨论】:

    标签: ffmpeg video-streaming h.264 rtmp fmp4


    【解决方案1】:

    “所以我想知道是否有一个标志或一组标志让 ffmpeg 能够在没有标头的情况下处理这些段? '

    没有。如果可能的话,ffmpeg 会在没有魔法标志的情况下做到这一点。标头包含解码所需的信息。

    您可以将标题伪装成单独的段。

    【讨论】:

    • 是的,但是我必须再次提取数据,这只会带来不必要的开销。如前所述,原始数据怎么样,ffmpeg可以处理吗? ...或其他库/软件
    • 对于 ffmpeg 或任何其他工具或命令,用序列头解码段是不可能的。时期。它包含初始化解码器所需的信息,例如分辨率、配置文件、压缩方法、颜色信息等。没有标头,解码器甚至不知道它是编解码器。 RTMP 在流的开头也有序列头,你只是不知道,因为你已经尝试过了。
    • 我不知道您所说的“再次提取数据”是什么意思? “提取”是什么意思?为什么“再次”你第一次“提取”它?标头是完全必要的,涉及零“不必要的”开销。都是必须的。
    • 您对标头中的元数据是正确的。说得通。至于提取 - 我有分段的 mp4 容器,所以标题只是 ftyp+moov 并且每个段只是 moof+mdat 其中 mdat 包含 h264 视频和 aac 音频数据包,或者在我的情况下,我将它们分成单独的轨道用于 a/ v 所以我有两个单独的段。因此,如果我将标头放入每个段中以通过 ffmpeg 处理它,那么我将不得不提取该标头才能使用该段。虽然因为我首先有标题,所以应该只是删掉最初的 N 个字节。
    猜你喜欢
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 2017-12-09
    相关资源
    最近更新 更多