DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Ffmpeg移植过程:

     FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证。它的移植同样遵循LGPL或GPL移植方法:configure、make、make insatll。

 

1.下载ffmpeg开源库(ffmpeg-0.5.tar.bz2)放到相应文件夹。

#tar jxvf ffmpeg-0.5.tar.bz2

#cd ffmpeg-0.5

 

2.配置编译选项

#./configure --cross-prefix=/usr/local/arm/3.4.1/bin/arm-Linux- --enable-cross-compile --target-os=linux --cc=arm-linux-gcc --arch=arm --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --enable-ffplay --enable-ffserver --enable-swscale --disable-vhook --enable-pthreads --disable-network --disable-ipv6 --enable-libamr-nb --enable-libamr-wb --enable-libfaac --enable-libfaad --enable-libmp3lame --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-yasm --disable-stripping --disable-optimizations --extra-cflags=-I/usr/local/ffextra/include --extra-ldflags=-L/usr/local/ffextra/lib

交叉编译器:arm-linux-gcc3.4.1

--cflags:ffmpeg第三方库头文件声明

--extra-ldflags:第三方库库文件路径

 

3.

#make

 

4.

#make install

把编译生成的库拷贝到2440开发板,配置环境变量。

 

编译过程错误:

1:libavcodec/arm/dsputil_arm_s.S
     libavcodec/arm/dsputil_arm_s.S: Assembler messages:
     libavcodec/arm/dsputil_arm_s.S:25: Error: unknown pseudo-op: `.eabi_attribute'
     libavcodec/arm/dsputil_arm_s.S:641: Error: bad instruction `push {r4-r10}'
     libavcodec/arm/dsputil_arm_s.S:724: Error: bad instruction `pop {r4-r10}'
     make: *** [libavcodec/arm/dsputil_arm_s.o] 错误 1

解决:在make的时候有一些asm指令找不到 
ffmpeg-0.5/libavcodec/arm/asm.S
24行: .eabi_attribute 24, /val改为@.eabi_attribute 24, /val 
28行: .eabi_attribute 25, /val改为@.eabi_attribute 25, /val

ffmpeg-0.5/libavcodec/arm/dsputil_arm_s.S
641行: push      {r4-r10} 改为 stmfd      sp!, {r4-r10} @ push      {r4-r10} 
724行: pop       {r4-r10} 改为  ldmfd      sp!, {r4-r10} @ pop       {r4-r10}

2:/home/liao/ffmpeg-0.5/libavcodec/libavcodec.so: undefined reference to `dlerror'
     /home/liao/ffmpeg-0.5/libavcodec/libavcodec.so: undefined reference to `dlclose'
     /home/liao/ffmpeg-0.5/libavcodec/libavcodec.so: undefined reference to `dlopen'
     /home/liao/ffmpeg-0.5/libavcodec/libavcodec.so: undefined reference to `dlsym'

解决:缺少libdl库文件,在Makefile文件中添加库文件
68行:ffserver_g$(EXESUF): FF_LDFLAGS += $(FFSERVERLDFLAGS)后面添加FF_LDFLAGS +=-ldl

至此,ffmpeg可以顺利编译!!

 

注意:

ffmpeg中ffplay需要SDL支持,如需编译ffplay,则需下面步骤:

     编译SDL,将其include、lib文件拷贝至第三方库路径(/usr/local/ffextra)

     在configure之前修改configure文件2042行:

     SDL_CONFIG="${cross_prefix}sdl-config"改为SDL_CINFIG="/usr/local/sdl/bin/sdl-config"

ffmpeg针对mp3、wma音频格式解码为浮点型,难以在arm上流畅运行。

posted on   DoubleLi  阅读(390)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2013-08-09 VC使用#定义方便控制版本号的宏
2012-08-09 CSDN上关于ToolTip的知识
点击右上角即可分享
微信分享提示