1. 程式人生 > >【Linux】Linux下MIPS平臺交叉編譯FFmpeg庫 及使用庫擷取視訊中的某一幀

【Linux】Linux下MIPS平臺交叉編譯FFmpeg庫 及使用庫擷取視訊中的某一幀

一.Linux下MIPS平臺交叉編譯FFmpeg庫:

1.下載ffmpeg庫的原始碼
(http://sourceforge.net/project/showfiles.php?group_id=205275&package_id=248632):
[[email protected] ffmpeg]# ls
ffmpeg-laster.tar.gz
2.解壓:
[[email protected] ffmpeg]# tar zxvf ffmpeg-laster.tar.gz 
3.開始配置,並編譯:
[[email protected] ffmpeg]# mkdir ffmpeg-release
[
[email protected]
ffmpeg]# cd ffmpeg
[[email protected] ffmpeg]# ./configure --enable-cross-compile --target-os=linux --cross-prefix=mipsel-linux- --cc=mipsel-linux-gcc --enable-shared --arch=mips --prefix=/opt/brcm/ffmpeg/ffmpeg-release
[[email protected] ffmpeg]# make
[[email protected]
ffmpeg]# make install
[[email protected] ffmpeg]# cd ../ffmpeg-release
[[email protected] ffmpeg-release]# tar -zcvf ffjpeg_lib.tar.gz ./lib


板子上執行:
# cp ffjpeg_lib.tar.gz /usr/local/lib/
# cd /usr/local/lib/
# tar -zxvf ffjpeg_lib.tar.gz -C ../
# rm ffjpeg_lib.tar.gz

# cp ffmpeg-release/bin/* /bin/  
# ffmpeg 
FFmpeg version SVN-r21694, Copyright (c) 2000-2010 Fabrice Bellard, et al.
  built on Nov 17 2012 02:25:17 with gcc 4.5.3
  configuration: --enable-cross-compile --target-os=linux --cross-prefix=mipsel-linux- --cc=mipsel-linux-gcc --enable-shared --arch=mips --prefix=/opt/brcm/ffmpeg/ffmpeg-release
  libavutil     50. 9. 0 / 50. 9. 0
  libavcodec    52.52. 0 / 52.52. 0
  libavformat   52.51. 0 / 52.51. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.10. 0 /  0.10. 0
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'
#

到現在為止, 我們就成功的將 ffmpeg 移植到我們的開發板上了。

二.Linux下使用ffmpeg庫:

1.命令列使用:
ffmpeg -i test.mp4 -y -f image2 -ss 30 -s 95*95 -vframes 1 a.jpg
找一個MP4檔案:test.mp4,然後使用上面的命令就可以取得30秒時視訊的影象,儲存為
95*95畫素的JPG檔案。

ffmpeg -i 000094.mp4 -vframes 30 -pix_fmt rgb24  -y -f gif a.gif
把前30幀轉化為GIF檔案。

2.在程式中呼叫函式截獲視訊圖片:
首先加入庫支援,在我們的可執行程式的Makefile檔案中,加入:
CFLAGS += -I/opt/brcm/ffmpeg/ffmpeg-release/include/ 
LFLAGS += -L/opt/brcm/ffmpeg/ffmpeg-release/lib/ -lavutil -lavformat -lavcodec -lswscale
(記住,後面最後四個引數缺一不可,否則編譯不通過)
然後關於在程式設計中使用FFMPEG庫的方法,附帶一個成熟的Demo。
(test_snap.c和Makefile)

附帶幾個我自己看過的網站: