FFmpeg標(biāo)準(zhǔn)庫
概念:
FFmpeg是一套可以用來記錄裹粤、轉(zhuǎn)換數(shù)字音頻、視頻蜂林,并能將其轉(zhuǎn)化為流的開源計算機程序遥诉。
采用LGPL或GPL許可證。它提供了錄制悉尾、轉(zhuǎn)換以及流化音視頻的完整解決方案突那。
它包含了非常先進的音頻/視頻編解碼庫libavcodec.
功能:
多媒體視頻處理工具FFmpeg有非常強大的功能包括視頻采集功能
、視頻格式轉(zhuǎn)換
构眯、視頻抓圖
愕难、給視頻加水印
等。
1. 視頻采集功能:
ffmpeg視頻采集功能非常強大惫霸,不僅可以采集視頻采集卡或USB攝像頭的圖像猫缭,還可以進行屏幕錄制,同時還支持以RTP方式將視頻流傳送給支持RTSP的流媒體服務(wù)器壹店,支持直播應(yīng)用猜丹。
2. 視頻格式轉(zhuǎn)換功能:
ffmpeg可以輕易地實現(xiàn)多種視頻格式之間的相互轉(zhuǎn)換(wma,rm,avi,mod等),例如可以將攝錄下的視頻avi等轉(zhuǎn)成視頻網(wǎng)站所采用的flv格式硅卢。
3. 視頻截圖功能:
對于選定的視頻射窒,截取指定時間的縮略圖藏杖。視頻抓圖,獲取靜態(tài)圖和動態(tài)圖脉顿,不提倡抓gif文件;因為抓出的gif文件大而播放不流暢蝌麸。
4. 給視頻加水印功能:
使用ffmpeg視頻添加水印(logo)喷好。
項目組成:
- libavformat:用于各種音視頻封裝格式的生成和解析臀玄,包括獲取解碼所需信息以生成解碼上下文結(jié)構(gòu)和讀取音視頻幀等功能黑忱;
- libavcodec:用于各種類型聲音/圖像編解碼船响;
- libavutil:包含一些公共的工具函數(shù);
- libswscale:用于視頻場景比例縮放内颗、色彩映射轉(zhuǎn)換捶惜;
- libpostproc:用于后期效果處理批钠;
- ffmpeg:該項目提供的一個工具盗冷,可用于格式轉(zhuǎn)換怠苔、解碼或電視卡即時編碼等;
- ffsever:一個 HTTP 多媒體即時廣播串流服務(wù)器仪糖;
- ffplay:是一個簡單的播放器嘀略,使用ffmpeg 庫解析和解碼,通過SDL顯示
集成
1. 前期準(zhǔn)備
- 下載腳本:https://github.com/libav/gas-preprocessor
- 復(fù)制gas-preprocessor.pl到/usr/sbin下乓诽,(這里需要完全關(guān)閉蘋果的SIP安全功能, 具體請參考這篇文章
- 終端下修改文件權(quán)限, 指令:
chmod 777 /usr/sbin/gas-preprocessor.pl
- 安裝yasm, 指令如下:
* curl http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz >yasm.tar.gz
* tar xzvf yasm.tar.gz
* cd yasm-1.2.0
* ./configure
* make
* sudo make install
2. 下載ffmpeg
- 下載腳本:https://github.com/kewlbear/FFmpeg-iOS-build-script
- 解壓,找到文件 build-ffmpeg.sh
- 編譯完成后咒程,終端進入FFmpeg-iOS-build-script目錄鸠天,然后終端輸入 ./build-ffmpeg.sh lipo,這個命令是將.a文件合并成一個
3. 集成
- 把ffmpeg-iOS文件加入到工程中, 引入頭文件
#include "avformat.h"
, 執(zhí)行方法av_register_all()
, 并修改任一文件名由.m
變?yōu)?.mm
- 注:
編譯的時候報錯:libavcodec/avcodec.h' file not found
帐姻,修改Header search paths
里的路徑:$(PROJECT_DIR)/FFmpeg-iOS/include
添加額外的庫引用:
libz.tbd
libbz2.tbd
libiconv.tbd
- 編譯, 通過.
使用
由于我也是剛開始研究這個庫, 所以這篇文章暫時不涉及到具體怎么使用, 下一篇文應(yīng)該會講怎么使用.