gpt4 book ai didi

ffmpeg - 在分段 MP4 中运行的轨道是否必须以关键帧开始?

转载 作者:行者123 更新时间:2023-12-03 19:31:45 24 4
gpt4 key购买 nike

我正在摄取 RTMP 流并将其转换为 JavaScript 中的分段 MP4 文件。花了一周的时间,但我几乎完成了这项任务。我正在生成一个有效的 ftyp原子,moov原子和 moof原子和视频的第一帧在进入无限缓冲之前实际播放(带音频),没有在 chrome://media-internals 中列出的错误

将视频插入 ffprobe ,我收到类似于以下内容的错误:

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x558559198080] Failed to add index entry
Last message repeated 368 times
[h264 @ 0x55855919b300] Invalid NAL unit size (-619501801 > 966).
[h264 @ 0x55855919b300] Error splitting the input into NAL units.

这导致我在我的 tfhd 中大量寻找数据对齐问题或无效字节偏移。和 trun原子,但是无论我在哪里查看或如何对数据进行切片,我在 moof 中都找不到任何问题。原子。

然后我将原始 FLV 文件转换为 ffmpeg 中的 MP4。使用以下命令:
ffmpeg -i ~/Videos/rtmp/big_buck_bunny.flv -c copy -ss 5 -t 10 -movflags frag_keyframe+empty_moov+faststart test.mp4

我打开了我正在创建的 MP4 和 ffmpeg 的 MP4 输出。在原子解析文件中并比较两者:

Comparing MP4 files with MP4A

我最先跳出来的是 ffmpeg。 - 生成的文件每个 moof 有多个视频样本.具体来说,每个 moof从 1 个关键帧开始,然后包含所有差异帧,直到下一个关键帧(用作以下 moof 原子的开始)

将此与我生成 MP4 的方式进行对比。我创建了一个 moof每次 FLV 的原子 VIDEODATA数据包到达。这意味着我的 moof可能不包含关键帧(通常不包含)

这可能是我遇到麻烦的原因吗?还是我还缺少其他东西?

有问题的视频文件可以在这里下载:
  • ffmpeg -generated file: test.mp4
  • manually-generated file: invalid-nal-size.mp4

  • 我注意到的另一个问题是 ffmpeg大量使用 base_data_offsettfhd原子。但是,当我尝试跟踪附加的字节总数并设置 base_data_offset我自己,我在 Chrome 中遇到如下错误:“MSE 不支持 base_data_offset”。根据 ISO/IEC 14996-10 规范:

    If not provided, the base-data-offset for the first track in the movie fragment is the position of the first byte of the enclosing Movie Fragment Box, and for second and subsequent track fragments, the default is the end of the data defined by the preceding fragment.



    这个措辞让我相信 data_offset在第一个 trun atom 应该等于 moof 的大小原子和 data_offset在第二个 trun原子应该是 0 (从前面片段定义的数据末尾开始的 0 个字节)。但是,当我尝试此操作时,出现无法解析视频数据的错误。什么 做了导致可以解析的数据是 moof 的长度atom 加上第一个轨道的总长度(就好像基本偏移是封闭 moof 框的第一个字节,与第一个轨道相同)

    最佳答案

    不,moof 不需要从关键帧开始。您生成的文件会产生无效的 NALU 大小错误,因为它具有无效的最终大小。每个 nal(在 mdat 中)都必须在其前面加上大小。查看您的文件,mdat 后的前 4 个字节是 0x21180C68这太大而不能成为有效尺寸。

    关于ffmpeg - 在分段 MP4 中运行的轨道是否必须以关键帧开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53785069/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com