交叉編譯工具:arm-linux-gcc
一.先下載一下文件
-
yasm-1.2.0.tar.gz
-
x264-snapshot-20140424-2245.tar.bz2
-
xvidcore-1.1.3.tar.gz
- SDL-1.2.15.tar.gz
5. ffmpeg-1.2.2.tar.gz
二.逐個編譯上面源文件
/usr/local/ffmpeg_arm:依賴的庫文件目錄,目標目錄,庫目錄
- yasm-1.2.0.tar.gz
tar -zxvf yasm-1.2.0.tar.gz && cd yasm-1.2.0 && ./configure --prefix=/usr/local/ffmpeg_arm --host=arm-linux && make&&make install && cd ../
- x264-snapshot-20140424-2245.tar.bz2
tar -jxvf x264-snapshot-20140424-2245.tar.bz2 && cd x264-snapshot-20140424-2245 && ./configure --enable-shared --prefix=/usr/local/ffmpeg_arm --host=arm-linux --cross-prefix=arm-linux- --disable-asm && make && make install && cd ../
- xvidcore-1.1.3.tar.gz
3.1
tar -zxvf xvidcore-1.1.3.tar.gz && cd xvidcore-1.1.3/build/generic
3.2
vi configure
修改$CC爲gcc
4361 gcc -o gcc-ver test.c
3.3
./configure --prefix=/usr/local/ffmpeg_arm --host=arm-linux --target=arm-linux && make && make install && cd ../../../
- SDL-1.2.15.tar.gz
tar -zxvf SDL-1.2.15.tar.gz && cd SDL-1.2.15 && ./configure --enable-shared --prefix=/usr/local/ffmpeg_arm --host=arm-linux --disable-video-x11 --disable-input-tslib --disable-esd --disable-arts --disable-nasm --disable-alsa --disable-video-nanox --disable-video-qtopia --disable-video-photon --disable-video-ggi --disable-video-svga --disable-video-aalib --disable-video-dummy --disable-video-dga --disable-arts && make && make install && cd ../
5. ffmpeg-1.2.2.tar.gz
5.1
tar -zxvf ffmpeg-1.2.2.tar.gz && cd ffmpeg-1.2.2
5.2
vi configure
修改configure的SDL_CONFIG
3973 SDL_CONFIG="${cross_prefix}sdl-config"
爲
3973 SDL_CONFIG="/usr/local/ffmpeg_arm/bin/sdl-config"
5.3
./configure --cross-prefix=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux- --prefix=/usr/local/ffmpeg_arm --enable-shared --enable-cross-compile --arch=armv7 --target-os=linux --cc=arm-linux-gcc --enable-libxvid --enable-libx264 --enable-gpl --enable-pthreads --disable-ffserver --enable-ffmpeg --disable-ffprobe --enable-ffplay --enable-avfilter --disable-network --enable-runtime-cpudetect --disable-indevs --ar=arm-linux-ar --ld=arm-linux-gcc --strip=arm-linux-strip --extra-cflags=-I/usr/local/ffmpeg_arm/include --extra-ldflags=-L/usr/local/ffmpeg_arm/lib
5.4 檢查ffplay是否包含"CONFIG_FFPLAY=yes" 沒有則說明有問題
vi config.mak
CONFIG_FFPLAY=yes
5.5
make && make install
6 拷貝/usr/local/ffmpeg_arm到開發板上運行
7 刪除多餘的文件
ffplay 使用示例
view source
print
?
01.
1) 播放 test.mp4 ,播放完成後自動退出
02.
ffplay -autoexit test.mp4
03.
04.
2) 以 320 x 240 的大小播放 test.mp4
05.
ffplay -x 320 -y 240 test.mp4
06.
07.
3) 將窗口標題設置爲 "myplayer",循環播放 2 次
08.
ffplay -window_title myplayer -loop 2 test.mp4
09.
10.
4) 播放 雙通道 32K 的 PCM 音頻數據
11.
ffplay -f s16le -ar 32000 -ac 2 test.pcm
更多 ffplay 可用選項,可以使用 ffplay -h 獲取
所有的命令如下列表所示。
名稱
有參數
作用
x
Y
強制屏幕寬度
y
Y
強制屏幕高度
s
Y
強制屏幕大小
fs
N
全屏
an
N
關閉音頻
vn
N
關閉視頻
ast
Y
設置想播放的音頻流(需要指定流ID)
vst
Y
設置想播放的視頻流(需要指定流ID)
sst
Y
設置想播放的字幕流(需要指定流ID)
ss
Y
從指定位置開始播放,單位是秒
t
Y
播放指定時長的視頻
nodisp
N
無顯示屏幕
f
Y
強制封裝格式
pix_fmt
Y
指定像素格式
stats
N
顯示統計信息
idct
Y
IDCT算法
ec
Y
錯誤隱藏方法
sync
Y
視音頻同步方式(type=audio/video/ext)
autoexit
N
播放完成自動退出
exitonkeydown
N
按下按鍵退出
exitonmousedown
N
按下鼠標退出
loop
Y
指定循環次數
framedrop
N
CPU不夠的時候丟幀
window_title
Y
顯示窗口的標題
rdftspeed
Y
Rdft速度
showmode
Y
顯示方式(0 = video, 1 = waves, 2 = RDFT)
codec
Y
強制×××
項目組成
FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化爲流的開源計算機程序。它包括了領先的音/視頻編碼庫libavcodec等。
libavformat:用於各種音視頻封裝格式的生成和解析,包括獲取解碼所需信息以生成解碼上下文結構
和讀取音視頻幀等功能;
libavcodec:用於各種類型聲音/圖像編解碼;
libavutil:包含一些公共的工具函數;
libswscale:用於視頻場景比例縮放、色彩映射轉換;
libpostproc:用於後期效果處理;
ffmpeg:該項目提供的一個工具,可用於格式轉換、解碼或電視卡即時編碼等;
ffsever:一個 HTTP 多媒體即時廣播串流服務器;
ffplay:是一個簡單的播放器,使用ffmpeg 庫解析和解碼,通過SDL顯示;
4命令集
ffmpeg 命令集舉例
1.獲取視頻的信息
ffmpeg -i video.avi
2.將圖片序列合成視頻
ffmpeg -f image2 -i image%d.jpg video.mpg
上面的命令會把當前目錄下的圖片(名字如:image1.jpg. image2.jpg. 等…)合併成video.mpg
3.將視頻分解成圖片序列
ffmpeg -i video.mpg image%d.jpg
上面的命令會生成image1.jpg. image2.jpg. …
支持的圖片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI
4.爲視頻重新編碼以適合在iPod/iPhone上播放
ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320×180 -title X final_video.mp4
說明:
-
源視頻:source_video.avi
-
音頻編碼:aac
-
音頻位率:128kb/s
-
視頻編碼:mpeg4
-
視頻位率:1200kb/s
-
視頻尺寸:320 X 180
- 生成的視頻:final_video.mp4
5.爲視頻重新編碼以適合在PSP上播放
ffmpeg -i source_video.avi -b 300 -s 320×240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4
說明:
-
源視頻:source_video.avi
-
音頻編碼:aac
-
音頻位率:32kb/s
-
視頻編碼:xvid
-
視頻位率:1200kb/s
-
視頻尺寸:320 X 180
- 生成的視頻:final_video.mp4
6.從視頻抽出聲音.並存爲Mp3
ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3
說明:
-
源視頻:source_video.avi
-
音頻位率:192kb/s
-
輸出格式:mp3
- 生成的聲音:sound.mp3
7.將wav文件轉成Mp3
ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3
8.將.avi視頻轉成.mpg
ffmpeg -i video_origine.avi video_finale.mpg
9.將.mpg轉成.avi
ffmpeg -i video_origine.mpg video_finale.avi
10.將.avi轉成gif動畫(未壓縮)
ffmpeg -i video_origine.avi gif_anime.gif
11.合成視頻和音頻
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg
12.將.avi轉成.flv
ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320×240 -f flv video_finale.flv
13.將.avi轉成dv
ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv
或者:
ffmpeg -i video_origine.avi -target pal-dv video_finale.dv
14.將.avi壓縮成divx
ffmpeg -i video_origine.avi -s 320×240 -vcodec msmpeg4v2 video_finale.avi
15.將Ogg Theora壓縮成Mpeg dvd
ffmpeg -i film_sortie_cinelerra.ogm -s 720×576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg
16.將.avi壓縮成SVCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg
17.將.avi壓縮成VCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg
18.多通道編碼
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2
19.從flv提取mp3
ffmpeg -i source.flv -ab 128k dest.mp3
5格式
支持的編碼
源自FFmpeg項目組的兩個視頻編碼:
Snow
FFV1
支持的格式
ASF
AVI
BFI[7]
IFF[8]
RL2[9]
FLV
MXF, Material eXchange Format, SMPTE 377M
Matroska
Maxis XA[10]
MSN Webcam stream[11]
MPEG transport stream
TXD[6]
OMA[12]
GXF, General eXchange Format, SMPTE 360M
mov,mp4,m4a,3gp,
6協議
支持的協議
HTTP
RTP
RTSP
RealMedia RTSP/RDT
TCP
UDP
Gopher
RTMP
RTMPT, RTMPE, RTMPTE, RTMPS (via librtmp)
SDP
MMS over TCP
AM335X開發板請添加鏈接描述:http://www.myir-tech.com/product/myd-am335x.htm請添加鏈接描述