FFMPEG在嵌入式硬件上应用之——基本环境搭建及编译

这篇文章是以前工作的一些实际经验总结,这里给大家分享一下,顺便做了一下记录以备以后使用时参考,本文(记录)与目前网上很多关于ffmpeg的文章相比有两个特点:

  • 重点不在于ffmpeg的解码部分(这个本来是ffmpeg最大的亮点),为什么?前面说了,这是我以前工作的一个整理。况且关于ffmpeg的解码相关文章非常多了,如果大家感兴趣的话,可以后面第五部分增加吧。
  • 本文是不采用其他第三方的开源多媒体框架而在嵌入式硬件上做多媒体播放项目。第三方的多媒体框架软件隐藏了一些扩展数据的关键处理,很多初学者可能不清楚这些细节问题,所以当ffmepg在自己的解码移植上没有问题,真正在用嵌入式硬件进行解码时会遇到这种问题。

本文将分篇来完成,每篇只力求把基本和重要的点讲述清楚,其他细节和不重要的就不详细描述,具体真实应用在此基础上展开细化应该不难实现一个基本基于ffmpeg的嵌入式播放器的需求。文章具体分篇如下:

  1. FFmpeg基本环境搭建及编译
  2. FFmpeg的解封装基本处理
  3. FFmpeg用于硬件设备解码的关键扩展数据处理
  4. FFmpeg用于硬件的trackmode基本控制
  5. 根据情况吧。。。。。。

一、虚拟机安装

由于是在自己家里,不是工作环境,电脑还是装的windows7系统,于是开始安装虚拟机,我平时一直都喜欢用VMWare这个虚拟机,上次买了新电脑后一直都没有安装,这次必须先安装上。先是安装了最新的VMWare Workstation 11 + Ubuntu14.04,发现跑起来巨慢无比,难道是我的电脑落伍了?没有办法,也不想去折腾这个事情,还是老老实实换了一个VMWare Workstation 10.0.1 build-1379776 + Ubuntu-12.04.4-alternate-i386,最好跑起来还凑合。具体虚拟机和Ubuntu的安装过程就不详述了,网上文章一大堆。

二、配置并编译

下载最新版本的ffmpeg,目前稳定版本是ffmpeg-2.6.1。进入虚拟机在windows共享目录上解压:

配置:

然后进行make编译,最后出现错误:

原来忽略了直接在windows的共享目录中,解压到Linux目录中便不会出现这个问题了。这是因为在编译动态库时,会生成链接文件,在windows下会失败。当然如果我们编译的不是共享库,而是静态库,也不会出现这个问题,因为没有Linux的链接文件。

在Linux目录下,编译成功,生成我们的动态库:

这样我们生产了我们需要的库和头文件。

大家可能糊涂了,我现在是在pc上编译的,不能用于嵌入式设备上。这个我知道,没有办法,现在我已经没有以前的那些ARM的编译环境。大家如果是在实际的交叉环境下,配置ffmpeg的configure时指定交叉编译参数,估计大概如下面的配置:

./configure --prefix=./install --disable-static --enable-shared--enable-gpl --enable-pthreads --cross-prefix=arm-none-linux-gnueabi---enable-cross-compile --target-os=linux --extra-cflags="-mcpu=arm9 -W-Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -O2 -Wall"--arch=armv4l --cpu=arm9

根据项目的具体需求,比如用嵌入式硬件解码的话,decoder,encoder等等很多都不需要编译进去,对于不需要支持的container,也可以在配置里面进行”私人定制“,定制方法请输入

./configure --help

进行查看,网上也有很多可查,这些就是根据具体的环境修改了。这里就不多说,限于环境,本文只有在PC上来讲解,希望读者见谅。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-03-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏京东技术

99%的人都理解错了HTTP中GET与POST的区别

1882
来自专栏魏艾斯博客www.vpsss.net

腾讯云重装系统详细操作图文过程

上次写魏艾斯博客重做腾讯云服务器系统的流水账,有朋友反映说太过于简短了,没看懂怎么操作。OK 今天魏艾斯博客就通过图文方式把整个操作过程详细讲解一下,希望帮到刚...

3.4K6
来自专栏王亚昌的专栏

vmstat命令详解与举例

[root@localhost ~]# vmstat -n 3       (每个3秒刷新一次) procs -----------memory-------...

771
来自专栏ThoughtWorks

如果有10000台机器,你想怎么玩?(一)概述 | TW洞见

今日洞见 文章作者来自ThoughtWorks:高清华。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网站或个...

2816
来自专栏IT笔记

讯飞语音JavaWeb语音合成解决方案

在线语音合成 将文字信息转化为声音信息,给应用配上“嘴巴”。我们提供了众多极具特色的发音人(音库)供您选择。其合成音在音色、自然度等方面的表现均接近甚至超过了人...

44214
来自专栏北京马哥教育

快看!原来他一直早下班是因为这十三类100个常用Linux基础命令

本文由马哥教育面授班22期学员推荐,转载自简书,作者为志朋,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。 某一天课间,有人提问老师:运...

37013
来自专栏大魏分享(微信公众号:david-share)

你见过基于纯开源的超融合(HCI)么?

前言: 本文是基于笔者个人的实践,不代表任何官方的观点。 超融合的概念,近两年确认非常火。实际上,超融合架构起初是受到 Google、Faceb...

3903
来自专栏FreeBuf

渗透测试专用版Linux:BackBox3.13发布

BackBox团队近日很高兴地宣布Linux的更新版本,版本3.13。BackBox是基于Ubuntu的Linux发行版本,它被用于网络渗透测试及安全评估。 更...

1908
来自专栏美团技术团队

分布式会话跟踪系统架构设计与实践

美团点评技术沙龙由美团点评技术团队主办,每月一期。每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 目前沙龙会分别在北...

4046
来自专栏微信音视频小程序

教你从0到1搭建小程序音视频

升级微信到最新版本,发现页卡 => 小程序 => 搜索“腾讯视频云”,即可打开小程序Demo:

1K3

扫码关注云+社区