網站首頁 編程語言 正文
解決ffmpeg讀取視頻流時,報錯“Segmentation fault (core dumped)“,avformat_open_input 返回 -1330794744
作者:宋小江@ 更新時間: 2022-08-28 編程語言錯誤現象:
- ffmpeg讀取視頻流時,直接報錯返回“Segmentation fault (core dumped)”;
- 排查中發現是
avformat_open_input
函數錯誤,返回的是-1330794744
,而不是代表正確的0。
這個問題困擾了我很久,網上也搜了很久,但解決辦法中都沒提及ffmpeg的版本,在試錯很多次后,發現了問題的所在,是代碼與ffmpeg的版本有些不兼容的問題,那就直接切入主題。
這次我試了ffmpeg的兩個大版本:(一定對照自己的版本來看)
-
ffmpeg-n4.4
-latest-linux64-gpl-shared-4.4.tar.xz (這是github上別人編譯好的)(在ubuntu和windows上都能直接跑起來)- 這個版本我在我的centos7上跑不起來,make就會報類似這樣的錯:“/opt/ffmpeg/lib/libavcodec.so: undefined reference to _ZGVcN4vv_pow@GLIBC_2.22
/opt/ffmpeg/lib/libavcodec.so: undefined reference to _ZGVeN16v_expf@GLIBC_2.22
/opt/ffmpeg/lib/libavcodec.so: undefined reference to _ZGVbN2v_exp@GLIBC_2.22
/opt/ffmpeg/lib/libavcodec.so: undefined reference to _ZGVbN2vv_pow@GLIBC_2.22’” - warning說是因為缺乏libmvec.so.1這個庫,顯然因為glibc版本的問題(我centos的glibc是2.17的,版本太低,yum暫時最高就是這,不能yum升級;手動去升級話,是有可能會把系統弄崩的,所以要慎重,特別生產環境一定慎重,虛擬機可以先拍一個快照);
- 然后我在一個centos虛擬機上,手動編譯glibc,把glibc升級到2.25,就能成功運行;
- 查看glibc版本的命令:
ldd --version
- 這個版本我在我的centos7上跑不起來,make就會報類似這樣的錯:“/opt/ffmpeg/lib/libavcodec.so: undefined reference to _ZGVcN4vv_pow@GLIBC_2.22
-
FFmpeg-n3.4.9
(這個是自己源碼編譯的)-
這個在glibc為2.17的centos7上能make能成功,但是一運行,就報錯
"Segmentation fault (core dumped)”
,排查是avformat_open_input()函數返回的是-1330794744
,解決辦法很簡單,在你代碼main()函數開頭加這樣兩行:av_register_all();
avformat_network_init();
-
這應該是在ffmpeg版本4后,是沒有這倆api了,網上的解決辦法也總是直接說加這兩行,也沒說版本,這要是加了這兩行的代碼使用上面ffmpeg-n4.4版本,編譯都是會直接報錯的。
-
嗯,說的是很詳細了,別的錯誤情況也說到了,也是自己反復各種嘗試,ffmpeg都編譯了十多次,還以為是自己預編譯指令沒給對,所以重點是,一定要注意自己的ffmpeg版本是多少,看你報錯是上面哪種,對癥下藥。
所以如果有幫到你,請點個贊吧!
原文鏈接:https://blog.csdn.net/nianjiuhuiyi/article/details/126518444
相關推薦
- 2022-11-29 React?Hooks獲取數據實現方法介紹_React
- 2022-04-03 python中如何利用matplotlib畫多個并列的柱狀圖_python
- 2023-01-31 iOS?底層alloc?init?new?源碼流程示例分析_IOS
- 2022-02-01 CSS3自定義滾動條樣式
- 2022-09-26 Linux安裝jdk,安裝tomcat,Linux中發布項目
- 2022-04-20 python錯誤提示:Errno?2]?No?such?file?or?directory的解決方法
- 2022-10-01 如何使用draw.io插件在vscode中一體化導出高質量圖片_python
- 2022-12-09 C#中async和await的深入分析_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支