FFmpeg
文章平均质量分 94
ericbars
这个作者很懒,什么都没留下…
展开
-
与FFmpeg的初次邂逅
有了FFmpeg的编译环境后,需要来和FFmpeg来一次邂逅了,简单的下载,编译,测试就是本文的目的。原创 2017-04-10 10:53:09 · 2637 阅读 · 2 评论 -
移植ffplay媒体播放器和sdl2到Android平台
前言前述博文《基于FFmpeg和Android的音视频同步播放实现》中,我们按照自己的方法实现了一个简单的媒体播放器,并做了音视频同步。但是这个程序在播放更多码流时,遇到了一些问题,包括视频解码问题,同步时视频卡顿等。我们在博文《在ubuntu16.04下测试ffplay程序》中也测试过ffplay这个强大的播放器,而我们也知道SDL基于Android平台也有支持,所以我们可以将ffplay和...原创 2018-06-25 22:52:27 · 3020 阅读 · 5 评论 -
基于FFmpeg和Android的音视频同步播放实现
前言在以前的博文中,我们通过FFmpeg解码,并基于OpenGL ES完成了视频的渲染,也完成了基于OpenSL ES实现的native音频注入播放。 本文将这两部分代码进行合并,并实现音视频的同步播放。实现需求基于FFmpeg实现视频解码,并通过OpenGL ES进行渲染;基于OpenSL ES进行PCM注入播放;播放时进行音视频同步;关于音视频同步原理本文不...原创 2018-06-23 22:16:57 · 3864 阅读 · 3 评论 -
通过FFmpeg解码和OpenGL的YUV转RGB实现Android视频播放
前言在我的博文 https://blog.csdn.net/ericbar/article/details/80506390 中,我们在Android平台上,实现了通过FFmpeg在native(C/C++)层进行视频解码,并通过OpenGL实现了硬件渲染工作,减少CPU的消耗,提高整个视频播放的性能。 但是,FFmpeg解码后的YUV视频数据,仍然是通过软件方式转成RGB565的,效率极其...原创 2018-05-30 17:21:33 · 3764 阅读 · 1 评论 -
基于FFmpeg解码和OpenGL ES渲染的Android视频播放
前言在我的博文 https://blog.csdn.net/ericbar/article/details/80416328 中,我们在Android平台上,实现了通过FFmpeg在native(C/C++)层进行视频解码,并通过SurfaceView(基于ANativeWindow)实现了图像的显示。 实际上,我们也可以通过OpenGL来进行硬件的渲染工作,减少CPU的消耗,提高整个视频播...原创 2018-05-30 14:36:23 · 9012 阅读 · 10 评论 -
基于FFmpeg和OpenSL ES的Android音频播放器实现
前言在博文https://blog.csdn.net/ericbar/article/details/80509887中,我们实现了通过FFmpeg解码,并基于OpenGL ES完成了视频的渲染。本文我们将基于OpenSL ES完成native音频的注入播放。 OpenSL ES也是The Khronos Group Inc组织制定的一个音频规范,网上资料很多,在Android SDK代码里...原创 2018-06-04 22:15:04 · 1700 阅读 · 4 评论 -
基于ndk-r16b编译Android平台的FFmpeg-3.4.2和FFmpeg-4.0动态库
问题来源基于NDK编译Android平台的FFmpeg动态库,这件事情我们早在去年就做过了,详细的可以参考我的博文: https://blog.csdn.net/ericbar/article/details/76602720, 但是FFmpeg的基线版本以及ndk编译链是不断更新的,近期我打算基于最新的FFmpeg版本和ndk版本编译libffmpeg.so时,又遇到了麻烦,各种编译问题...原创 2018-05-07 19:20:58 · 3179 阅读 · 2 评论 -
FFmpeg庖丁解牛系列之log模块
引子注:本文代码基于FFmpeg-3.4.2av_log日志系统是FFmpeg里最基本的一个模块,主要提供控制台打印输出,与此相关的源文件主要有如下几个:libavutil/log.clibavutil/log.hlibavutil/bprint.clibavutil/bprint.h其中,bprint是底层打印buffer管理,通过av_bprint相关接口将待打印的内...原创 2018-03-28 12:59:50 · 908 阅读 · 2 评论 -
FFmpeg庖丁解牛系列之dict模块
关于dict模块由于C语言不像C++和JAVA,没有key/value键值对的高级实现,所以FFmpeg专门写了一个dict模块(AVDictionary字典)用于简单的key/value存储。dict模块相对比较简单,其代码实现主要位于如下两个文件:libavutil/dict.clibavutil/dict.h我们还是按照套路先分析头文件dict.h的内容。文件开头注释部分首先介...原创 2018-04-10 11:19:48 · 1659 阅读 · 0 评论 -
FFmpeg庖丁解牛系列之option模块
关于option模块option是FFmpeg中另一个很基础的模块,相对于log模块,代码量上要复杂一些。主要代码实现在如下两个文件中:libavutil/opt.clibavutil/opt.h关于AVOptions的介绍,直接参考log.h里的头文件注释吧: AVOptions provide a generic system to declare options o...原创 2018-04-09 23:02:29 · 2871 阅读 · 0 评论 -
至简播放器ffplay工作原理
下载,编译及运行参考博文 http://blog.csdn.net/ericbar/article/details/79382783 即可完成ffplay的基本测试。 如果要进行GDB调试,需要先编译一个带GDB信息的执行文件,编译前修改配置选项,./configure --prefix=ffout --disable-stripping --disable-optimiza...原创 2018-03-13 19:19:43 · 2991 阅读 · 1 评论 -
在ubuntu16.04下测试ffplay程序
下载FFmpeg及SDL源码离上次博文发布已经有一段时间了,这次我们来测试一下强大的FFmpeg播放器程序ffplay,它是FFmpeg原生附带的。 本文编写时,FFmpeg的最新版本是3.4.2,从官网ffmpeg.org上下载ffmpeg-3.4.2.tar.xz源码,通过如下命令解压:tar xvf ffmpeg-3.4.2.tar.xzffplay.c的源码在fftools目...原创 2018-02-26 23:02:53 · 3470 阅读 · 7 评论 -
基于NDK编译Android平台的FFmpeg动态库
需求FFmpeg在Linux平台(如Ubuntu)上的支持已经比较完善了,如前述文章介绍 http://blog.csdn.net/ericbar/article/details/73702061,我们很容易就可以基于FFmpeg+SDL实现一个播放器,比如FFmpeg自带的ffplay程序,就可以实现音视频的解码播放。 现在基于Android手机的媒体应用场景也愈发增多起来,比如流行的直播技术原创 2017-08-03 09:14:59 · 3486 阅读 · 5 评论 -
基于FFmpeg和SDL1.2的极简播放器实现
思路基于FFmpeg写一个播放器,其实十分的简单。实际上,主要是对FFmpeg的API的封装,同时,我们需要将音视频通过主机呈现出来,所以还依赖于平台的SDL库,整体步骤和思路如下: 1. 编译用于音视频解码的FFmpeg库; 2. 编译用于音视频呈现的SDL库; 3. 编写主程序完成对音视频的整个调度过程;编译FFmpeg库这个步骤在《与FFmpeg的初次邂逅》(http://blog.cs原创 2017-06-25 11:17:01 · 1773 阅读 · 3 评论 -
FFmpeg之Hello World
本文基于FFmpeg的库函数实现Hello World的打印输出。原创 2017-04-19 22:54:03 · 1196 阅读 · 0 评论 -
FFmpeg的代码结构和编译系统
介绍FFmpeg的目录结构以及编译系统原创 2017-04-17 22:30:08 · 971 阅读 · 0 评论 -
搭建FFmpeg的编译开发环境(VMware+Ubuntu)
准备工作为了方便学习和研究FFmpeg,我们必须有一个合适的开发试验环境。FFmpeg默认是基于Linux环境来开发的,在类Linux操作系统里,编译会变得更加的简单。如果你对Linux不熟悉,可以参阅相关书籍。 首先,我们需要准备开发环境,一般的,在Windows里安装VMware虚拟机,这里选择安装的是12.5的版本VMware-workstation-full-12.5.1-4542065.原创 2017-04-09 22:09:50 · 1856 阅读 · 1 评论 -
关于FFmpeg里的GPL和LGPL协议
参考博文谢谢博主的分享:http://www.cnblogs.com/findumars/p/3556883.htmlGPL介绍我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代 码做为闭源的商业软件发布和销售。这...转载 2018-07-17 13:54:34 · 24475 阅读 · 4 评论