網站首頁 編程語言 正文
解決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
相關推薦
- 2023-05-20 Python?seek()和tell()函數的具體使用_python
- 2022-05-07 Python?遞歸式實現二叉樹前序,中序,后序遍歷_python
- 2022-07-22 linux centos 7 vim配置詳解
- 2022-09-12 Sublime中View?in?Browser功能不生效問題及解決_相關技巧
- 2022-06-12 golang的協程上下文的具體使用_Golang
- 2022-10-01 windows?server?2016?搭建FTP服務器詳細教程_FTP服務器
- 2022-06-21 使用Apache?Hudi?加速傳統的批處理模式的方法_Linux
- 2022-11-11 C#非托管泄漏中HEAP_ENTRY的Size對不上解析_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同步修改后的遠程分支