专栏名称: Fun With FFmpeg
生活大爆炸的Sheldon有个节目:Fun With Flags。FFmpeg是音视频开发绕不过去的坎,学习过程往往苦不堪言。被FFmpeg虐过千百遍,终能寻到一些乐趣。Let's have fun With FFmpeg!
目录
今天看啥  ›  专栏  ›  Fun With FFmpeg

FFmpeg在Android上读取文件的方法

Fun With FFmpeg  · 公众号  · 科技创业 科技自媒体  · 2024-03-18 01:11
    

主要观点总结

本文主要探讨了Android平台上使用FFmpeg库(特别是libavformat)访问本地文件的几种方法。包括最简单但效率较低的方式,通过Android Java API拷贝文件到App私有目录;使用avio callback实现自定义IO;通过file descriptor方式访问文件,利用Android系统提供的API;以及通过content protocol访问文件的方法。

关键观点总结

关键观点1: 最简单且最低效的方式:通过Android Java的API将文件拷贝到App私有目录,再让FFmpeg访问。

这种方法虽然简单但效率较低。

关键观点2: 使用avio callback实现自定义IO:通过callback方式实现自定义IO,传递给avformat,实现只用libavformat的muxer/demuxer能力。

这种方式灵活但实现相对复杂。

关键观点3: 通过file descriptor方式访问文件:利用Android系统提供的API获取文件的file descriptor,并通过JNI传递给FFmpeg libavformat访问。

虽然实现了文件访问,但现有的pipe protocol不支持seek操作。

关键观点4: 新增的fd protocol:为libavformat增加一个通过fd访问文件的新协议,解决了pipe protocol无法seek的问题。

该协议已在ffmpeg 6.0中发布。

关键观点5: 通过content protocol访问文件:是一个尚在审查中的补丁,通过JNI调用ContentResolver获取file descriptor来实现本地文件访问。

该补丁可能简化用户工作,但设计上不够优雅。


免责声明

免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址:访问原文地址
总结与预览地址:访问总结与预览
推荐产品:   推荐产品
文章地址: 访问文章快照