久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

fmpeg交叉編譯到tiny6410

 百草園404 2016-03-14

         前段時(shí)間移植servfox+spcaview到arm11上一直出現(xiàn)問(wèn)題,由于網(wǎng)上很多說(shuō)是內(nèi)核版本高了,,已經(jīng)不再提供V4L的視頻采集接口,。而且servfox和spcaview都是支持V4L接口的,,而不支持V4L2視頻采集接口,。所以產(chǎn)生不兼容的矛盾,。雖然,,我不太相信兼容的問(wèn)題,,但是又不愿意去實(shí)驗(yàn)低版本的內(nèi)核(因?yàn)閮?nèi)核的交叉編譯也是很煩的,,而且漏洞百出,沒(méi)工夫去研究),,所以當(dāng)把物理機(jī)的serfox和spcaview搞通了后就沒(méi)有細(xì)致的去研究交叉編譯serfox和spcaview了,。后來(lái)就選擇了ffmpeg。

        早就聽(tīng)說(shuō)ffmpeg很強(qiáng)大了,,特別是他的壓縮率很高,,特別適合于做視頻保存。原先我在PC linux下把ffmpeg編譯玩了一遍,,后來(lái)交叉編譯到arm板子估計(jì)就不費(fèi)很大的事情了,,不過(guò)也是要花時(shí)間的,廢話少收,,現(xiàn)在來(lái)說(shuō)說(shuō)我交叉編譯的過(guò)程,。

 

編譯環(huán)境:          Vmware6.5+Fedora14

硬件平臺(tái):          S3C6410

編譯器:              gcc-4.5.1、arm-linux-gcc-4.5.1

安裝包及其版本:

                              SDL庫(kù)文件:                SDL-1.2.13.tar.gz

                              yasm匯編器:              yasm0.7.2.tar.gz

                              MPEG視頻編碼器:    x264-snapshot-20111111-2245-stable.tar.bz2                 

                              MPEG視頻編解碼器:xvidcore-1.1.3.tar.gz

                              ffmpeg源碼包:          ffmpeg-0.6.6.tar.gz

  一  安裝ffplay所需的SDL庫(kù)(如果我們不需要ffplay,,這一步可以省略)

1  下載SDL-1.1.3.tar.gz,,網(wǎng)上很容易找到安裝包。我這里提供一個(gè)地址:http://downloads./downloads/xvidcore-1.1.3.tar.gz

2  #tar zxvf  SDL-1.2.13.tar.gz  ; cd SDL-1.2.13

3  # ./configure --prefix=/usr/local --host=arm-linux --enable-shared

4  修改一下Makefile

    將一下變量修改為下面這樣:CC = arm-linux-gcc      AR = arm-linux-ar      RANLIB  = arm-linux-ranlib

5  #make

       可能會(huì)出現(xiàn)下面的錯(cuò)誤:     

     ./src/audio/dma/SDL_dmaaudio.c: In function 'DMA_WaitAudio':
     ./src/audio/dma/SDL_dmaaudio.c:166:3: error: impossible constraint in 'asm'
     make: *** [build/SDL_dmaaudio.lo] Error 1

     配置中加上--disable-video-x11這一項(xiàng)

     那么重新配置Makefile

     #make clean

     #./configure --prefix=/usr/local --host=arm-linux --enable-shared --disable-video-x11

     #make

     同樣執(zhí)行第三步

6  make install

     這樣,,我們SDL庫(kù)文件就安裝完成了

二    安裝yasm(yasmx264需要用到的匯編編譯器,,不過(guò)后來(lái)感覺(jué)沒(méi)有多大作用)

1   下載yasm0.7.2,,可以選擇高一點(diǎn)的版本,這里提供一個(gè)下載地址:http://www./projects/yasm/wiki/Download

2   #tar zxvf yasm0.7.2.tar.gz  ; cd yasm0.7.2

3   #./configure --enable-shared --prefix=/usr/local/ --host=arm-linux
4   #make

5   #make install

三    x264視頻編碼器的安裝

1  下載x264安裝包,,最好下高版本的,,最近的安裝包,不要太老了,,否則會(huì)出現(xiàn)問(wèn)題,。因?yàn)閤264安裝包每天都在更新,這里提供下載網(wǎng)址:ftp://ftp.videolan.org/pub/videolan/x264/snapshots/

2   #tar jxvf x264-snapshot-20111111-2245-stable.tar.bz2 ; cd x264-snapshot-20111111-2245-stable

3   # ./configure --prefix=/usr/local --enable-shared --host=arm-linux  --disable-asm(第二步安裝了yasm后就可以不用僅知道asm,但是沒(méi)有--disable-asm就不行,,大家可以嘗試不加--disable-asm后看是什么效果)

4   修改Makefile

     主要是修改config.mak,,將相關(guān)參數(shù)修改如下:CC=arm-linux-gcc     LD=arm-linux-gcc -o    RANLIB=arm-linux-ranlib    STRIP=arm-linux-strip

5   #make

6   #make install

四    安裝視頻編解碼器xvid

1   下載xvid安裝包,我這里提供了一個(gè)下載地址:http://downloads./downloads/xvidcore-1.1.3.tar.gz

2    #tar zxvf xvidcore-1.1.3.tar.gz ; cd xvidcore-1.1.3/build/generic

3    #./configure --prefix=/usr/local --host=arm-linux --target=arm-linux

      #./configure --prefix=/usr/local/ --host=arm-hismall-linux --target=arm-hismall-linux

      我還沒(méi)研究透為何非要執(zhí)行兩次configure,,不過(guò)如果只執(zhí)行執(zhí)行第一次configure,,make就會(huì)出現(xiàn)下面的錯(cuò)誤:

[root@sheryuan generic]# make
  D: =build
  C: ./decoder.c
cc1: error: unrecognized command line option "-freduce-all-givs"
make: *** [decoder.o] Error 1

4    修改Makefile

      一些編譯環(huán)境變量修改如下:--cc=arm-linux-gcc   --as=arm-linux-as  --ranlib=arm-linux-ranlib(如果as通不過(guò),就不用修改,,--as=as)  

5    #make

6    #make install

五   安裝ffmpeg

1    下載安裝包,這里提供下載地址:http:///download.html

2    #tar zxvf ffmpeg-0.6.6.tar.gz ; cd ffmpeg-0.6.6

3    在/usr/local下新建目錄ffmpeg-arm,,將ffmpeg安裝在此目錄下

      #mkdir /usr/local/ffmpeg-arm

3    # ./configure --prefix=/usr/local/ffmpeg-arm --enable-shared --enable-cross-compile --arch=arm --cpu=armv6 --target-os=linux --cc=arm-linux-gcc --enable-libx264 --enable-libxvid --enable-gpl --enable-pthreads --disable-stripping --ar=arm-linux-ar --ld=arm-linux-gcc --strip=arm-linux-strip --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib

       如果是高版本,,需要加上--cxx=arm-linux-g++參數(shù);如果編譯出現(xiàn)ar錯(cuò)誤,,就不要這個(gè)參數(shù)

       如果只需要安裝ffmpeg,,不需要全面安裝ffplay,ffserver,,ffprobe等附加程序,,可以選用參數(shù)--disable-ffplay ,--disable-ffserver ,,--disable ffprobe,。但是根據(jù)我的測(cè)試發(fā)現(xiàn),精簡(jiǎn)安裝占用的空間比完全安裝占用的空間少補(bǔ)了多少

4    修改Makefile

      修改如下RANLIB=arm-linux-ranlib

      如果需要安裝ffplay,,ffserver,,ffprobe,那么確保CONFIG_FFPLAY=yes,、CONFIG_FFPROBE=yes,、CONFIG_FFSERVER=yes三項(xiàng)前面沒(méi)有感嘆號(hào)(!) 

5    #make

6    #make install

 六    打包 

      將安裝的程序打包,,包括可執(zhí)行文件以及其執(zhí)行依賴的庫(kù)文件     

      #cd /usr/local

      因?yàn)槲覀儗fmpeg依賴的SDL,、yasm、x264,、xvid安裝在將/usr/local目錄下,,所以他們生成的庫(kù)文件在/usr/local/lib下,,所以我們要將/usr/local/lib目錄下libSDL、libyasm,、libx264,、libxvidcore等庫(kù)文件拷貝到ffmpeg安裝目錄的lib文件夾下,也就是/usr/lcoal/ffmpeg-arm/lib目錄下,,然后打包

     #tar czvf  ffmpeg-0.6.6-arm.tar.gz ffmpeg-arm/*

     那么生成的ffmpeg-0.6.6-arm.tar.gz就可以拷貝到arm11上進(jìn)行運(yùn)行了

七    ARM平臺(tái)上的配置

     我們可以將linux虛擬機(jī)下交叉編譯生成的ffmpeg-0.6.6-arm.tar.gz包放到/usr/local目錄下,,解壓

     #tar zxvf ffmpeg-0.6.6-arm.tar.gz

     解壓后,在/usr/local目錄下會(huì)生成ffmpeg-arm目錄,,這是我們需要將該目錄下的庫(kù)文件拷貝到可以將其作為全局變量的庫(kù)文件夾下,,我一一般將其放到了/usr/local/lib目錄下

     #cp -rf ffmpeg-arm/lib/* lib/

     #cd ffmpeg-arm

     進(jìn)入ffmpeg-arm目錄,可以測(cè)試ffmpeg是否可用

 

    至此,,安裝過(guò)程完成,,當(dāng)然也可能會(huì)出現(xiàn)一些問(wèn)題,下面我列舉了些我安裝過(guò)程遇到的問(wèn)題,。

問(wèn)題一:編譯SDL時(shí)make出現(xiàn)下面的情況

make出錯(cuò):
./src/audio/dma/SDL_dmaaudio.c: In function 'DMA_WaitAudio':
./src/audio/dma/SDL_dmaaudio.c:166:3: error: impossible constraint in 'asm'
make: *** [build/SDL_dmaaudio.lo] Error 1

這是由于我們編譯時(shí)沒(méi)有加上--disable-video-x11參數(shù),,加上此項(xiàng)后編譯可以通過(guò)

 

問(wèn)題二:ffmpeg用configure生成Makefile時(shí),出現(xiàn)ERROR: libx264 not found  或者 ERROR: libxvid not found

    在編譯參數(shù)選擇需要加上依賴的頭文件和庫(kù)文件:--extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib 

    這個(gè)問(wèn)題原因我也不知道,,大概就不是找不到libx264和libxvid安裝的庫(kù)文件路徑,,但是我是把他們安裝在/usr/local目錄下,查看/usr/local/lib目錄也有它們相應(yīng)的庫(kù)文件,,因?yàn)檫@個(gè)路徑本身就是全局路徑,,按理說(shuō)不是要特定的去再次指出他們的路徑,但是沒(méi)有這項(xiàng)參數(shù)就不會(huì)通過(guò)

 

問(wèn)題三:make編譯ffmpeg時(shí),,出現(xiàn)下面兩類奇怪錯(cuò)誤

                ffmpeg Warning: File /tests/fate/vp8.mak' has modification time或

               make: Warning: File `tests/fate/wma.mak' has modification time 3639293 s in the future

     這兩類問(wèn)題很相似,,但是我沒(méi)找到實(shí)質(zhì)性解決問(wèn)題的方法,原先我本來(lái)編譯的是ffmpeg-0.8.14,,后來(lái)就出現(xiàn)這樣的問(wèn)題,,后來(lái)搞了很久沒(méi)弄出來(lái),就換成0.6.6的版本,,結(jié)果沒(méi)有出問(wèn)題,。

    其實(shí)我后來(lái)用ffmpeg-0.9.2,ffmpeg-1.0.4都沒(méi)出現(xiàn)問(wèn)題(x264用的是x264-snapshot-20130301-2245-stable),,不過(guò)編譯ffmpeg-1.1.3時(shí)又出現(xiàn)這樣的問(wèn)題,,估計(jì)還是庫(kù)的問(wèn)題,所以沒(méi)有得到實(shí)質(zhì)性的解決,,只有通過(guò)換ffmpeg的版本,。x264的版本盡量用高版本,因?yàn)閒fmpeg對(duì)x264的版本有要求,,好像是要求x264的版本不小于某個(gè)版本,,所以版本盡量高點(diǎn)更有保障,。

 

    當(dāng)然還有其他的一些常識(shí)性的問(wèn)題,這里我沒(méi)有細(xì)說(shuō),,也可能沒(méi)有記下,。

         

      

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多