对于每一个刚開始学习的人,刚開始接触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. C++第15周(春)项目3 - OOP版电子词典(一)

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序中须要的相 ...

  2. [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 ...

  3. ajax参数中出现空格

    jquery中发起ajax请求时的参数名中不能有空格.如果是get请求参数的中的空格会变成“+”符而在post请求中看不到这种变化,但无论哪种情况都无法与服务接口的参数就行匹配(此时进行调试也不会触发 ...

  4. javascript正则简单入门

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. javascript运动功能-分享到

    <script> //窗体载入,为div控件绑定事件 window.onload = function () { var div1 = document.getElementById('d ...

  6. Qt Creator下载

    Qt官网 http://qt.digia.com qt的历史版本可以到http://download.qt-project.org/archive/qt/下载

  7. (转) launch failed.Binary not found in Linux/Ubuntu解决方案

    原地址: http://blog.csdn.net/abcjennifer/article/details/7573916 Linux下出现launch failed.Binary not found ...

  8. vs2010中出现:程序管理器匹配不正确错误

    http://bbs.csdn.net/topics/360074795 这是一篇csdn上的讨论帖,第15楼给出了正解

  9. php对数组中指定键值排序

    function array_sort($arr,$keys,$type='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k= ...

  10. C++----练习--引用头文件

    1.创建头文件和源文件 touch /tmp/tools.h touch /tmp/main.cpp 2.各文件的内容如下: tools.h #include<iostream> void ...