您的位置 首页 硬件

移植 ffmpeg 到 ARM 渠道

一、下载yasm:到http://www.tortall.net/projects/yasm/wiki/Download下载yasm0.7.2(x264需要用到的汇编编译器)forx86:./conf

一、下载yasm:

到http://www.tortall.net/projects/yasm/wiki/Download下载yasm0.7.2(x264需求用到的汇编编译器)

for x86:

./configure –enable-shared –prefix=/usr/local
make
make install

for arm:
./configure –enable-shared –prefix=/usr/local/ –host=arm-linux
make
make install

下载装置x264
到 ftp://ftp.videolan.org/pub/videolan/x264/snapshots/ 下载x264库
for x86:
./configure –enable-shared –prefix=/usr/local
make
make install
for arm:
./configure –enable-shared
修正config.mak文件,将其间的CC=gcc,AS=yasm修正成CC=arm-linux-gcc,AS=arm-linux-as。—>make。之后便生成了可履行文件X264。
这里会犯错,解决办法:将解压文件夹下的common文件夹下的cpu.c中的#elif defined(SYS_LINUX) unsigned int bit; int np; cpu_set_t p_aff; memset( &p_aff, 0, sizeof(p_aff) );sched_getaffinity( 0, sizeof(p_aff), &p_aff );for( np = 0;bit = 0; bit < sizeof(p_aff); bit++ );np += (((uint8_t *)&p_aff)[bit / 8] >> (bit % 8)) & 1;return np;
改成了:#elif defined(SYS_LINUX)
return 1 ;
二、下载装置xvid库
到 http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz下载xvid
for x86:
cd build/generic
./configure –prefix=/usr/local
make
make install
for arm:
#./configure –prefix=/usr/local/ –host=arm-linux –target=arm-linux
./configure –prefix=/usr/local/ –host=arm-hismall-linux –target=arm-hismall-linux
make
make install
三、下载ffmpeg
http://download.chinaunix.net/download.php?id=5532&ResourceID=2990在这个网址上下载了ffmpeg-0.4.9-p20051120.tar.bz2,然后解压。
(1)修正configure文件,要修正的如下
prefix=”/usr/local/ffmpeg-arm”
cross_prefix=”/usr/local/arm/3.3.2/bin/”
cc=”arm-linux-gcc”
ar=”arm-linux-ar”
ranlib=”arm-linux-ranlib”
strip=”arm-linux-strip”
cpu=”armv41″
因为cc、ar、ranlib、strip都是穿插编译环境中的履行文件,也能够这样装备
prefix=”/usr/local/ffmpeg-arm”
cross_prefix=”/usr/local/arm/3.3.2/bin/arm-linux-“
cpu=”armv41″
(2)履行
./configure –enable-shared –disable-strip
阐明:假如不加–disable-strip,那么在编译之后,动态链接库会有问题。在运转程序链接该三个链接库的时分,会呈现”skippingincompatible”过错。我猜测是在装置动态库之前,运用了strip对其进行了处理,而不是调用arm-linux-strip,所以造成了动态库的损坏。(比方gcc编译得到的动态库,运用arm-linux-gcc去链接该动态库,当然会呈现”skippingincompatible”过错)。
(3)编译并装置
make
make install
装置完成后,在/usr/local/ffmpeg-arm文件下有三个文件夹,分别为头文件夹include、动态库文件夹lib和履行文件夹bin。
因为是运用动态链接库,bin目录下的履行文件需求lib下的动态库的支撑。在试验箱上运转ffmpeg,有必要把lib下的动态库烧写到/usr/lib或许/lib目录下。
(4)测验
把include文件夹下的ffmpeg文件夹到/usr/local/arm/3.3.2/include目录下。那么在测验程序中的包括文件能够这样写#include
编译:arm-linux-gcc -o test test.c -L/usr/local/ffmpeg-arm/lib-lavformat -lavcodec
-lavutil
在试验箱运转测验程序,有必要把动态库文件烧写到/usr/lib或许/lib下。

(5)ffmpeg+ffserver构建视频服务器(摄像头作为视频收集端口,经过ffmpeg进行mpeg4编码,然后经过ffserver运用rtp协议传输视频!)
首要发动ffserver。发动ffserver之前有必要先装备好ffserver。装备文件如下
Port 8090

BindAddress 0.0.0.0
#最大链接数
MaxClients 1000
#带宽上限
MaxBandwidth 10000
CustomLog –
NoDaemon
#装备缓冲文件

#缓冲文件地点目录
File /tmp/feed1.ffm
#缓冲巨细
FileMaxSize 1M
#答应链接的地址
ACL allow 127.0.0.1

#装备视频文件的参数

Feed feed1.ffm
Format asf
NoAudio
VideoCodec mpeg4
VideoFrameRate 15
VideoSize 320×240
VideoBitRate 256
VideoBufferSize 40
VideoGopSize 30
#AudioBitRate 64
StartSendOnKey
ACL allow 192.168.0.0 192.168.255.255

这样就能够发动ffserver了,运用格局如下:./ffserver -f test.conf
然后再发动ffmpeg,运用方法:ffmpeg -f video4linux -s 320*240 -r 15 -i /dev/video0 http://localhost:8090/feed1.ffm
这样服务器端就OK了,客户端不知道为什么怎样也不可!
抑郁!!!!!!!!!!!!!!!!!!!!!!11

二、ffmpeg在VC下运用
首要下载一个ffmpeg SDK,现在最新版别3.2,下载地址:http://www.bairuitech.com/html/ruanjianxiazai/ffmpeg/20080414/89.html,然后解压后,将库文件和头文件加到VC中去,将动态链接库文件拷贝到自己的工程目录下。假如呈现各种找不到能够解析的外部函数名,一般都是因为没有将相应的头文件和库文件参加的原因!!!!!!!!!!!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/276659.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部