前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了。今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家分享一下,顺便做了一下记录以备以后使用时参考。

本文(记录)与目前网上很多关于ffmpeg的文章相比有两个特点:

一、重点不在于ffmpeg的解码部分(这个本来是ffmpeg最大的亮点),为什么?前面说了,这是我以前工作的一个整理。况且关于ffmpeg的解码相关文章非常多了,如果大家感兴趣的话,可以后面第五部分增加吧。

二、本文是不采用其他第三方的开源多媒体框架而在嵌入式硬件上做多媒体播放项目。第三方的多媒体框架软件隐藏了一些扩展数据的关键处理,很多初学者可能不清楚这些细节问题,所以当ffmepg在自己的解码移植上没有问题,真正在用嵌入式硬件进行解码时会遇到这种问题。

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

(一)   FFmpeg基本环境搭建及编译

(二)   FFmpeg的解封装基本处理

(三)   FFmpeg用于硬件设备解码的关键扩展数据处理

(四)   FFmpeg用于硬件的track mode基本控制

(五)   根据情况吧。。。。。。

一、虚拟机安装

由于是在自己家里,不是工作环境,电脑还是装的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。进入虚拟机解压:

配置:

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

原来忽略了直接在windows的共享目录中,解压到Linux目录中便不会出现这个问题了。当然如果我们编译的不是共享库,而是静态库,也不会出现这个问题,因为没有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

当然这些既是根据具体的环境修改了。这里就不多说,本文只有在PC上来讲解。

转载请注明出处:谢谢合作!

第一时间获得博客更新提醒,以及更多技术信息分享,欢迎关注个人微信公众平台:程序员互动联盟(coder_online),扫一扫下方二维码或者搜索微信号coder_online即可关注,我们可以在线交流。

FFMPEG在嵌入式硬件上应用之 —— 基本环境搭建及编译的更多相关文章

  1. FFMPEG高级编程第一篇:环境搭建及编译

    前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了.今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家 ...

  2. 【转】Linux(ubuntu14.04)上编译Android4.4源码的环境搭建及编译全过程

    原文网址:http://jileniao.net/linux-android-building.html sublime text让我伤心.本来很信任sublime text的自动保存功能,之前使用一 ...

  3. 【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

    [零基础学习FreeRTOS嵌入式系统]之一:FreeRTOS环境搭建 一:FreeRTOS系统下载 在官网上https://www.freertos.org/,找到下载入口. 或直接进入下载地址ht ...

  4. Linux系统在嵌入式硬件上的移植

    =========================        基本常识       ========================= 一. Linux系统的基本构成: 1. loader 2.  ...

  5. MAC上python+Eclipse+pydev环境搭建

    转自:http://www.cnblogs.com/Bonker/p/3584707.html 本文重点介绍使用Eclipse+pydev插件来写Python代码,  以及在Mac上配置Eclipse ...

  6. github上DQN代码的环境搭建,及运行(Human-Level Control through Deep Reinforcement Learning)conda配置

    最近师弟在做DQN的实验,由于是强化学习方面的东西,正好和我现在的研究方向一样于是我便帮忙跑了跑实验,于是就有了今天的这个内容. 首先在github上进行搜寻,如下图: 发现第一个星数最多,而且远高于 ...

  7. 菜鸟宝典之Windows Server 2012 R2上PHP、MySQL环境搭建

    原文来自:https://www.jb51.net/article/59280.htm 上车准备一.准备工具服务器操作系统:Windows Server 2012PHP版本:5.6.9(根据自己需要) ...

  8. Github上的原文XMPP环境搭建步骤,英语能力差不多的可以看看

    Getting started using XMPPFramework on iOS Here is a post on StackOverflow describing how to install ...

  9. 嵌入式开发之zynq——zynq开发环境搭建

    http://blog.csdn.net/shushm/article/details/51728690 http://www.cnblogs.com/fpga/p/4593602.html http ...

随机推荐

  1. pushState、replaceState、onpopstate 实现Ajax页面的前进后退刷新

    使用Ajax可以异步获取数据,可以更高效地渲染页面. 但也存在这一些问题: 再刷新页面,页面就会变成初始的状态 浏览器的前进后退功能无效 对搜索引擎的爬虫抓取不友好 1. 早前会使用浏览器的 hash ...

  2. 如何在ASP.NET的web.config配置文件中添加MIME类型

    常常有一些特殊的MIME类型是IIS中没有的,一般来说要我们自己手动添加.如果网站经常更换服务器或者网站代码是提供给多个用户使用,那么会造成网站中用到的特殊的MIME类型要经常性的在IIS上配置.这里 ...

  3. sqlserver 时间格式函数详细

    一.时间函数 在使用存储过程,sql函数的时候,会遇到一些对时间的处理.比如时间的获取与加减.这里就用到了sql自带的时间函数.下面我列出这些函数,方便日后记忆,使用. --getdate 获取当前时 ...

  4. .net中创建xml文件的两种方法

    .net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...

  5. Asp.Net Core子应用由于配置中重复添加模块会引起IIS错误500.19

    ASP.NET Core已经从IIS中解耦,可以作为自宿主程序运行,不再依赖IIS. 但我们还是需要强大的IIS作为前置服务器,IIS利用httpPlatformHandler模块来对后台的一些web ...

  6. php中导入导出excel的原理

    在php中我们要经常导入导出excel文件,方便后台管理.那么php导入和导出excel的原理到底是什么呢?excel分为两大版本excel2007(后缀.xlsx).excel2003(后缀.xls ...

  7. 12、ASP.NET MVC入门到精通——HtmlHelper

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 HtmlHelper:是为了方便View的开发而产生 HtmlHelper的演变 普通首页超级链接为:<a href="/h ...

  8. IP地址分类

  9. ADO.NET 中的新增功能

    ADO.NET 中的新增功能: .NET Framework (current version) 以下是 .NET Framework 4.5 中 ADO.NET 的新增功能. SqlClient D ...

  10. 移动端全兼容的flexbox速成班

    说起flexbox,都算是件陈年旧事了,它是2009年W3C提出的一种全新的可伸缩的CSS布局方式.依赖flexbox,我们可以更简单,高效的完成可伸缩式页面的布局. 业界与flexbox的相关教程文 ...