首页 > 解决方案 > 如何正确中止 FFmpeg 上的 av_seek_frame?

问题描述

通常,您不会在意中止av_seek_frame,因为它在本地文件上会非常快。但是,在我的情况下,我使用自定义AVIOContext进行带有自定义读取/搜索功能的洪流流,并且我无法中止单个搜索请求!

我已经尝试过中断回调(它们根本不会被调用),一些超时(rw_timeout/timeout 等)但是通过检查 FFmpeg 的代码根本没有找到任何东西。我最后的机会是尝试在读取/查找函数上返回一个错误(我尝试过 AVERROR_EXIT),这会导致更多问题(内存泄漏)。

主要问题是他们需要重新同步(1 级)的Matroska格式,并且他们正在尝试扫描整个文件。

不幸的是,我使用 C# .NET 和 FFmpeg.Autogen 绑定,这意味着我没有低级访问权限。我的解决方法是重新打开整个格式上下文以防寻求中止(以确保播放器至少可以继续播放)

希望你能给我一个提示!

(顺便说一下,支持一些 http/hls 网络格式的中断回调)

标签: ffmpeg

解决方案


推荐阅读