当前位置: 首页 > 工具软件 > SDL2-CS > 使用案例 >

成功移植ffmpeg 0.6到ARM平台 tq2440. 移植ffmpeg-0.6.3,SDL-1.2.10到tq2440

彭宏阔
2023-12-01

#cd /opt/ffmpeg/ffmpeg-0.6.3
#./configure --prefix=./__install/ --enable-shared --disable-static --enable-gpl --cross-prefix=/opt/EmbedSky/4.3.3/bin/arm-linux- --enable-cross-compile --arch=arm --disable-stripping --target-os=linux
#make
#make install

#cd /opt/ffmpeg/SDL-1.2.10
#./configure --prefix=$PWD/__install/ --disable-video-dummy --disable-video-dga --disable-arts--disable-esd --disable-alsa --disable-cdrom --disable-video-x11--disable-nasm --target=arm-linux--host=arm-linux  --disable-video-directfb --disable-input-tslib--enable-video-fbcon --disable-video-x11-dgamouse --enable-video-qtopia--disable-video-x11-vm --disable-video-x11-xv--disable-video-x11-xinerama --disable-video-x11-xme--disable-video-x11-xrandr --disable-video-x11-dpms--disable-video-photon --disable-video-cocoa --disable-video-ps2gs  --disable-video-svga --disable-video-vgl  --disable-video-wscons--disable-video-xbios  --disable-video-gem   --disable-video-opengl  --disable-stdio-redirect  --disable-directx  --disable-pulseaudio
#make
#make install



  ffmpeg已变成多媒体处理领域最有影响力的开源组件,接近50万行源代码的工程对ARM模拟器来说是个巨大的挑战,但多年的稳定性给了我很大信心。整个过程比较顺利,前后大约花2个半小时,包括在ARM开发板上验证。ffmpeg0.6的移植成功,进一步体现了ARM模拟器的巨大魅力。


    相对移植x264来说,移植ffmpeg虽然做法简单,但需要关注的问题会更加复杂,主要原因是ffmpeg有大量的arm汇编优化代码,如何选择目标平台和编译器是一个首要问题。换句话说,如果需要把ffmpeg移植到arm7平台,那么除了armv4指令,其它的全部高版本指令都要去掉,倘若目标平台是arm9,还得考虑armv5,以及是否要支持v5t。最新的ffmpeg 0.6已经包含armv6和armv6t2汇编代码,这又需要根据arm11平台的具体情况来选择。值得注意的是,arm gcc4.3之前的版本不支持armv6/v6t2指令,需要安装4.3及其后的编译器。期待ffmpeg尽快出cortex汇编优化版本,这样arm高档平台上的速度又会快几个数量级。


      由于ARM模拟器已经具备对arm11,甚至cortex指令的支持,所以这次的移植配置了最高级别的汇编优化,直接armv6t2,编译过程中出现了一些汇编指令无法识别的错误,原来是arm gcc的问题,不得不安装arm gcc 4.3.3版本。


      简单一点,具体的过程如下:


1. 在www.ffmpeg.org官方网站下载最新的release版本0.6


2. 在linux(或cygwin)下解压缩,进入ffmpeg目录,执行config配置


    ./configure --prefix=./_install/ --enable-shared --disable-static --enable-gpl --cross-prefix=/usr/bin/gcc-4.3.3-glibc-2.8-cs2009q1-203/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi- --enable-cross-compile --arch=arm --disable-stripping --target-os=linux


  具体的参数配置可以查看ffmpeg用户手册,这里特别注意的就是设置好gcc路径--cross-prefix


3. 执行make,   大约半杯茶时间,全部编译完成


4. 把生成的ffmpeg复制到ARM模拟器下,敲armulator.exe ffmpeg,提示缺少动态库,逐个copy过来,最后成功输出信息:


    $ ./armulator.exe ffmpeg
    FFmpeg version 0.6, Copyright (c) 2000-2010 the FFmpeg developers
    built on Aug 31 2010 15:44:28 with gcc 4.3.3
    configuration: --prefix=./_install/ --enable-shared --disable-static --enable-gpl --cross-prefix=/usr/bin/gcc-4.3.3-glibc-2.8-cs2009q1-203/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi- --enable-cross-compile --arch=arm --disable-stripping --target-os=linux
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.11. 0 /  0.11. 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'
program exit with code 1
armulator v2.0, 12/18/2009
report bug to lixianzhong@ustc.edu


5.  第一步成功之后,再输入一组转码参数


  armulator.exe ffmpeg -i test.avi -y -b 20000 -s sqcif -r 10 -acodec aac -strict experimental -ab 23.85 -ac 1 -ar 16000 test.3gp


  运行结束后,就能生成转码成功后test.3gp文件。


6. 东找西借搞到一块arm11开发板,花个把钟头把环境配好(装u-boot, linux ..., 过程比较痛苦),再把ffmpeg及相关动态库安装上去,最后生成的test.3gp,完全和ARM模拟器相同。


上述信息仅供个人团体,及教育机构学习研究之用,移植方法谨供参考,ARM模拟器商业使用请联系作者,demo资料链接:


http://download.csdn.net/source/2661245


 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lxzhg/archive/2010/09/01/5854954.aspx



 类似资料: