當前位置:首頁 » 編程軟體 » ffmpeg編譯源碼

ffmpeg編譯源碼

發布時間: 2023-11-30 02:34:56

① ffmpeg源碼是c還是c++

c語言開發的。教你一種辦法,查看庫函數等的源碼方法。

網路進入github網站,搜索ffmpeg,找到源碼。查看文件類型。

如圖

就知道是c語言開發的了

② Ubuntu 環境 編譯 ffmpeg移植android 的問題!

到FFmpeg官方網站http://www.ffmpeg.org/上去下載源代碼,這里下載的源代碼是最權威的。進入官網之後,選擇」Download」進入下載頁面,截止2014年3月28日止,最新的發布的穩定版本為FFmpeg2.2,代號」Muybridge」。選擇該下方的」Downloadgzip tarball」進行下載,下載後的文件名為ffmpeg-2.2.tar.gz,大約8.3M。
第二步:在linux環境下編譯FFmpeg
在Windows平台可以採用VMplayer虛擬機上安裝ubuntu的方式,本人也是採用這種方式。
本文以/home/dennis為根目錄進行操作和說明:
將ffmpeg-2.2.tar.gz拷貝至根目錄,然後執行如下解壓命令將其解壓:
$tar zxf ffmpeg-2.2.tar.gz
解壓後將得到/home/dennis/ffmpeg-2.2目錄。

③ 請教ffmpeg在centeOS 64位下的編譯問題

軟體安裝


(1). MinGW+Msys安裝


下載MSYS,解壓到E:/ffmpeg64/msys目錄。


下載MinGW-w64,解到E:/ffmpeg64/msys/mingw64目錄。


啟動msys.bat,打開類似於Linux的終端,並導入mingw64的環境變數。


echo 'export PATH=.:/local/bin:/mingw64/bin:/bin' > .profile

source .profile

(2). SDL安裝


下載SDL1.2.14,解壓到E:/ffmpeg64/SDL-1.2.14目錄。


進入SDL-1.2.14目錄,依次執行:


./configure --host=x86_64-w64-mingw32

make

make install

編譯過程中,出現如下錯誤:

④ 如何將FFmpeg源碼編譯一個so庫

我們從上篇文章 FFmpeg編譯 知道,正常打出來的有5個so包,當然有它的好處是按需引入。但是如果都需要,那是不是覺得很多呢?那可不可以打出一個so呢?答案是當然可以,下面以armv7-a平台為例,腳本如下。

其實在上篇 FFmpeg編譯 中腳本的基礎上添加如下即可打出一個so包:

編譯完成大概需要幾分鍾。

android/armv7-a下生成一個ffmpeg.so

libffmpeg.so及相應的同文件到工程里就好

⑤ 怎麼修改ffmpeg裡面的源碼,讓它實現流共享

while (1) {
AVPacket pkt;
// 不知道pkt是否完整
ret = av_read_frame(f->ctx, &pkt);

if (ret == AVERROR(EAGAIN)) {
av_usleep(10000);
continue;
}
if (ret < 0) {
av_thread_message_queue_set_err_recv(f->in_thread_queue, ret);
break;
}
}

FFMpeg不提供介面,那麼就只有修改FFMpeg源碼,瀏覽FFMpeg源碼一天後,對外的介面只需要在AVPacket結構體裡面增加一個判斷包完整性的標志變數,修改源碼後的介面調用如下:

while (1) {
AVPacket pkt;

ret = av_read_frame(f->ctx, &pkt);
if (pkt.nLostPackets) {
// Do something.
} else {
// Do something
}
}

⑥ FFmpeg之Linux下編譯與調試

下面的一切都是在 root 模式下進行的,可以不再 root 模式下進行

基礎環境就是編譯代碼的基礎庫,Ubuntu聯網安裝軟體很簡單,一個語句即可搞定,這里列出語句如下:

依賴庫分兩方面,參考以下網站列出的依賴庫信息,本文選擇的版本均參考於此網頁: FFmpeg依賴庫信息

首先創建 FFmpeg 代碼目錄,所有的源代碼放在這個目錄下

FFmpeg 編譯之後,即可使用。編譯生成的可執行程序在 ~/bin 目錄下

註:上面的 ./configure 配置編譯後並不能進行調試,需要如下配置.

剛才的工程可以運行,但不能debug。解決此問題,首先認定一點,生成的可執行程序中,ffmpeg 不包含調試信息,調試信息在 ffmpeg_g 中,debug 要選擇 ffmpeg_g。

另外,./config選項也是確定包含調試信息的核心,需要在config中添加:

採用以下命令重新config:

一些注意事項; 在使用 ffplay 播放生成 h264 格式的視頻時,播放速度會加快,解決方式:不要使用 FFmpeg 轉碼生成純 h264 格式的視頻,要使用一種容器包含 h264 視頻,即生成一種音視頻流格式,也就是不要生成純粹的 h264 碼流,而是生成諸如 mkv 等格式的文件。

⑦ iOS-FFmpeg實現簡單播放器(編譯fak-aac+x264+sdl)

本文介紹自己編譯sdl2,fdk-aac,x264,ffmpeg源碼集成到Xcode工程中,其中fdk-aac,x264嵌套編譯進ffmpeg中,並使用sdl播放音頻,OPenGLES渲染視頻實現簡單播放器

若報錯 fdk-aac-2.0.2/configure: No such file or directory ,則用我網盤襪吵磨中的解壓文件,裡麵包含了configure執行文件,執行 ./告斗build.sh 後,

修改build-ffmpeg.sh文件為最新的版本4.3.2,修改CONFIGURE_FLAGS值中增加禁止生成可執行文件ffmpeg,ffplay,ffprobe,fdk-aac需要增加--enable-nonfree選項,fdk-aac和x264文件絕對路徑要一致

將編譯好的sdl,fdk-aac,x264,ffmpeg頭文件和庫文件(include和lib文件夾)

導入Xcode工程中並設置Header Search Path為

導入依賴的庫AVFoudation.framework,CoreMedia.framework,VideoToolBox.framework,AudioToolBox.framework,lbz.tbd,libbz2.tbd,libiconv.tbd

使用ffmpeg庫獲取ffmpeg版本號

集成後可使用ffmpeg進行軟解碼,sdl播放音頻碰源,OpenGLES繪制視頻實現一個簡單播放器

開啟子線程讀取到MP4文件後,從MP4文件中解封裝出h264文件和aac文件分別解碼為YUV原始視頻幀和pcm原始音頻,將解封裝出來的h264文件放入_vPktList,aac文件放入_aPktList

SDL通過回調的方式開啟子線程播放音頻

配置參數可精簡和優化ffmpeg,在ffmpeg目錄中,終端執行./configure --help列出全部參數

⑧ 如何使用ndk編譯ffmpeg靜態庫

如何使用ndk為ffmpeg編譯rtmp+polarssl靜態庫?這個問題花了我整整一天時間。其中遇到很多小問題,這里記錄一下,方便自己也方便其他人。

1、編譯polarssl,查看其Readme文件即可,不需要configure,只需要make時帶上必要的參數即可,不過要記得在每一次執行make命令時都帶上CC的參數(指向你的arm gcc),因為我試過在make install時沒有帶上CC的參數,雖然能編譯出polarssl但是未能正確被rtmp引用到。

2、因為前面我用的polarssl是當前最新(1.3.7)版本,而librtmp使用的好像是polarssl1.0.0以下版本的api,所以需要修改rtmp部分源碼,讓其調用新版polarssl的api,這里的修改可以參照《Migrating from PolarSSL-1.2 to the PolarSSL 1.3 branch》和《[rtmpmp] branch master updated. a312ac7 Fix compat with PolarSSL >= 1.1.0》。

3、出現 undefined reference to `havege_random』錯誤,這里是因為polarssl默認關閉了havege模塊,需要你手動開啟,主要就是修改include/polarssl/config.h,去掉POLARSSL_HAVEGE_C前的注釋,也就是要定義POLARSSL_HAVEGE_C,如下:
#define POLARSSL_HAVEGE_C

4、在編譯出上面兩個庫之後,可以開始編譯ffmpeg(2.1.1版本)了,如果遇到下面的問題 check_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
ERROR: librtmp not found
這里有三種解決方法:
第一種,因為是網路上傳播最多的,算是比較簡便的方法,就是修改ffmpeg的configure,將以下一行:
enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
改為:
enabled librtmp && require librtmp librtmp/rtmp.h RTMP_Socket -lrtmp -lpolarssl -lz
或者直接注釋掉&& *** 部分,然後再自己加上librtmp的庫路徑也行

第二種,(比較推薦,因為解決了這個會順帶解決大部分找不到庫的錯誤!)因為這里使用了pkg-config工具查找庫,而這個工具ndk並沒有附帶提供,而出現check_pkg_config相關錯誤的話,只要稍加註意,會發現在使用configure配置ffmpeg的交叉編譯時,已經有相應的pkg-config不存在的警告了。我對這個工具不熟悉,所以我只是簡單地加上了一個軟鏈接到系統的pkg-config,如下:
ln -s /usr/bin/pkg-config /home/cidy0106/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-pkg-config
這個時候重新configure的話可能會出現找不到polarssl庫的錯誤提示,需要修改一下librtmp安裝目錄里的librtmp.pc,把以下內容:
Libs: -L${libdir} -lrtmp -lz
改為:
Libs: -L${libdir} -lrtmp -lz -lpolarssl

至此,就可以正確編譯出ffmpeg了
轉載

熱點內容
我的世界空島戰爭伺服器ip地址 發布:2024-11-17 16:17:53 瀏覽:54
虛擬機配置g4是什麼意思 發布:2024-11-17 16:11:09 瀏覽:140
rhce腳本題 發布:2024-11-17 15:58:44 瀏覽:304
通訊錄上傳失敗 發布:2024-11-17 15:51:26 瀏覽:329
雲存儲存在哪裡 發布:2024-11-17 15:42:09 瀏覽:369
python動態 發布:2024-11-17 15:41:27 瀏覽:115
通用的安卓充電器是什麼型號 發布:2024-11-17 15:40:41 瀏覽:744
解壓天堂 發布:2024-11-17 15:21:24 瀏覽:959
mac桌面文件夾 發布:2024-11-17 15:12:29 瀏覽:590
我的世界在伺服器如何更換材質 發布:2024-11-17 15:12:28 瀏覽:800