FFMPEG 编译与移植

(1)FFMPEG下载

svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpegs

(2)FFMPEG x86 平台编译安装

进入ffmpeg 目录

#./configure --prefix=/usr

#make

#make install

(3)FFMPEG 移植ARM(S3C2410)平台

a.修改ffmpeg/libavcodec/armv4l/dsputil_arm_s.S文件

--- armv4l/dsputil_arm_s.S (revision 8264)

+++ armv4l/dsputil_arm_s.S (working copy)

@@ -19,6 +19,10 @@

@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

@+.macro pld arg+

@+.endm+.macro ADJ_ALIGN_QUADWORD_D shift, Rd0, Rd1, Rd2, Rd3, Rn0, Rn1, Rn2, Rn3, Rn4

mov \Rd0, \Rn0, lsr #(\shift * 8)

mov \Rd1, \Rn1, lsr #(\shift * 8)

注意:pld 这条指令好像是ARM5TE里面的指令,而S3C2410是貌似不支持这条指令。

b.修改libavcodec/armv4l/dsputil_arm.c

//extern void simple_idct_armv5te(DCTELEM *data);

//extern void simple_idct_put_armv5te(uint8_t *dest, int line_size,

//                                    DCTELEM *data);

//extern void simple_idct_add_armv5te(uint8_t *dest, int line_size,

//                                    DCTELEM *data);

//extern void ff_simple_idct_armv6(DCTELEM *data);

//extern void ff_simple_idct_put_armv6(uint8_t *dest, int line_size,

//                                     DCTELEM *data);

//extern void ff_simple_idct_add_armv6(uint8_t *dest, int line_size,

//                                     DCTELEM *data);

将以上这些声明注释掉,编译的时候要把ARMV5TE和ARMV6 disable掉。所以这

几个函数所在的汇编文件不会编译。

c.配置,编译

#./configure --cross-prefix=armv4l-unknown-linux- --prefix=/usr --cross-compile --arch=armv4l --target-os=arm-linux --enable-static --enable-shared --disable-ffserver --disable-ffplay --disable-mmx --disable-ipv6 --disable-iwmmxt --disable-strip --disable-armv5te --disable-armv6

#make

#make install DESTDIR=/root/ffmpeg/install

FFMPEG相关的头文件,库文件都在/root/ffmpeg/install目录下。将lib里面的动态连接库拷贝到开发板的/mnt/yaffs/lib目录下。

d.FFMPEG库的使用

FFMpeg 中比较重要的函数以及数据结构如下:

1. 数据结构:

(1) AVFormatContext

(2) AVOutputFormat

(3) AVInputFormat

(4) AVCodecContext

(5) AVCodec

(6) AVFrame

(7) AVPacket

(8) AVPicture

(9) AVStream

2. 初始化函数:

(1) av_register_all()

(2) avcodec_open()

(3) avcodec_close()

(4) av_open_input_file()

(5) av_find_input_format()

(6) av_find_stream_info()

(7) av_close_input_file()

3. 音视频编解码函数:

(1) avcodec_find_decoder()

(2) avcodec_alloc_frame()

(3) avpicture_get_size()

(4) avpicture_fill()

(5) img_convert()

(6) avcodec_alloc_context()

(7) avcodec_decode_video()

(8) av_free_packet()

(9) av_free()

4. 文件操作:

(1) avnew_steam()

(2) av_read_frame()

(3) av_write_frame()

(4) dump_format()

5. 其他函数:

(1) avpicture_deinterlace()

(2) ImgReSampleContext()

(落鹤生)

armv4l-unknown-linux-gcc下载,FFMPEG S3C2410上的交叉编译 armv4l-unknown-linux-gcc(2.95)相关推荐

  1. Linux程序下载到板子上,uclinux系统移植到bf561板子上过程

    uclinux系统移植 主要工作包括: 1.选择处理器对应的交叉编译器(交叉编译器,运行于通用机上,目的为了编译出能够在特定平台上运行的软件) 2.选择并修改bootloader 3.修改链接文件,定 ...

  2. win10中linux系统下载软件,win10 上安装 Debian Linux子系统

    Win10 最近有了一个行的称号: 最强Linux发行版,为什么会有这么一个称号呢,因为win10的子Linux系统已经让win10集成了linux系统,应用商店里也已经上架了多种linux的发行版. ...

  3. 怎么通过硬盘装linux系统文件下载,通过硬盘上的镜像文件安装Linux操作系统

    关于,在不是用光驱情况下安装Linux方法 通过硬盘上的镜像文件安装Linux操作系统 如何在没有光驱.没有软驱.不能usb启动的情况下,进入dos硬盘安装linux系统?(当然,前提是已经有一个wi ...

  4. linux centos8下载,在Centos8上安装和使用curl

    导读 curl是用于从远程服务器传输数据或向远程服务器传输数据的强大 行工具. 使用curl可以使用各种网络协议(例如HTTP,HTTPS,SCP,SFTP和FTP)下载或上传数据. 如果在尝试下载带 ...

  5. w311m linux驱动下载,腾达(Tenda)W311M V3.0网卡驱动(LINUX)

    这是腾达(Tenda)W311M V3.0网卡驱动(LINUX)下载,支持Soft AP功能. 软件说明 支持Soft AP功能. 硬件介绍 W311M是一款采用11N无线技术,无线传输速率达150M ...

  6. linux 串口波特率失败,串口上不常见的波特率 - Linux

    我正在尝试制作一个程序来读取串口.在这个端口上,我收到波特率为875000的数据.这种情况并不常见,我没有成功修改它.我做了一个小C程序来做到这一点,但它不适用于875000 ...这里的代码的一部分 ...

  7. linux下 ftp登陆不上,ftp无法连接登录linux的解决方法

    1.首先安装vsftpd 命令:yum -y install vsftpd 之后开启服务:service vsftpd start 2.关闭防火墙 1) 重启后生效 开启:chkconfig ipta ...

  8. linux软件手机下载,linux软件下载

    手机评站网今天精心准备的是<linux软件下载>,下面是详解! linux怎么安装软件 希望能帮助我操作一下... 希望能帮助我操作一下 1.打开系统,可以看到桌面,找到软件中心,打开软件 ...

  9. ffmpeg编译gb28181_RTSP/GB28181协议/海康SDK/Ehome协议视频上云网关EasyCVR视频平台在linux环境下ffmpeg源码单步调试环境搭建...

    目前TSINGSEE青犀视频研发的视频上云服务平台EasyCVR已经可集成海康EHome私有协议,并且在前文中我也跟大家讲过EHome协议的配置和调用流程,有兴趣的可以阅读一下:配置及协议介绍.Eho ...

最新文章

  1. C# Aop简单扫盲及ORM实体类属性拦截示例
  2. Laravel的初始化安装
  3. ansible基本操作
  4. 【Linux 内核】线程调度示例一 ② ( 获取指定调度策略的最大和最小优先级 | 代码示例 )
  5. hdu oj1093题解
  6. 全球与中国压延铜箔市场发展调研及投资前景战略建议报告2022-2028年版
  7. mysql 5.x数据库安装_手把手教你进行Mysql5.x版本的安装及解决安装过程中的bug
  8. 晕,我的VBSCRIPT语法还没过关
  9. Adaboost、RandomFrest、GBRT的区别
  10. 简约不简单的单例模式
  11. 边框border(HTML、CSS)
  12. IE8安装flash插件
  13. 漏洞:互联网时代的阿喀琉斯之踵 挖掘漏洞哪家强?
  14. Win10卸载KB5014699补丁教程
  15. IE11 与 XPath
  16. mybatis大于小于等于的写法
  17. Ubuntu图形界面下命令行窗口打开快捷键创建
  18. 原码一位乘法(2020-03-27)
  19. 由Intel和Microsoft双双落马所想到的
  20. 从分手的挽回成功的真实经历

热门文章

  1. WaitForSingleObject 与 EnterCriticalSection 性能比较
  2. 看看我们以后谁混得好
  3. 用JS+HTML结合ASP.NET Core Web API给ASP.NET写一个基于Token的登录认证功能
  4. Javascript偏函数与柯里化
  5. golang grpc
  6. 电商ERP系统可以为企业带来什么
  7. 水平排列元素的底部对齐
  8. POJ 3403 Bloody Mary 再想想
  9. 记录-获取验证码失败-查找bug过程
  10. sublime Text 注释乱码解决