移植 ffmpeg 到 ARM 平台

发布者:京玩儿最新更新时间:2016-07-06 来源: eefocus关键字:移植  ffmpeg  ARM  平台 手机看文章 扫描二维码
随时随地手机看文章
一、下载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 320x240 
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中去,将动态链接库文件拷贝到自己的工程目录下。如果出现各种找不到可以解析的外部函数名,一般都是由于没有将相应的头文件和库文件加入的原因!!!!!!!!!!!
关键字:移植  ffmpeg  ARM  平台 引用地址:移植 ffmpeg 到 ARM 平台

上一篇:移植Lua到ARM平台
下一篇:移植ethtool到arm平台

推荐阅读最新更新时间:2024-03-16 14:59

叫板ARM、MIPS,可配置处理器走向何方?
  与市场上大名鼎鼎的ARM、MIPS相比,Tensilica(泰思立达)公司还是个小角色。其位于北京南湖东园博泰国际40平米左右的办公室里,只有寥寥数人。初次见到其中国区代表李冉,显得形单影只。让人不禁联想到ARM中国区总裁谭军2002年时的样子。   与ARM所做的固定架构处理器不同的是,Tensilica力推 “可配置处理器”的概念。这个并不为中国大多数工程师所熟知的技术,在ARM几乎成了代名词的IP圈里,却公然称“性能更高,应用更广”。   然而,不可否认的是, ARM仍然占有相当市场份额,“可配置”这样一个全新的技术,究竟能否撬开中国市场? 固核也可调,可配置多余?   中国的IP商业模式,ARM是第一人。因此,
[焦点新闻]
联想发布全球首款Intel平台Android手机K800
    谜底揭开了,Intel和Android合作的见证者正是联想。今天,在CES2012现场,Intel CEO欧德宁和联想高级副总裁刘军发布了全球首款Intel平台的Android手机K800。 该手机为4.03寸屏幕,Intel1.6GHz的内核,支持1080p播放,长达14天的待机时间。 全球首款Medfield智能手机联想K800 摩托罗拉总裁Sanjay Jha也来捧场 Intel还再CES 2012大会上再一次展示了他们的X86构架的Medfield平台工程样机     当联想出现在欧德宁演讲的幻灯片中时,现场气氛沸腾,这意味着英特尔的智能手机芯片梦想第一次看到了实体产
[手机便携]
基于ARM和μC/OS-Ⅱ的在线磷酸根离子监测仪设计
火力发电厂和大型工业锅炉,通常采用向炉水中添加少量磷酸盐以防止钙、镁水垢的生成,磷酸根浓度不够,不能有效防止结垢,磷酸根离子含量过高,会导致炉水的pH值变高。因此磷酸根离子浓度是炉水检测的重要参数。ARM处理器具备高性能、低功耗、低成本等优点,将其应用于在线磷酸根离子分析仪的管理控制系统,可以提高磷酸根分析仪的处理速度和精度。 1 结构及测量原理简介 磷酸根离子分析仪整体结构包括光路系统、水路系统和管理控制系统三个部分。 光路系统主要包括:专用的单色LED冷光源、比色皿和光电传感器。 水路系统由比色皿、柱塞泵、多通道切换阀、流通池、样水/标液切换阀、流量计、排污阀、溢流管等组成。 利用化学吸光法原理,即在一定的
[单片机]
基于<font color='red'>ARM</font>和μC/OS-Ⅱ的在线磷酸根离子监测仪设计
EDI CON CHINA秀实力,NI平台化解决方案重新定义射频、微波测试
EDI CON CHINA 2017日前圆满落幕,以软件为中心的平台化战略为核心,灵活延展至当前最热门的5G、802.11ax、车载雷达等射频微波领域,NI(美国国家仪器公司,National Instruments,简称NI)花样秀实力,展示了从硬件原型到最终产线测试的灵活解决方案:从实时分析带宽高达2GHz的毫米波系统原型设计平台,到最新LabVIEW Communication 2.0搭载LTE应用框架的原型化验证系统LTE USRP-RIO;从收发一体,实时带宽高达1GHz的NI第二代矢量信号收发仪(VST 2.0),到面向下一代WLAN测试协议802.11ax,仪器仪表级别的平台化WLAN 802.11ax测试方案以及和
[测试测量]
EDI CON CHINA秀实力,NI<font color='red'>平台</font>化解决方案重新定义射频、微波测试
一套完整的ARM交叉编译环境的搭建过程
在网上查看了不少资料,参考别人的,在加上一些自己遇到的问题结合的,内容直接转载过来了,给和我一样,刚 入门ARM的新手的。虽然网上很多现成的,但是自己动手做作,还是很好的。 编译环境: 内核名称:Linux 内核发行版: 3.3.0-4.fc16.x86_64 内核版本:#1 SMP Tue Mar 20 18:05:40 UTC 2012 硬件架构名称: x86_64 硬件平台:x86_64 操作系统:GNU/Linux 当前系统gcc版本号:4.6.3 在Linux中建立整个ARM交叉编译环境的整体过程为: 1、 下载源码包放在/mnt/hgfs/Document/ 2、 建立编译目录并设置环境变量 3
[单片机]
ARM一些总结
ARM处理器共有37个寄存器: 1) 31个通用寄存器,包括程序计数器(PC)。这些寄存器都是32位的; 2)6个状态寄存器。这些寄存器也是32位的,但是只使用了其中的12位。 ARM通用寄存器 通用寄存器(R0-R15)可分为三类:不分组寄存器R0~R7;分组寄存器R8~R14;程序计数器PC。 1)不分组寄存器R0~R7 不分组寄存器R0~R7在所有处理器模式下,它们每一个都访问一样的32位寄存器。它们是真正的通用寄存器,没有体系结构所隐含的特殊用途。 2)分组寄存器R8~R14 分组寄存器R8~R14对应的物理寄存器取决于当前的处理器模式。若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。 寄存器R
[单片机]
mpu6050 DMP库的移植
官方的运动库,必须通过这个才能启用MPU6050的DMP引擎(数据手册里完全不提这个东西,必须在官网注册登录后才有·····) 里面的代码是基于msp430的,不过很容易就能移植到stm32上面 唯一需要的就是得提供i2c读写接口,然后在 #define i2c_write(a, b, c, d) !I2C_BufferWrite(d, c, b, a) 这里替换 剩下的就是照着范例文件依次调用函数 主要是这几个 mpu_init(); mpu_set_sensors(INV_XYZ_GYRO | INV_XYZ_ACCEL); mpu_configure_fifo(INV_XYZ_GYRO | INV_XYZ_A
[单片机]
mpu6050 DMP库的<font color='red'>移植</font>
手机成功模式难移植 小米电视藏隐忧
小米科技在利用网路行销及高规低价策略于智慧手机市场窜红后,近期更进一步以人民币2,999元的超杀价格进军智慧电视市场,试图复制手机产品的成功模式。不过,由于现阶段小米电视内容仍缺乏独特性,恐难吸引消费者持续埋单。 小米科技自2010年4月成立至今不到4年的时间,其智慧型手机以高性价比优势抢进市场,一举挤入全球前二十大智慧型手机品牌大厂,其创新又独树一格的经营方式,再加上销售成绩亮眼,使小米科技成为大中华区受瞩目之新兴企业。 2013年小米科技相继发布「小米盒子」与「小米电视」,正式进军电视市场,期复制小米手机之成功模式,除抢占客厅娱乐中心要角外,未来甚至可望扩展至智慧家庭应用,为小米开创下一波成长动能。 2013年
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved