FFmpeg m3u8文件返回Invalid data found when processing input错误
結論
1.檢查存儲訪問權限是否正常,因為你可能有m3u8文件的訪問權限卻不一定有分片視頻文件的訪問權限。
2.給avformat_open_input增加配置(“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里找到了上面的解決方案。
總結
以上是生活随笔為你收集整理的FFmpeg m3u8文件返回Invalid data found when processing input错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javaweb项目案例:员工管理系统
- 下一篇: 第三集 Spring for Apach