gpt4 book ai didi

ffmpeg - Libav demuxer 在长 mp4 文件上失败

转载 作者:行者123 更新时间:2023-12-04 23:26:36 31 4
gpt4 key购买 nike

我尝试使用 libav 对持续时间约为 20 小时的 mp4 文件进行解复用。我已经编译并测试了 ffmpeg 示例 doc/examples/demuxing_decoding.c。

  • avformat_alloc_context()
  • avformat_open_input()
  • avformat_find_stream_info()
  • ...
  • av_read_frame() 循环

  • 但过了一会儿,我收到一个错误“无法添加索引条目”并且 mp4 解复用器停止工作。
    这不会用较短的文件(少于 15 小时)重现。

    我也尝试用 ffmpeg.exe 对这个文件进行解复用和复用,如下所示:
    ffmpeg.exe -i input.mp4 -acodec copy -vcodec copy out.mp4
    在这种情况下,我没有任何错误消息。

    demuxing_decoding 示例和 ffmpeg.exe 解复用方法有什么区别?

    是否有特定用途的 libav mp4 demuxer 带有太长或碎片化的 mp4 文件?

    关于减少/忽略索引的任何想法?

    最佳答案

    我的 mp4 demuxing 示例和 ffmpeg util 之间的区别在于使用 av_max_alloc() 来限制可以在一 block 中分配的最大字节数。

    对于大型 mp4 文件,一段时间后 demuxer 中的 AVIndexEntry 存储达到最大分配大小,并且 demux 在 realloc 上失败。

    正如我从 mov.c 中理解的那样,AVIndexEntry* index_entries 可能会在碎片化的 mp4 流上大大增加,并且 mp4 demuxer (mov.c) 不包含任何控制索引表大小的算法。

    这可能会导致实时 mp4 流的高内存消耗。

    有什么方法可以在片段 mp4 流上使用 libav mp4 解复用器而不存储索引或控制它们?

    关于ffmpeg - Libav demuxer 在长 mp4 文件上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44226781/

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