对于每一个刚開始学习的人,刚開始接触ffmpeg时,想必会有三个问题最为关心,即ffmpeg是什么?能干什么?怎么開始学习?本人前段时间開始接触ffmpeg,在刚開始学习过程中。这三个问题尤其最后一个问题着实困扰了我一下。如今将我对ffmpeg的一点理解分享出来。希望对正在学习ffmpeg编程的同学有帮助。

       1. ffmpeg是什么?
       (1)你能够把ffmpeg理解成一套音视频解决方式。而且还是免费、开源、跨平台的解决方式。它提供了录制、转换以及流化音视频等等功能。

同一时候还包括了很先进的音频/视频编解码库,这样使用ffmpeg能够对採集的原始音视频进行编码存储,或者将已有的音视频文件解码播放。这里简单提一下,ffmpeg中视频h264编码依赖x264第三方视频编码库,音频MP3编码依赖lame mp3第三方编码库。

       (2)同一时候。ffmpeg更是一组使用c语言开发的开源程序,与许很多多的开源程序一样。它有自己的社区、有活跃的维护者。尤其是近2年。版本号更新非常快。差点儿相同每一个月都有更新。打开ffmpeg源文件,看到成千上万行的c代码。在佩服作者的聪明才智同一时候。也不禁为自己的智商捉急。看到源文件。也就能够了解ffmpeg api的实现细节。这样就能够依照自己的需求进行改动,实现一个定制版的ffmpeg。当然。走到这一步还是须要点功夫的。从本人的学习过程来看,别说改动ffmpeg,刚開始面对ffmpeg一堆api,真是一头雾水,无从下手,后面会讲怎样学习ffmpeg。
       2. ffmpeg能干什么?
       (1)你能够下载安装ffmpeg,例如以下图所看到的,然后在控制台命令行中输入ffmpeg相关命令,这样就能够实现播放歌曲、视频。甚至通过命令实现对音视频文件转换、混合、剪辑等各种复杂处理。这样的ffmpeg使用情景在server端比較多。相信非常多视频类站点都架设了基于ffmpeg的流媒体server,比方给server上保存的视频加个水印,尽管我没搞过,但相信就是一组命令的事吧。
                                          

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3JhZng=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

       (2)你还能够下载ffmpeg源代码,例如以下图所看到的,在windows平台、android平台等各种平台下编译ffmpeg源代码,以获取不同平台下ffmpeg静态库或者动态库。供自己的程序调用,以实现基于ffmpeg的音视频编解码等程序开发。这样的ffmpeg使用情景在client比較多,比方短视频类app应用《微视》,它的音视频编解码工作就是调用ffmpeg完毕的。当然,我最近正在搞的短视频类app应用编解码也是调用ffmpeg完毕的。


       3. 怎样学习ffmpeg?
       在网上搜索ffmpeg的学习资源,大体能够搜出两大类,一个是ffmpeg相关命令学习资料,也就是上一节中提到的在server端安装ffmpeg。然后通过命令的方式调用ffmpeg完毕音视频转换、转播等工作。这方面资料较多。另外因为本人没深入去研究这些命令使用方法,这里就不多讲了。还有一个就是ffmpeg api学习资料,api学习资料要比前者偏少些。对于ffmpeg api学习,在网上查来查去。回过头会发现最好的入门学习资料事实上是源代码doc/examples文件下的几个程序。这几个程序都是独立的demo演示样例程序。分别实现了媒体文件打开、音视频混合、音视频编解码等等基础且常见的功能,通过分析这几个demo演示样例程序,会逐渐掌握ffmpeg的api使用方法。这几个demo演示样例程序每一个文件大小不一样。推荐从体积最小的文件看起,即代码行数最少,这样也不会产生望而生畏的心态了。当然,仅仅分析源代码是远远不够的。还须要把这些demo执行起来,这样才干对ffmpeg的參数及调用逻辑有更深入的了解。后面会讲讲怎样在windows环境下搭建ffmpeg开发环境。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3JhZng=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">



ffmpeg学习笔记的更多相关文章

  1. ffmpeg学习笔记-多线程音视频解码

    之前的视频解码仍然存在问题,那就是是在主线程中去完成解码的,会造成线程阻塞,这里将其改为多线程解码,使其主线程不被阻塞 前面介绍了音视频的主线程解码,那样会阻塞主线程,在前面学习了多线程以后,就可以对 ...

  2. ffmpeg学习笔记-编译脚本

    之前已经用他人的编译脚本对ffmpeg进行了成功编译,那么在裁剪ffmpeg的时候需要指定文件,这时候应该怎么编写编译脚本呢?本文目的在于说明ffmpeg编译脚本的编写 首先在ffmpeg的目录下新建 ...

  3. ffmpeg学习笔记-音频播放

    前文讲到音频解码,将音频解码,并且输入到PCM文件,这里将音频通过AudioTrack直接输出 音频播放说明 在Android中自带的MediaPlayer也可以对音频播放,但其支持格式太少 使用ff ...

  4. ffmpeg学习笔记-音频解码

    在之前的文章已经初步对视频解码有个初步的认识了,接下来来看一看音频解码 音频解码步骤 音频解码与视频解码一样,有者固有的步骤,只要按照步骤来,就能顺利的解码音频 以上是ffmpeg的解码流程图,可以看 ...

  5. ffmpeg学习笔记-native原生绘制

    上次已将ffmpeg的动态库编译出来了,并且使用了ffmpeg的转码功能,成功将mp4格式视频转化为yuv视频,这篇文章基于上次测试的demo,使用surfaceview显示解码完成的像素数据 布局设 ...

  6. ffmpeg学习笔记-Linux下编译Android动态库

    Android平台要使用ffmpeg就需要编译生成动态库,这里采用Ubuntu编译Android动态库 文件准备 要编译生成Android需要以下文件 NDK ffmpeg源代码 NDK下载 NDK可 ...

  7. ffmpeg学习笔记-ffmpeg在VS下的运用

    ffmpeg官网提供了window平台下额开发工具供开发者使用,这篇文章主要以3.2版本的ffmpeg作为演示,记录在VS2013下,怎么去编译ffmpeg 下载 在官网中,按照以下步骤下载 下载Wi ...

  8. ffmpeg学习笔记-初识ffmpeg

    ffmpeg用来对音视频进行处理,那么在使用ffmpeg前就需要ffmpeg有一个大概的了解,这里使用雷神的ppt素材进行整理,以便于复习 音视频基础知识 视频播放器的原理 播放视频的流程大致如下: ...

  9. FFmpeg学习笔记之安装

    本随笔原文出自:一叶知秋0830链接:https://www.jianshu.com/p/ab469a2ffd28 1.下载FFmpeg 先进入要存放下载文件的目录,比如要放在/Users/qinji ...

随机推荐

  1. 在WebBrowser中执行javascript脚本的几种方法整理(execScript/InvokeScript/NavigateScript) 附完整源码

    [实例简介] 涵盖了几种常用的 webBrowser执行javascript的方法,详见示例截图以及代码 [实例截图] [核心代码] execScript方式: 1 2 3 4 5 6 7 8 9 1 ...

  2. 自增运算a++和++b(1)

    #include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar code f[]={0x3f,0 ...

  3. [Python学习笔记][Python内置函数]

    Python 常用内建函数 比较基础的列表 abs(x) 求绝对值 pow(x,y) 返回x的y次方,等同于x**y round(x[,小数位数]) 对x进行四舍五入,若不指定位数,则返回整数 chr ...

  4. iOS archive(归档)的总结

    http://www.cnblogs.com/ios8/p/ios-archive.html

  5. Webfrom基础知识

    MyBeNASP.NET内置对象 (1)简述ASP.NET内置对象. 答:ASP.NET提供了内置对象有Page.Request.Response.Application.Session.Server ...

  6. Struts 2读书笔记-----Action访问Servlet API

    Action访问Servlet API Struts2中的Action并没有和任何Servlet API耦合,这样框架更具灵活性,更易测试. 对于Web应用的控制器而言,不访问ServletAPI是几 ...

  7. mysql trigger 权限的说明

    普通用户在创建trigger时会遇到的问题: 1.如果开启了二进制日志,但是用户没有supper 权限:那么他在创建trigger 时会提示设置log_bin_trust_function_creat ...

  8. LINUX SSH客户端的中文乱码问题

       原因在于文件/etc/sysconfig/i18n 这个文件是系统的区域语言设置, i18n是 国际化internationalization的缩写 i和n之间正好18个字母 解释: LANG= ...

  9. Backbone案例的初略理解

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/monw3c-logs/217636180.html 先说一下Backbone的执行顺序: ...

  10. BZOJ 1086 王室联邦

    http://www.lydsy.com/JudgeOnline/problem.php?id=1086 思路:贪心,每次当储存的儿子大于等于B时,分出一个块,这样每次每个块至多为2B,这样剩下的没有 ...