1. 程式人生 > >centos 7下 帶264編碼的ffmpeg安裝

centos 7下 帶264編碼的ffmpeg安裝

x264各個版本下載  http://download.videolan.org/pub/videolan/x264/snapshots/

ffmpeg 各個版本下載 http://ffmpeg.org/releases/

基本可以按照時間進行ffmpeg與x264版本選擇對應

1, 到http://www.videolan.org/developers/x264.html下載264編碼庫last_x264.tar.bz2

tar -xjf last_x264.tar.bz2 
cd x264-snapshot-20180520-2245/
./configure --prefix=/usr/local/x264 --enable-shared --enable-static --disable-asm
make
make install


2, 到http://ffmpeg.org/download.html下載 ffmpeg 最新版本ffmpeg-4.0.tar.bz2


tar xjf ffmpeg-4.0.tar.bz2
cd ffmpeg-4.0/
./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-yasm --enable-libx264 --enable-gpl --enable-pthreads --extra-cflags=-I/usr/local/x264/include --extra-ldflags=-L/usr/local/x264/lib


//-j7 7個核編譯, 加快編譯速度
make -j7
make install


3, 測試


ffmpeg -v


如果無異常則安裝成功;
異常
錯誤資訊:
ffmpeg: error while loading shared libraries: libavdevice.so.56: cannot open shared object file: No such file or directory
先 find / -name libavdevice.so.56 得到該檔案的目錄地址,我找到的是在ffmpeg安裝目錄的lib目錄下;
/usr/local/ffmpeg/lib/


vim /etc/ld.so.conf.d/ffmpeg.conf
新增 /usr/local/ffmpeg/lib/ 到/etc/ld.so.conf.d/ffmpeg.conf裡


錯誤資訊:
找不到libx264.so.155
find / -name libx264.so.155


vim /etc/ld.so.conf.d/x264.conf

新增 /usr/local/x264/lib/

4, 檢視是否有264編碼器

ffmpeg -encoders |grep 264


5,注意: 如果在某參機子上編譯的ffmpeg庫, 放到另一臺機子用時. 最好--disable-autodetect, 不然ffmpeg會自動檢測原機子上的安裝情況, 有可能原機子上裝了很多軟體. 導致此庫移到目標機子上用時, 目標機因為少了很多庫而非常麻煩. 比如報下面錯:


 用了--disable-autodetect就不用編譯不需要的項。不然要自己新增 --disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --disable-libxcb-shape --disable-d3d11va --disable-libdrm --disable-dxva2 --disable-vaapi 

問題與解決:

1, 

[[email protected] monitor]# g++ -o Release/FaceMonitor -Wl,-gc-sections   -L/usr/local/lib -L/usr/local/lib/poco -L/usr/local/lib/FaceSDK/Release -L/lib64 -L/usr/local/lib/Poco -L/usr/local/ffmpeg-3.1/lib/ -L/usr/local/x264_for_ffmpeg_3.1/lib -Wl,--start-group Release/FaceRecognitionThread.o Release/FaceSAThread.o Release/H264DecoderThread.o Release/main.o Release/NotificationThreads.o Release/VideoFaceDetectionThread.o Release/VideoFaceRecApp.o Release/DBLoader.o Release/FaceMonitorMessage.o Release/FaceRecognition.o Release/GetIP.o Release/stringhelper.o Release/UTF8Converter.o Release/utility.o -lopencv_highgui -lopencv_core -lopencv_imgproc -lopencv_legacy -lopencv_objdetect -lopencv_nonfree -lPocoFoundation -lPocoUtil -lPocoNet -lPocoJSON -lPocoData -lPocoDataSQLite -lPocoDataMySQL -lpthread -lrt -lCKLAgePredictor -lCKLFaceCrop -lCKLFaceRecognizer -lCKLFaceTracking -lCKLGenderPredictor -lCKLPointDetector -lSeetaFaceDetection -lSeetaFaceAlignment -lblas -llapack -larmadillo -lboost_thread -lboost_system -ltacopie -lcpp_redis -lavformat -lavcodec -lavutil -lswscale -lswresample -lavcodec -lavdevice -lx264 -ldl -lm -lz  -Wl,--rpath='$ORIGIN'  -fopenmp -Wl,--end-group
/usr/bin/ld: Release/H264DecoderThread.o: undefined reference to symbol '

[email protected]@LIBAVCODEC_57'
/usr/bin/ld: note: '[email protected]@LIBAVCODEC_57' is defined in DSO /usr/local/ffmpeg-3.1/lib/libavcodec.so.57 so try adding it to the linker command line
/usr/local/ffmpeg-3.1/lib/libavcodec.so.57: could not read symbols: 無效的操作

collect2: 錯誤:ld 返回 1

已經加了-lavcodec, 卻始終報找不到. 原因是在/usr/local/lib下還有個靜態庫libavcodec.a  將這個靜態庫刪除後正常.

一般情況下都是多版本庫衝突問題. 注意在/usr/local/lib下不要放ffmpeg庫

查了很多資料,總結了以下幾種可能的原因:

1、連結時缺少相關的目標檔案(.o)
2、連結時缺少相關的庫檔案(.a/.so)
3、連結的庫檔案中又使用了另一個庫檔案
4、多個庫檔案連結順序問題
5、在c++程式碼中連結c語言的庫,沒有新增extern "C";
6、ffmpeg過時;

7、標頭檔案和你的庫檔案不匹配(你安裝了多個版本的ffmpeg時);

8、路徑、需要的庫包含不全。

對於第七類問題,參考https://github.com/MaartenBaert/ssr/issues/215,執行locate -b libavcodec.so你會發現有許多的對應的動態檔案輸出,當你在.pro新增庫檔案路徑時,並不能確定連結的是動態庫還是靜態庫,我新增路徑的時候是靜態庫(.a)的路徑,但是實際上鍊接的確是動態庫的檔案(.so)。

2, 在release.mak裡只連線靜態庫方法:將ffmpeg與x264的動態庫儲存到新建目錄so_bak下. 讓編譯器只能找到靜態庫.



相關推薦

centos 7 264編碼ffmpeg安裝

x264各個版本下載  http://download.videolan.org/pub/videolan/x264/snapshots/ffmpeg 各個版本下載 http://ffmpeg.org/releases/基本可以按照時間進行ffmpeg與x264版本選擇對應1

CentOS 7tomcat應用服務簡易安裝部署

grep cat -s syn disable home from normal term 依賴基礎軟件:1、 CentOS7.2 64位操作系統2、 ORACLE JDK 1.8 64位 3、 APACHE Tomcat 8.5.6 首先部署安裝centos操作系統

CentOS 7MongoDB 3.6 的安裝及基本操作

進程命令 san documents 獲得 運行 配置 imp 步驟 code 一、MongoDB簡介 MongoDB是一款跨平臺、面向文檔的數據庫,可以實現高性能,高可用性,並且能夠輕松擴展。MongoDB 是由C++語言編寫的,是一個基於分布式文件存儲的開源數據庫系

CentOS 7:使用yum來安裝docker ce 17.09以上版本

解除安裝老版本 老版本的Docker在yum中名稱為docker或docker-engine,如果之前安裝過,必須先解除安裝,包括相關的依賴。 yum remove docker \ docker-common \ docker-selinu

centos 7ffmpeg-4.0 裡264編碼例子測試

1, 進入/root/ffmpeg-4.0/doc/examples裡新增 個compile_encode_video.sh檔案vim compile_encode_video.sh 內容如下:gcc encode_video.c -g -o encode_video.out

CentOS 7安裝使用Github

git push 文件 rep ica not 使用 管理系統 非root oba 在虛擬機安裝了QT以後,想把工程代碼放在版本管理系統軟件裏面,免得一遍遍創建checkpoint麻煩的要死。又因為虛擬機跟物理機數據很難交互,只好借助github了。搜了搜安裝配置方法,記錄

centos 7 安裝Matplotlib

matplotlib[[email protected]/* */ bin]# [[email protected]/* */ bin]# [[email protected]/* */ bin]# [[email protected]/* */ bin]# p

Linux CentOS 7 jdk安裝

$path 環境變量 創建 mkdir jdk1.8 jdk .tar.gz file 設置環境變量 1.在/usr/目錄下創建java目錄 [[email protected]/* */ ~]# mkdir /usr/java[[email prot

CentOS 7 安裝 Nginx

表達 dev 默認 tro 二次 編譯 stc style idc CentOS 7 下安裝 Nginx [日期:2016-09-05] 來源:Linux社區 作者:mafly [字體:大 中 小] 轉載:http://www.linu

關於linux-Centos 7mysql 5.7.9的rpm包的安裝方式

mysql 5.7.9的rpm包的安裝方環境介紹>>>>>>>>>>>>>>>>>>操作系統:Centos 7.1mysql數據庫版本:mysql5.7.9mysql官方網站:http://www.my

Centos 7 安裝 samba 服務

創建 oba art man rect 匿名訪問 登陸 sys 工作站 yum install samba 配置文件在:/etc/samba/smb.conf [global] #添加下面這句 map to guest = Bad User #這個選項是保證匿名

CentOS 7MariaDB源碼包編譯安裝

lib make 保存 使用 dir zlib 數據庫的安裝 RM .org 下載安裝包 到官網下載MariaDB 10.2系列穩定版的源碼包 選擇源碼包 點擊鏈接後頁面會跳到下載頁面,頁面中有個信息表格可以填寫,這裏我們就直接跳過,點擊 No thanks, just t

CentOS 7安裝部署Zabbix3.4

zabbix zabbix3.4 centos7 Zabbix安裝: 環境: 系統環境:CentOS 7Zabbix版本:Zabbix 3.4 安裝步驟: 關閉防火墻和SELINUXsystemctl stop firewalld && setenforce 0 安裝zabb

Centos 7 安裝強大的視頻播放器Smplayer

mplayer sha lease 如果 是否 mpeg yum 因此 .com Centos雖然 默認帶有視頻播放器,但特別垃圾,幾乎所有格式的視頻都不能打開,也下載不了解碼庫,因此為你的電腦安裝一個強大的視頻播放器顯得有為重要,這裏推薦的是Smplayer 第一步 :

CentOS 7安裝Python3.6.4

編譯 python str CA 目錄 wget gdbm grep www. CentOS 7下安裝Python3.6.4 •安裝python3.6可能使用的依賴 yum install -y openssl-devel bzip2-devel expat-

Centos 7安裝Docker並采用加速器進行鏡像下載加速

docker 安裝 docker拉取鏡像慢 系統版本:[root@c720120 _data]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 在Centos 7上安裝Docker$sudo yum u pdate$sudo

CentOS 7Samba的安裝與配置

linux下 samba服務器 覆蓋 allow 速度 firewalld 方法 服務啟動 wall CentOS 7下Samba的安裝與配置 一、簡介 簡介以及配置介紹部分來自:https://www.cnblogs.com/muscleape/p/6385583.htm

CentOS 7 rdesktop 的安裝

rpm top desktop AR shell avr processor pre name wget http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarc

centos 7安裝pycharm專業版

targe ofo get 添加 count host blank target har 1.下載pycharm的linux版本的軟件包,下載地址: http://www.jetbrains.com/pycharm/download/#section=linux 2.解壓