打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
FFmpeg移植到mini2440

Fedora 8
arm-linux-gcc 3.4.1

下载ffmpeg_x264_src_20071007源码

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /pub/2011/09/25/FFmpeg移植到mini2440/

交叉编译x264

#CC=arm-linux-gcc ./configure --prefix=/usr/local/arm/3.4.1/arm-linux/ --host=arm-linux
#make
错误
common/cpu.c:212 'cpu_set_t' undeclared
common/cpu.c:213 'p_aff' undeclared
修改:将210行和212-216行注释起来,在217行加np=1;
再#make
#make install

交叉编译ffmpeg

#dos2unix configure

#.configure --prefix=/usr/local --cross-compile --arch=libavcodec/armv4l/ --cross-

prefix=/usr/local/arm/3.4.1/bin/arm-linux- --cc=gcc --enable-static --disable-ipv6 --enable-libx264

--enable-gpl --enable-pthreads --disable-ffserver --disable-ffplay --target-os=linux --disable-

network --disable-opts

#make
成功生成ffmpeg可执行文件,ftp采用bin模式下载到mini2440。
并改写其权限
#chmod +x ffmpeg

利用ffmpeg采集图像

安装sd卡
#mount /dev/mmc/blk0/part1 /mnt/

开始采集
#/home/plg/ffmpeg -f video4linux -s 320x240 -i /dev/video0 /mnt/test.avi

自此,成功地在mini2440上实现了ffmpeg的摄像头视频录制功能

写一下最近移植x264的过程。

最新的版本(我最开始用的是20090715这个)已经有cross-compile的支持了,移植应该还是很顺利的。但是这个版本的win下编译不通过,问题在网上找了一下,没有解决。后来退而求其次,选择了一个20060805的版本,这个版本在网上找到了win下vc6可以编译通过的版本,同时也可以在x264的官方ftp上找到linux下可以编译的版本。最后决定使用这个版本。这样可以方便一些在win下的交互调试。

注意,这里要提醒一下,几年之内,x264的变化还是很大的。总之,在需要两个平台交叉调试的时候,看来一个相同的版本是非常有必要的。否则,可能会发生这种情况:程序在win下好用,在linux下就不好用了,然后你一边用vs,一边用gdb,终于找到了不同的地方,发现x264的一个标准API对同一个参数的赋值是完全不一样的……(比如我就发现我使用的两个版本的x264_param_init()函数对param.i_bframe赋值是不同的,导致我的一个程序在win下是好的,linux下就是坏的)

新版本的移植我不说了,大概说一下旧版本的移植。

旧的是没有--disable-asm和--cross-compile这两个configure的支持的(前者是对x86的汇编优化,交叉编译的时候当然不要的,后者是交叉编译环境设置)。其实和我之前的移植过程差不多,这里写个步骤:

0.环境

OS:Ubuntu 9.04

Version:x264-snapshot-20060805-2245.tar.bz2


1.配置

./configure --prefix=/home/peter/workspace --enable-shared --enable-debug


我这里打开了动态链接和debug。前者可以生成libx264.so,后者可以在你调程序用gdb的时候step into库函数里。
2.修改配置参数

修改config.mak:

prefix=/home/peter/workspace
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
includedir=${prefix}/include
# 这里改为ARM
ARCH=ARM
SYS=LINUX
# 这里改为arm-linux-gcc
CC=arm-linux-gcc
# 这里去掉-DHAVE_MMXEXT -DHAVE_SSE2 -DARCH_X86
CFLAGS=-Wall -I. -O4 -ffast-math -D__X264__ -DHAVE_MALLOC_H -DSYS_LINUX -DHAVE_PTHREAD -s -fomit-frame-pointer
LDFLAGS= -lm -lpthread -s
AS=nasm
ASFLAGS=-O2 -f elf
VFW=no
GTK=no
EXE=
VIS=no
HAVE_GETOPT_LONG=1
DEVNULL=/dev/null
CONFIGURE_ARGS= '--enable-shared' '--prefix=/home/peter/workspace'
SONAME=libx264.so.49
default

: $(SONAME)

 

修改Makefile,将66~68行的ar和ranlib改为arm下的:

libx264.a: .depend $(OBJS) $(OBJASM)
                arm-linux-ar rc libx264.a $(OBJS) $(OBJASM)
                arm-linux-ranlib libx264.a

3.编译安装

make
make install

就可以了。

 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
x264编码的ARM移植
ffmpeg + x264 编码H264 (arm Linux) 转载
编译FFmpeg+x264移植到安卓(一)
交叉编译ffmpeg并生成ffplay
android 下编译ffmpeg
一些开源项目在ARM上的移植
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服