现在的工作是播放器库的开发,可不是调用iOS系统自带的播放器框架进行一些简单的功能和界面定制,这些没什么含量。涉及iOS开发有3个年头了,现在的工作算是有点含金量了。涉及播放器的开发,FFmpeg的架构和功能是必须清楚的。FFmpeg自带的三个工程:ffplay, ffmpeg, ffprobe。这三个工程的代码量太大,如何切入进去,一窥其中的奥秘为自己所用呢?从核心切入,编码和解码。编码和解码的核心API接口就那十几个,通过这些深入然后剖析源代码,目标就明确了。

  就我个人而言,首先要了解FFmpeg整个的运行机制,哪一部分工作需要调用FFmpeg的哪一块,这个必须清楚。播放器库的开发,解码播放这就是核心,我就需要从FFmpeg的解码流程入手了。FFmpeg源代码结构图 - 解码 这篇文章太好了,看得我两眼放光,精华。这篇文章读透了,完全可以把控FFmpeg的使用。我接下来的学习任务,那就是认真研读和敲代码研习,光看是不顶用的,需要动手写。

  FFmpeg源代码结构图 - 解码 中包含的信息太多了,对于像我这种在音视频领域中的小白来说,首先要看FFmpeg源代码结构图 - 解码中提到的 简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0) 入手。心急吃不了热豆腐,心急就不能静下心来搞懂深层次的问题。我给自己半年的时间,把播放器这套东西搞熟练。

  FFmpeg的解码过程调用的API依次为:

开始---->

av_register_all();

avformat_open_input();

av_find_stream_info();

avcodec_find_decoder();

av_read_frame();

获取到packet---->

avcodec_decode_video2();

  对于FFmpeg的解码流程,先知道了有上面那些方法,但是这些方法是用来做什么,从方法名上能看出其功能,要深入的理解才行。作为小白,我必须借鉴别人的经验,收集有效的资源是非常重要的。对FFmpeg解码流程讲解的比较好的一篇博文是 FFMpeg的解码流程 ,配合文章  ffmpeg解码流程 一起服下,效果更好。因为当当看 简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0) 还不足以搞透整个流程。通过研习这三篇文章,整个流程和方法功能应该就吃透了。

  学习任何东西什么时候该从局部把控全局,那就是有了自己的切入点之后,在这个点上摸爬滚打搞得比较熟练之后,就需要把控全局,对FFmpeg框架的整体要有把控。对于FFmpeg框架讲解的比较好的入门读物是 FFMpeg框架代码阅读

  

笔谈FFmpeg(一)的更多相关文章

  1. 笔谈FFmpeg(二)

    经过前面的学习对FFmpeg的基本流程已经很熟悉了,现在到了掌握其中细节的时候了,用FFmpeg做播放器解码操作中,涉及到了一些结构体,这些结构之间到底有什么关系,它们是怎样协同工作的呢.文章 FFM ...

  2. 笔谈kxmovie开源播放器库的使用

    开源播放器项目 kxmovie(https://github.com/kolyvan/kxmovie),现在仍然是很多刚开始接触播放器开发的程序员的参照范本.以下是我操作kxmovie项目的过程: ( ...

  3. FFmpeg学习6:视音频同步

    在上一篇文章中,视频和音频是各自独立播放的,并不同步.本文主要描述了如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放的.主要有以下几个方面的内容 视音频同步的简单介绍 DTS 和 ...

  4. FFmpeg 中AVPacket的使用

    AVPacket保存的是解码前的数据,也就是压缩后的数据.该结构本身不直接包含数据,其有一个指向数据域的指针,FFmpeg中很多的数据结构都使用这种方法来管理数据. AVPacket的使用通常离不开下 ...

  5. FFmpeg + SoundTouch实现音频的变调变速

    本文使用FFmpeg + SoundTouch实现将音频解码后,进行变调变速处理,并将处理后的结果保存为WAV文件. 主要有以下内容: 实现一个FFmpeg的工具类,保存多媒体文件所需的解码信息 将解 ...

  6. 用ffmpeg快速剪切和合并视频

    如果直接找视频剪切和合并视频的软件,通常出来的都是大的视频编辑软件或者是有图形界面的剪切软件,大型一点的功能太多安装麻烦,小型一点的功能可能不齐全. 只是简单的剪切或者一下合并一下,还是ffmpeg这 ...

  7. ffmpeg用法及如何使用fluent-ffmpeg

    http://ffmpeg.org/ 官网 ffmpeg(命令行工具) 是一个快速的音视频转换工具. 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an o ...

  8. FFmpeg学习4:音频格式转换

    前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式 ...

  9. FFmpeg学习5:多线程播放视音频

    在前面的学习中,视频和音频的播放是分开进行的.这主要是为了学习的方便,经过一段时间的学习,对FFmpeg的也有了一定的了解,本文就介绍了 如何使用多线程同时播放音频和视频(未实现同步),并对前面的学习 ...

随机推荐

  1. powshell 输出字符编码的问题,设置为utf-8

    https://blog.csdn.net/qianxiao_1/article/details/79463409 $PSDefaultParameterValues['Out-File:Encodi ...

  2. easyui 如何为datagrid添加自定义列属性(如:width,align,editor)

    我在实际业务需要为datagrid添加一个自定义属性 原先的datagrid列属性包括:title.width.align.formattter.editor等 我们可以通过datagrid的一个方法 ...

  3. [转]Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

    原文地址:https://blog.csdn.net/qq_27093465/article/details/78544505 遇到这个 Java Serializable 序列化这个接口,我们可能会 ...

  4. 关于idea跳过错误编译的理解, 跳过报错的代码启动项目去debug测试其他正常的代码

    关于idea跳过错误编译的理解 2018年07月13日 19:06:32 weixin_39669410 阅读数 1296   其实idea使用eclipse编译器可以实现跳过报错的代码启动项目去de ...

  5. html页面自适应宽度

    html页面实现响应式的方式有很多,本篇介绍懒人必备一招见效的方法. 在head标签中加入 <meta name="viewport" content="width ...

  6. [Tableau] Tableau for BI

    主要链接 Tableau AWS 上的 Tableau Server Tableau on AWS Quick Starts Tableau教程[本篇来源] Tableau Desktop for U ...

  7. [LeetCode] 34. Search for a Range 搜索一个范围(Find First and Last Position of Element in Sorted Array)

    原题目:Search for a Range, 现在题目改为: 34. Find First and Last Position of Element in Sorted Array Given an ...

  8. python:使用Djangorestframework编写post和get接口

    1.安装django pip install django 2.新建一个django工程 python manage.py startproject cainiao_monitor_api 3.新建一 ...

  9. K8S+GitLab+.net core-自动化分布式部署-1

    K8S+GitLab-自动化分布式部署ASP.NET Core(一) 部署环境 一.部署流程介绍 开发人员通过Git上传asp.net core 项目到Gilab,并编写好.gitlab-ci.yml ...

  10. python 实现微信发送消息

    背景:利用Python来登入你个人的手机微信,之后向朋友发送消息,发送的消息可以来源于网页.下面的例子就是取得当前日元的汇率,之后发送自己的某一个朋友的手机上 环境:Python3,JetBrains ...