推荐几个编译雷霄骅 ffmpeg视频教程的好的国外网站

作者:雷霄骅 一个值得怀念的囚

本文汇总一下自己视音频编解码学习方面的开源项目。这些开源项目大体上可以分成专业领域程序雷霄骅 ffmpeg视频教程示例程序,雷霄骅 ffmpeg視频教程移植程序多媒体项目示例程序,视音频编解码原理学习工程几个类别这些类别的详细含义如下所列。

  • 专业领域程序:一些有專业性质的程序
  • 雷霄骅 ffmpeg视频教程示例程序:雷霄骅 ffmpeg视频教程的类库的各种示例程序。
  • 多媒体项目示例程序:除了雷霄骅 ffmpeg视频教程之外其怹多媒体项目的示例程序
  • 视音频编解码学习工程:用于学习视音频编解码原理的示例程序。
下面按照类别分别记录每个项目每个程序嘚介绍分成“简介”,“文章”“项目主页”三个部分:
  • “简介”使用几句简短的话介绍开源项目。
  • “文章”则是我自己写的有关该项目的文章
  • “项目主页”则是该项目的主页地址。
此前一直以SourceForge作为各个项目的主页地址后来受到不少人的建议,将代码在Github上也保存了一份;国内的开源中国的代码托管做的也不错因此也在开源中国上保存了一份代码。此外在SourceForge上做了一个简单的Wiki,在Github上做了一个简单的Blog方便对这两个网站上的项目进行查找和访问。上述三个网站上的项目列表可以通过下列地址访问

专业领域程序指的是主要应用于科学实驗方面的程序。这类程序并不是视音频技术开发必须的主要用于研究工作。

VideoEye是一个开源的实时视频分析的软件本软件可以播放和分析視频数据。它支持多种视频流输入方式:HTTPRTMP,RTSP以及文件等等该软件可以实时分析视频流并能以图形化的方式呈现其分析结果。



本工具用於计算视频的时间信息(TI也称为时间复杂度),以及空间信息(SI也称为空间复杂度),以上两个指标取自于ITU-R BT.1788标准




雷霄骅 ffmpeg视频教程示唎程序是我做的最多的一类程序。这些示例程序展示了利用雷霄骅 ffmpeg视频教程的类库进行视音频程序开发的方法比较适合新手学习雷霄骅 ffmpeg視频教程。目前这些示例程序已经覆盖了从流媒体接收解封装,解码像素转换,编码封装,流媒体发送所有这些流程


雷霄骅 ffmpeg视频敎程示例程序在视频处理的流程中的位置如下图所示。
图中显示了一个完整的视频处理流程按照蓝色箭头指向的顺序,从外部协议接收丅来的数据依次经过解协议解封装,解码像素转换,编码封装,发送这几个步骤这些步骤按照处理数据类型的不同,可以分成几個层次:
  • 协议层(Protocol Layer):该层处理的数据为符合特定流媒体协议规范的数据例如http,rtmpfile等。
  • 封装层(Format Layer):该层处理的数据为符合特定封装格式规范的数据例如mkv,mp4flv,mpegtsavi等。
  • 编码层(Codec Layer):该层处理的数据为符合特定编码标准规范的数据例如h264,h265mpeg2,mpeg4等

下面我们上述几个层次對雷霄骅 ffmpeg视频教程示例程序进行归类。

协议层处理包含以下项目:

封装层处理包含以下项目:

编码层处理包含以下项目:

像素层处理包含鉯下项目:

《雷霄骅 ffmpeg视频教程示例程序合集》可以通过Git批量获取:



下面逐一列出这些项目的信息

最简单的基于雷霄骅 ffmpeg视频教程的视频播放器

本程序实现了视频文件的解码和显示。是最简单的雷霄骅 ffmpeg视频教程视频解码方面的教程通过学习本例子可以了解雷霄骅 ffmpeg视频教程的解码流程。


最简单的基于雷霄骅 ffmpeg视频教程的音频播放器

本程序实现了音频的解码和播放是最简单的雷霄骅 ffmpeg视频教程音频解码方面的教程。通过学习本例子可以了解雷霄骅 ffmpeg视频教程的解码流程



最简单的基于雷霄骅 ffmpeg视频教程的图像编码器

本程序实现了YUV420P像素数据编码为JPEG图片。昰最简单的雷霄骅 ffmpeg视频教程编码方面的教程通过学习本例子可以了解雷霄骅 ffmpeg视频教程的编码流程。


最简单的基于雷霄骅 ffmpeg视频教程的视频編码器

本程序实现了YUV像素数据编码为视频码流(H.265H264,MPEG2VP8等等)。是最简单的雷霄骅 ffmpeg视频教程视频编码方面的教程通过学习本例子可以了解雷霄骅 ffmpeg视频教程的编码流程。

它包含以下两个子项目:



最简单的基于雷霄骅 ffmpeg视频教程的音频编码器

本程序实现了音频PCM采样数据编码为压縮码流(MP3WMA,AAC等)是最简单的雷霄骅 ffmpeg视频教程音频编码方面的教程。通过学习本例子可以了解雷霄骅 ffmpeg视频教程的编码流程


最简单的基於雷霄骅 ffmpeg视频教程的封装格式处理

该解决方案包含了使用雷霄骅 ffmpeg视频教程进行封装格式处理的各种例子:


最简单的基于雷霄骅 ffmpeg视频教程的嶊流器(推送RTMP)

本例子实现了推送本地视频至流媒体服务器(以RTMP为例)。是使用雷霄骅 ffmpeg视频教程进行流媒体推送最简单的教程


最简单的基于雷霄骅 ffmpeg视频教程的AVfilter例子(水印叠加)



本程序是最简单的基于雷霄骅 ffmpeg视频教程的libswscale进行像素处理的示例。它包含了两个工程:



最简单的基於雷霄骅 ffmpeg视频教程的内存读写例子

本程序实现了对内存中的视频数据的读写包含两个工程:

最简单的基于雷霄骅 ffmpeg视频教程的移动端的例孓

本解决方案包含了使用雷霄骅 ffmpeg视频教程在移动端处理多媒体的各种例子:

雷霄骅 ffmpeg视频教程移植程序是将雷霄骅 ffmpeg视频教程项目中的命令行笁具“ffplay”和“雷霄骅 ffmpeg视频教程”的源代码(ffplay.c和雷霄骅 ffmpeg视频教程.c)移植到VC下后编写的程序。移植后的程序保留了原本命令行工具的大部分功能并且使用MFC做了一套界面,使用起来相对方便一些其实相比与实际应用来说,这两个工程更加适合作为学习材料可以通过它们研究播放器,转码器的原理

本工程将雷霄骅 ffmpeg视频教程项目中的ffplay播放器(ffplay.c)移植到了VC的环境下。并且使用MFC做了一套简单的界面



本工程将雷霄驊 ffmpeg视频教程工程中的雷霄骅 ffmpeg视频教程转码器(雷霄骅 ffmpeg视频教程.c)移植到了VC环境下。并且使用MFC做了一套简单的界面

4. 多媒体项目示例程序

除叻做了基于雷霄骅 ffmpeg视频教程的多媒体程序之外,还做了一些基于其他多媒体项目的示例如下文所列。

最简单的视音频播放示例

本工程包含了使用各种API(Direct3DOpenGL,GDIDirectSound,SDL2)播放多媒体例子其中音频输入为PCM采样数据。输出至系统的声卡播放出来视频输入为YUV/RGB像素数据。输出至显示器上的一个窗口播放出来

通过本工程的代码初学者可以快速学习使用这几个API播放视频和音频的技术。一共包括了如下几个子工程:

该解決方案包含了几个常见的编码器的使用示例:


最简单的基于librtmp的示例

本工程包含了LibRTMP的使用示例包含如下子工程:

最简单的基于libVLC的例子

本工程是包含了一些基于libVLC的示例程序。一共包含了如下几个子程序


本程序包含了DirectShow开发的示例程序。适合DirectShow初学者进行学习

它包含了以下几个孓程序:


5. 视音频编解码学习工程

视音频编解码学习工程主要用于学习编解码的原理。这几个工程都是简单的“码流分析”工具他们可以汾析不同格式的多媒体数据:TS封装格式,FLV封装格式H.264码流,AAC码流JPEG压缩图片。

这几个程序我完成的比较早是我在学习视音频技术初期边看理论边实践着做出来的。因此功能上还有一些不足一直也没有时间修正,有时间再把它们统一更新一下



一些不是使用C/C++写的流媒体相關的工程。


 最简单的基于Flash的流媒体示例

本程序是一个Flash流媒体示例的合集其中包含了使用Actionscript编写的推流器和播放器,以及网页播放器本工程包含如下基于Flash技术的流媒体的例子:


7. 附录:程序汇总表

包括了如下几个子工程:
包括了如下几个子工程:
包括了如下几个子工程:
包括叻如下几个子工程:
包括了如下几个子工程:
包括了如下几个子工程:
4. 多媒体项目示例程序
包括了如下几个子工程:
包括了如下几个子工程:
包括了如下几个子工程:
包括了如下几个子工程:
包括了如下几个子工程:
5.视音频编解码学习工程
}
  • 14:带前缀的NAL单元

  • 19:不采用数据划汾的辅助编码图像片段


上一阶段视频码流解析告一段落上一段的程序主要实现了:从H264视频原始码流中提取NALU单元,并简单的解析NALU首部的字段它的类型,程序稍后加上

下一阶段主要学习AAC音频码流解析,得到它的基本单元ADTS frame以及简单解析基本单元ADTS frame首部的字段

2.每个ADTS frame单元之间通過同步字(sync word)进行分隔,同步字为0xFFF二进制为:“11”。

3.AAC码流解析的步骤就是:先搜索同步字分离出ADTS frame单元,再解析ADTS frame首部的各个字段

4.对关於音频码流的一些基本知识的普及:

Audio Coding,高级音频编码是基于MPEG-2的音频编码技术。

AAC原始码流是由一个个的ADTS frame组成每个ADTS frame之间通过同步字进行分隔,同步字为0xFFF二进制为“11”。

AAC音频码流解析的步骤是:首先从码流中搜索0xFFF分离出ADTS frame,再解析ADTS frame首部的各个字段

ADTS头中有用的信息:采样率,声道数帧长度。

一般ADTS_Header的头信息都是7个字节分为两部分:




    将AAC ES流打包成ADTS格式,实际上就是在AAC原始流前面加上ADTS头就行了

    //最近感冒很严重,流行感冒还打了针吃了药,所以中间间断了


}

我要回帖

更多关于 雷霄骅 ffmpeg视频教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信