FFmpeg m3u8文件返回Invalid data found when processing input错误

结论

1.检查存储访问权限是否正常,因为你可能有m3u8文件的访问权限却不一定有分片视频文件的访问权限。
2.给avformat_open_input增加配置(“allowed_extensions”,“ALL”).参考如下代码

bipPlayer.setOption(DefaultBIPPlayer.OPT_CATEGORY_FORMAT,"allowed_extensions","ALL");

过程

一开始出现这个问题的时候我以为是我编译配置有问题,没有支持m3u8格式。后来发现有的m3u8文件可以解析,所以暂时排除格式不支持问题,接着考虑分片视频格式不支持,所以用官网下载的ffprobe看了一下分片视频的格式,是mpegts.正常来说是支持的。而且单独播放分片视频可以成功播放。所以排除分片视频格式问题。同时这个m3u8文件浏览器和网易云音乐都可以播放,所以排除文件格式错误问题。而且有一个m3u8文件网上地址就可以播放,下载下来的本地地址就识别不出来。就很奇怪。难道真的是我哪个编译配置没有配好无法播放本地m3u8?
接着我解压了网易云,发现他也是使用了ijkplayer,然后就编译ijkplayer,打算如果这个库能播放就参考他的编译配置改改看行不行。编译完后播放报If you wish to override this adjust allowed_extensions, you can set it to 'ALL’大致意思就是文件名后缀非法,需要添加白名单。然后搜索了一下,大致意思就是因为ffmpeg读取的m3u8文件可能被嵌入恶意代码,所以为了安全起见ffmpeg加了限制,只通过特定文件名后缀的视频分片,比如xxx.ts之类的而一些9a4c之类的乱码后缀就无法读取。相关博客
而后根据ijkplayer的报错,在ijkplayer的issues里找到了上面的解决方案。

猜你喜欢

转载自blog.csdn.net/Welcome_Word/article/details/121229169
今日推荐