对于每一个刚開始学习的人,刚開始接触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. Linux正則表達式-反复出现的字符

    星号(*)元字符表示它前面的正則表達式能够出现零次或多次.也就是说,假设它改动了单个字符.那么该字符能够在那里也能够不在那里,而且假设它在那里,那可能会不止出现一个.能够使用星号元字符匹配出如今引號中 ...

  2. [转]Laravel 4之控制器

    Laravel 4之控制器 http://dingjiannan.com/2013/laravel-controller/ 控制器 通常Laravel控制器文件放在app/controllers/目录 ...

  3. [ReactJS] DOM Event Listeners in a React Component

    React doesn't provide the listener to listen the DOM event. But we can do it in React life cycle: So ...

  4. [Cycle.js] Hello World in Cycle.js

    Now you should have a good idea what Cycle.run does, and what the DOM Driver is. In this lesson, we ...

  5. Duanxx的STM32学习: STM32的存储映射

  6. FlashbackQuery:SCN与timestamp示例

    Flashback QueryFlashback 是ORACLE 自9i 就开始提供的一项特性,在9i 中利用oracle 查询多版本一致的特点,实现从回滚段中读取表一定时间内操作过的数据,可用来进行 ...

  7. 几句话弄清楚Java参数传值还是传引用

    最近刷题做了一些算法题,对于在递归函数调用的时候什么时候传入值,什么时候传入引用有疑问,在网上搜索了一下,得出了一下三条总结: 1.对象就是传引用 2.原始类型就是传值 3.String,Intege ...

  8. OD调试2---TraceMe

    OD调试2---TraceMe 拆解一个Windows程序要比拆解一个DOS程序容易得多,因为在Windows中,只要API函数被使用,想对寻找蛛丝马迹的人隐藏一些东西是比较困难的.因此分析一个程序, ...

  9. 初学者的jquery登录注册和弹窗设计

    初次学习前端,接触到jquery,写了一个简单的注册账号, 并判断输入内容是否符合命名规则的页面效果如下: 首先创建html,js文件 在做页面布局之前还要连接js文件,然后开始布局自己的页面效果 i ...

  10. BestCoder Round #36 (hdu5198)Strange Class(水题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Strange Class Time Limit: 2000/1000 MS (J ...