自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

雷霄骅(leixiaohua1020)的专栏

一个广院工科生的视音频技术笔记

  • 博客(965)
  • 资源 (183)
  • 论坛 (3)
  • 收藏
  • 关注

原创 视频编码器评测系统:VideoCodecRank

视频编码器领域一直有个比较复杂的问题:mpeg2、divx、xvid、mpeg4、vp8、vp9、x264、openh264、x265等等这一系列编码器到底哪个好?而对于同一种视频编码器,又包括了各种各样的参数配置,这些配置对视频编码器的影响又是怎样的?为了研究这个问题,我和师弟们在课余时间开发了一个软件系统,专门用于评价视频编码器的性能。

2015-07-04 13:49:16 51293 243

原创 我的开源视音频项目汇总

本文汇总一下自己视音频编解码学习方面的开源项目。这些开源项目大体上可以分成专业领域程序,FFmpeg示例程序,FFmpeg移植程序,多媒体项目示例程序,视音频编解码原理学习工程几个类别。

2015-01-13 01:17:34 119632 289

原创 开源实时视频码流分析软件:VideoEye

本文介绍一个自己做的码流分析软件:VideoEye。为什么要起这个名字呢?感觉这个软件的主要功能就是对“视频”进行“分析”。而分析是要用眼睛来看的,因此取了“视频”和“分析”这两个词的英文,名之曰:VideoEye。这个软件是在自己毕业设计软件的基础上改的。可以对本地文件或者互联网视频流进行实时的码流分析。由于这个软件是自己一边学习视音频技术一边制作的,所以涵盖了比较全面的功能。在编写这个软件的过程中,自己也学会了很多的视音频编解码方面的知识,以及MFC的知识。

2014-06-26 00:38:22 81129 121

原创 [总结]视音频编解码技术零基础学习方法

一直想把视音频编解码技术做一个简单的总结,可是苦于时间不充裕,一直没能完成。今天有着很大的空闲,终于可以总结一个有关视音频技术的入门教程,可以方便更多的人学习从零开始学习视音频技术。需要注意的是,本文所说的视音频技术,指的是理论层面的视音频技术,并不涉及到编程相关的东西。

2014-06-16 00:12:43 358107 563

原创 [总结]视频质量评价技术零基础学习方法

前段时间略忙,因此一直计划要总结的很多东西都没来得及写,这两天趁着空闲时间写上一篇。以后等时间充裕了再补充一些内容。本文总结一下学习视频质量评价技术的方法。视频质量评价是我研究生阶段主要的工作,包括发表的论文,毕业设计,进行的实验等等。在这一方面在国内做的研究并不是很多,因此我打算总结一下学习的经验,方便看过本文的人了解视频质量评价技术。

2014-04-21 00:26:25 46859 26

原创 [总结]RTMP流媒体技术零基础学习方法

本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。看完本文的话应该会对RTMP流媒体技术有比较完整的了解。0.背景知识本章主要介绍一下RTMP流媒体技术都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了

2013-11-18 00:10:34 131841 72

原创 [总结]FFMPEG视音频编解码零基础学习方法

在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者。在和大家探讨的过程中,我忽然发现了一个问题:在“大神”和初学者之间好像有一个不可逾越的鸿沟。“大神”们水平高超,探讨着深奥的问题;而初学者们还停留在入门阶段。究竟是什么原因造成的这种“两极分化”呢?最后,我发现了问题的关键:FFMPEG难度比较大,却没有一个循序渐进,由简单到复杂的教程...

2013-11-16 00:04:05 858635 851

转载 [投稿] Speex回声消除原理深度解析

本文是音频处理的朋友icoolmedia(QQ:314138065)的投稿。对音频处理有兴趣的朋友可以通过下面的方式与他交流:作者:icoolmedia QQ:314138065 音视频算法讨论QQ群:374737122

2016-04-19 09:44:13 53673 74

转载 [投稿]房间声学原理与Schroeder混响算法实现

本文是音频处理的朋友icoolmedia(QQ:314138065)的投稿。对音频处理有兴趣的朋友可以通过下面的方式与他交流:作者:icoolmedia QQ:314138065 音视频算法讨论QQ群:374737122 原文公式较多,因此直接贴上图片。

2016-03-03 16:38:06 32639

转载 [投稿]一个频域语音降噪算法实现及改进方法

本文是音频处理的朋友icoolmedia(QQ:314138065)的投稿。对音频处理有兴趣的朋友可以通过下面的方式与他交流:作者:icoolmedia QQ:314138065 音视频算法讨论QQ群:374737122 原文公式较多,因此直接贴上图片。

2016-03-03 16:34:29 38649 3

原创 最简单的基于FFmpeg的AVfilter的例子-纯净版

有关FFmpeg的avfilter已经写过一个水印叠加的例子《最简单的基于FFmpeg的AVfilter例子(水印叠加)》,本文作为补充再记录一个纯净版的avfilter的例子。此前libavfilter一直是结合着libavcodec等类库的接口函数使用的,因此我一直以为libavfilter库与libavcodec等类库是高度耦合的(也就是如果想使用libavfilter的视音频特效功能的话必

2016-02-01 13:55:04 77527 48

原创 视音频数据处理入门:UDP-RTP协议解析

本文介绍网络协议数据的处理程序。网络协议数据在视频播放器中的位置如下所示。本文中的程序是一个UDP/RTP协议流媒体数据解析器。该程序可以分析UDP协议中的RTP 包头中的内容,以及RTP负载中MPEG-TS封装格式的信息。通过修改该程序可以实现不同的UDP/RTP协议数据处理功能。原理MPEG-TS封装格式数据打包为RTP/UDP协议然后发送出去的流程如下图所示。图中首先每7个MPEG-TS P

2016-01-31 21:39:37 103975 41

原创 视音频数据处理入门:FLV封装格式解析

前两篇文章介绍了音频码流处理程序和视频码流处理程序,本文介绍将他们打包到一起后的数据——封装格式数据的处理程序。封装格式数据在视频播放器中的位置如下所示。本文中的程序是一个FLV封装格式解析程序。该程序可以从FLV中分析得到它的基本单元Tag,并且可以简单解析Tag首部的字段。通过修改该程序可以实现不同的FLV格式数据处理功能。原理FLV封装格式是由一个FLV Header文件头和一个一个的Tag

2016-01-31 18:57:10 87963 16

原创 视音频数据处理入门:AAC音频码流解析

本文继续上一篇文章的内容,介绍一个音频码流处理程序。音频码流在视频播放器中的位置如下所示。本文中的程序是一个AAC码流解析程序。该程序可以从AAC码流中分析得到它的基本单元ADTS frame,并且可以简单解析ADTS frame首部的字段。通过修改该程序可以实现不同的AAC码流处理功能。原理AAC原始码流(又称为“裸流”)是由一个一个的ADTS frame组成的。他们的结构如下图所示。其中每个A

2016-01-31 11:55:51 87367 49

原创 视音频数据处理入门:H.264视频码流解析

前两篇文章介绍的YUV/RGB处理程序以及PCM处理程序都属于视音频原始数据的处理程序。从本文开始介绍视音频码流的处理程序。本文介绍的程序是视频码流处理程序。视频码流在视频播放器中的位置如下所示。本文中的程序是一个H.264码流解析程序。该程序可以从H.264码流中分析得到它的基本单元NALU,并且可以简单解析NALU首部的字段。通过修改该程序可以实现不同的H.264码流处理功能。原理H.264原

2016-01-31 00:19:50 159545 64

原创 视音频数据处理入门:PCM音频采样数据处理

上一篇文章记录了RGB/YUV视频像素数据的处理方法,本文继续上一篇文章的内容,记录PCM音频采样数据的处理方法。音频采样数据在视频播放器的解码流程中的位置如下图所示。本文分别介绍如下几个PCM音频采样数据处理函数:  分离PCM16LE双声道音频采样数据的左声道和右声道  将PCM16LE双声道音频采样数据中左声道的音量降一半  将PCM16LE双声道音频采样数据的声音速度提高一倍  将PCM1

2016-01-29 23:32:13 119813 66

原创 视音频数据处理入门:RGB、YUV像素数据处理

有段时间没有写博客了,这两天写起博客来竟然感觉有些兴奋,仿佛找回了原来的感觉。前一阵子在梳理以前文章的时候,发现自己虽然总结了各种视音频应用程序,却还缺少一个适合无视音频背景人员学习的“最基础”的程序。因此抽时间将以前写过的代码整理成了一个小项目。

2016-01-29 17:01:12 185145 144

原创 修改了一个YUV/RGB播放器

最近在学习过程中查看YUV/RGB像素数据的时候,发现找不到一个合适的播放器。主流的YUV播放器大多只支持YUV格式播放,却不支持RGB格式数据播放。而我正好需要查看RGB像素数据。在Sourceforge上找到了一个比较好用的既支持YUV又支持RGB的播放器,但是发现有一些小毛病,于是把这个播放器源代码下载下来并且做了一些修改,感觉好用了很多。在这里写文章记录一下。 该播放器使用比较简单,可以通

2016-01-06 00:21:26 46701 15

转载 [投稿]Speex回声消除代码分析

本文是音频处理的朋友icoolmedia(QQ:314138065)的投稿。对音频处理有兴趣的朋友可以通过下面的方式与他交流:作者:icoolmedia QQ:314138065 音视频算法讨论QQ群:374737122 先说明下,这里的代码流程是修改过的Speex流程,但与Speex代码差异不大,应该不影响阅读。 (1)用RemoveDCoffset函数进行去直流 (2)远端信号预加重后放入x[

2015-12-03 18:47:20 30593 1

原创 CSDN《老友记》简记

上周参加了CSDN主办的SDCC 2015 (中国软件开发者大会) 中的《老友记》活动。《老友记》中云集了CSDN员工、社区专家、合作伙伴等各种IT行业的朋友。这次活动是我从2013年开始在CSDN写博客之后第一次参加线下活动,认识了很多未曾谋面的网络上的朋友,感觉很有纪念意义。昨天晚上在微信群里收到了大家的合照,写篇小短文记录一下。 《老友记》是上周四晚上在北京朗丽兹西山花园酒店举办的。这个地点

2015-11-28 15:47:05 33510 25

原创 HEVC官方软件HM源代码简单分析-编码器TAppEncoder

上一篇文章总结了HEVC官方参考软件HM中的视频解码器TAppDecoder的结构,本文继续分析HM中的视频编码器TAppEncoder。函数调用关系图HM中的HEVC视频编码器TAppEncoder的函数调用关系图如下所示。单击查看更清晰的大图下面解释一下图中关键标记的含义。函数背景色函数在图中以方框的形式表现出来。不同的背景色标志了该函数不同的作用:白色背景的函数:不加区分的普通内部函数。黄色

2015-11-23 22:46:49 42001 16

原创 HEVC官方软件HM源代码简单分析-解码器TAppDecoder

本文记录HEVC官方参考软件HM的源代码结构。HM相比于JM来说,采用了面向对象的编程方法,因而结构相对更加清晰。HM包含了视频解码器TAppDecoder和视频编码器TAppEncoder。本文记录视频解码器TAppDecoder的结构。函数调用关系图HM中的HEVC视频解码器TAppDecoder的函数调用关系图如下所示。单击查看更清晰的大图下面解释一下图中关键标记的含义。函数背景色函数在图中

2015-11-23 13:49:44 39206 4

原创 美国见闻(下)

前一篇文章记录了11月1-4号在美国开会的见闻,这一篇文章再记录一下5-8号在美国游览的见闻。11月5日 今天准备启程到西海岸的另一个城市——洛杉矶逛逛。从Sea-tac International Airport出发,经过3个小时左右的飞行,到达Los Angeles International Airport (LAX)。从LAX出来后乘坐FlyAway Bus前往位于Hollywood(好莱

2015-11-18 19:14:24 28897 10

原创 美国见闻(上)

前几天参加了微软在美国西雅图举办的2015年度MVP Global Summit(MVP全球峰会),并且顺道在美国游览了几天,在此记录一下自己的所见所闻。 今年4月份的时候获得了微软的MVP奖项。微软MVP获奖证书样子如下。  微软MVP这个奖项提供了一系列参加会议进行学习交流的机会,MVP峰会只是其中的一个活动。在这之前已经参加过Microsoft Windows 10发布会、2015年度Mic

2015-11-18 19:12:02 37559 28

原创 H.264官方软件JM源代码简单分析-编码器lencod

上一篇文章总结了H.264官方参考软件JM中的视频解码器ldecod的结构,本文继续分析JM中的视频编码器lencod。函数调用关系图JM中的H.264视频编码器lencod的函数调用关系图如下所示。

2015-11-18 14:56:04 35189 10

原创 H.264官方软件JM源代码简单分析-解码器ldecod

最近看了一下H.264官方参考软件JM的源代码,在这里总结一下它的结构。JM编解码H.264的速度相对于FFmpeg来说是非常慢的,但是它的代码写得清晰易懂,更适合做学术方面的研究。JM包含了视频解码器ldecod和视频编码器lencod。本文记录视频解码器ldecod的结构。函数调用关系图JM中的H.264视频解码器ldecod的函数调用关系图如下所示。 单击查看更清晰的大图下面解释一下图中关键

2015-11-17 20:07:41 37624

转载 [投稿]谱减法语音降噪原理

本文是音频处理的朋友icoolmedia(QQ:314138065)的投稿。各位做视音频技术朋友如果好的原创技术文章并希望通过我的博客分享给大家,也欢迎投稿到我的邮箱:leixiaohua1020@126.com,我会选择内容合适的文章注明作者及联系方式后进行发布。希望通过这种方式帮助大家结交更多的同道中人~谱减法语音降噪基本原理谱减算法为最早的语音降噪算法之一,它的提出,基于一个简单的原理

2015-08-04 14:57:22 50013 18

原创 最简单的基于FFmpeg的移动端例子:Windows Phone HelloWorld

本文记录Windows Phone平台下基于FFmpeg的HelloWorld程序。该示例C语言的源代码来自于《最简单的基于FFMPEG的Helloworld程序》。相关的概念就不再重复记录了。 由于在FFmpeg移动端开发方面只有Android和IOS的实战经验,所以我一开始的时候只做了Android和IOS的示例程序。前两天参加了微软在水立方的Windows 10发布会,会前浏览信息的时候发现

2015-08-01 22:25:48 18828 11

原创 最简单的基于FFmpeg的移动端例子附件:IOS自带播放器

前几篇文章记录的都是IOS下基于FFmpeg的多媒体程序。本文记录一个IOS下自带的视频播放器。相比于移植FFmpeg来说,IOS自带的多媒体框架播放视频要简单很多——只需要调用几个接口就可以了。源代码项目的源代码位于ViewController.m文件中,内容如下所示。

2015-08-01 17:03:47 20874 4

原创 最简单的基于FFmpeg的移动端例子:IOS 视频转码器

本文记录IOS平台下基于FFmpeg的视频转码器。该转码器实际上移植自ffmpeg工程中的ffmpeg.c源代码。有关ffmpeg.c的源代码可以参考文章《ffmpeg.c函数结构简单分析(画图)》,在这里就不重复记录了。源代码项目的目录结构如图所示。下列C语言文件拷贝自FFmpeg源代码:cmdutils.ccmdutils.hcmdutils_common_opts.hconfig.hffmp

2015-08-01 16:34:20 24329 14

原创 最简单的基于FFmpeg的移动端例子:IOS 推流器

本文记录IOS平台下基于FFmpeg的推流器。该示例C语言的源代码来自于《最简单的基于FFMPEG的推流器》。相关的概念就不再重复记录了。源代码项目的目录结构如图所示。C代码位于ViewController.m文件中,内容如下所示。

2015-07-29 12:57:35 34783 20

原创 最简单的基于FFmpeg的移动端例子:IOS 视频解码器

本文记录IOS平台下基于FFmpeg的视频解码器。该示例C语言的源代码来自于《最简单的基于FFMPEG+SDL的视频播放器》。相关的概念就不再重复记录了。源代码项目的目录结构如图所示。C代码位于ViewController.m文件中,内容如下所示。

2015-07-28 19:02:45 31582 25

原创 最简单的基于FFmpeg的移动端例子:IOS HelloWorld

本文记录IOS平台下基于FFmpeg的HelloWorld程序。该示例C语言的源代码来自于《最简单的基于FFMPEG的Helloworld程序》。相关的概念就不再重复记录了。IOS程序使用FFmpeg类库的说明IOS应用程序使用FFmpeg类库的流程如下所示。1. 编译FFmpeg类库编译IOS的FFmpeg类库需要支持5种架构:armv7、armv7s、arm64、i386、x86_64。其中前

2015-07-27 20:18:17 36558 21

原创 《基于 FFmpeg + SDL 的视频播放器的制作》课程的视频

这两天开始带广播电视工程大二的暑假小学期的课程设计了。本次小学期课程内容为《基于 FFmpeg + SDL 的视频播放器的制作》,其中主要讲述了视音频开发的入门知识。由于感觉本课程的内容不但适合本科生,而且也比较适合无视音频基础的开发者入门使用,所以在讲课的同时也录制了一部分内容并上传到了网上,方便新手学习FFmpeg的开发。

2015-07-26 15:00:56 82095 177

原创 最简单的基于FFmpeg的移动端例子附件:SDL Android HelloWorld

本文记录一个安卓平台下SDL的例子。该例子读取并显示了一张BMP图片,通过该例子可以了解SDL在安卓平台下的使用。本文中使用的SDL版本为2.0。Android程序SDL2类库使用说明简单记录一下Android程序使用SDL2类库的方法。这部分的信息可以参考SDL2源代码目录中的README-android.txt文件。SDL2使用的步骤可以分为以下步骤:(1)配置Android工程a) 新建工程

2015-07-25 23:02:55 21739 26

原创 最简单的基于FFmpeg的移动端例子附件:Android 自带播放器

前几篇文章记录的都是安卓平台下基于FFmpeg的多媒体程序。作为对比,本文记录一个基于安卓自带多媒体框架OpenCore的视频播放器。安卓自带的多媒体框架的使用方法相对移植FFmpeg来说简单太多了,只需要调用几个接口函数就能控制视频的播放。不再过多记录它的使用方法。源代码项目的目录结构如图所示。Java源代码位于src目录。Android程序Java端代码位于src\com\leixiaohua

2015-07-25 20:00:30 28139 18

原创 最简单的基于FFmpeg的移动端例子:Android 视频转码器

本文记录一个安卓平台下基于FFmpeg的视频转码器。该转码器实际上移植自ffmpeg工程中的ffmpeg.c源代码。有关ffmpeg.c的源代码可以参考文章《ffmpeg.c函数结构简单分析(画图)》,在这里就不重复记录了。源代码项目的目录结构如图所示。Java源代码位于src目录,而C代码位于jni目录。Android程序Java端代码位于src\com\leixiaohua1020\sffmp

2015-07-25 17:10:54 75904 74

原创 最简单的基于FFmpeg的移动端例子:Android 推流器

本文记录一个安卓平台下基于FFmpeg的视频推流器。该推流器C语言的源代码来自于《最简单的基于FFMPEG的推流器》。相关的概念就不再重复记录了。源代码项目的目录结构如图所示。Java源代码位于src目录,而C代码位于jni目录。 Android程序Java端代码位于src\com\leixiaohua1020\sffmpegandroidstreamer\MainActivity.java,如下

2015-07-25 14:10:50 49028 73

原创 最简单的基于FFmpeg的移动端例子:Android 视频解码器-单个库版

本文记录另一个安卓平台下基于FFmpeg的视频解码器。与前一篇文章记录的解码器不同,本文记录的解码器不再使用libavcodec.so、libavformat.so等类库,而只使用了一个类库——libffmpeg.so。该视频解码器C语言的源代码来自于《最简单的基于FFMPEG+SDL的视频播放器》。相关的概念就不再重复记录了。FFmpeg类库的打包记录一下FFmpeg类库打包的方

2015-07-25 11:42:31 24312 26

原创 最简单的基于FFmpeg的移动端例子:Android 视频解码器

本文记录一个安卓平台下基于FFmpeg的视频解码器。该视频解码器C语言的源代码来自于《100行代码实现最简单的基于FFMPEG+SDL的视频播放器》。相关的概念就不再重复记录了。源代码项目的目录结构如图所示。Java源代码位于src目录,而C代码位于jni目录。Android程序Java端代码位于src\com\leixiaohua1020\sffmpegandroiddecoder\MainAc

2015-07-24 19:02:29 49361 37

最简单的基于libRTMP的示例

本工程包含了LibRTMP的使用示例,包含如下子工程: simplest_librtmp_receive: 接收RTMP流媒体并在本地保存成FLV格式的文件。 simplest_librtmp_send_flv: 将FLV格式的视音频文件使用RTMP推送至RTMP流媒体服务器。 simplest_librtmp_send264: 将内存中的H.264数据推送至RTMP流媒体服务器。

2014-12-23

最简单的基于FFmpeg的libswscale的教程

本教程是最简单的基于FFmpeg的libswscale进行像素处理的教程。它包含了两个工程: simplest_ffmpeg_swscale: 最简单的libswscale的教程。 simplest_pic_gen: 生成各种测试图片的工具。

2014-12-23

最简单的视频编码器示例

该解决方案包含了几个常见的编码器的使用示例: simplest_vpx_encoder:最简单的基于libvpx的视频编码器 simplest_x264_encoder:最简单的基于libx264的视频编码器 simplest_x265_encoder:最简单的基于libx265的视频编码器

2014-12-21

最简单的视音频播放示例 1.1

本工程包含了使用各种API(Direct3D,OpenGL,GDI,DirectSound,SDL2)播放多媒体例子。 其中音频输入为PCM采样数据。输出至系统的声卡播放出来。 视频输入为YUV/RGB像素数据。输出至显示器上的一个窗口播放出来。 通过本工程的代码初学者可以快速学习使用这几个API播放视频和音频的技术。 一共包括了如下几个子工程: simplest_audio_play_directsound: 使用DirectSound播放PCM音频采样数据。 simplest_audio_play_sdl2: 使用SDL2播放PCM音频采样数据。 simplest_video_play_direct3d: 使用Direct3D的Surface播放RGB/YUV视频像素数据。 simplest_video_play_direct3d_texture:使用Direct3D的Texture播放RGB视频像素数据。 simplest_video_play_gdi: 使用GDI播放RGB/YUV视频像素数据。 simplest_video_play_opengl: 使用OpenGL播放RGB/YUV视频像素数据。 simplest_video_play_opengl_texture: 使用OpenGL的Texture播放YUV视频像素数据。 simplest_video_play_sdl2: 使用SDL2播放RGB/YUV视频像素数据。 1.1版修复了一些问题

2014-12-21

最简单的基于FFmpeg的封装格式处理的例子 1.1

该解决方案包含了使用FFmpeg进行封装格式处理的各种例子: simplest ffmpeg demuxer:视音频分离器 simplest ffmpeg demuxer simple:视音频分离器(简化版) simplest ffmpeg muxer:视音频复用器 simplest ffmpeg remuxer:封装格式转换器 1 1版修复了以下问题: 1 Release版本下的运行问题 2 simplest ffmpeg muxer分装H 264裸流的时候丢失声音的错误">该解决方案包含了使用FFmpeg进行封装格式处理的各种例子: simplest ffmpeg demuxer:视音频分离器 simplest ffmpeg demuxer simple:视音频分离器(简化版) simplest ffmpeg muxer:视音频复用器 simplest ffmpeg remuxer:封装格式转换器 1 1 [更多]

2014-12-21

最简单的视音频播放示例

本工程包含了使用各种API(Direct3D,OpenGL,GDI,DirectSound,SDL2)播放多媒体例子。 其中音频输入为PCM采样数据。输出至系统的声卡播放出来。 视频输入为YUV/RGB像素数据。输出至显示器上的一个窗口播放出来。 通过本工程的代码初学者可以快速学习使用这几个API播放视频和音频的技术。 一共包括了如下几个子工程: simplest_audio_play_directsound: 使用DirectSound播放PCM音频采样数据。 simplest_audio_play_sdl2: 使用SDL2播放PCM音频采样数据。 simplest_video_play_direct3d: 使用Direct3D的Surface播放RGB/YUV视频像素数据。 simplest_video_play_direct3d_texture:使用Direct3D的Texture播放RGB视频像素数据。 simplest_video_play_gdi: 使用GDI播放RGB/YUV视频像素数据。 simplest_video_play_opengl: 使用OpenGL播放RGB/YUV视频像素数据。 simplest_video_play_opengl_texture: 使用OpenGL的Texture播放YUV视频像素数据。 simplest_video_play_sdl2: 使用SDL2播放RGB/YUV视频像素数据。

2014-10-18

最简单的基于FFMPEG的视频编码器(YUV编码为HEVC H 265 )

FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。因此特地分离出了一个简单的视频编码器供学习之用。 此前做过一个YUV420P像素数据编码为H.264码流的例子。对这个例子进行了升级。升级后编码器实现了YUV420P像素数据编码为H.265码流。 尽管该视频编码器的代码十分简单,但是几乎包含了使用FFMPEG编码一个视频所有必备的API。十分适合FFmpeg的初学者。 工程基于VC2010。 使用了2014.9.16编译的FFmpeg类库。">FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。因此特地分离出了一个简单的视频编码器供学习之用。 此前做过一个YUV420P像素数据编码为H.264码流的例子。对这个例子进行了升级。? [更多]

2014-10-04

最简单的基于FFMPEG+SDL的视频播放器 1.2

本程序实现了视频文件的解码和显示(支持HEVC,H.264,MPEG2等)。 是最简单的FFmpeg视频解码方面的教程。 通过学习本例子可以了解FFmpeg的解码流程。 项目包含两个工程: simplest_ffmpeg_player:标准版,FFmpeg学习的开始。 simplest_ffmpeg_player_su:SU(SDL Update)版,加入了简单的SDL的Event。 工程采用了VC2010,FFmpeg使用了较新的类库,SDL使用了1.2版本。 这是更新的1.2版本。增加了“flush_decoder”功能,用于在解码循环结束后,输出解码器中剩余的几帧数据。

2014-10-04

最简单的基于FFMPEG+SDL的视频播放器 2.2

本程序实现了视频文件的解码和显示(支持HEVC,H.264,MPEG2等)。 是最简单的FFmpeg视频解码方面的教程。 通过学习本例子可以了解FFmpeg的解码流程。 项目包含两个工程: simplest_ffmpeg_player:标准版,FFmpeg学习的开始。 simplest_ffmpeg_player_su:SU(SDL Update)版,加入了简单的SDL的Event。 工程采用了VC2010,FFmpeg使用了较新的类库,SDL使用了2.0版本。 这是更新的2.2版本。增加了“flush_decoder”功能,用于在解码循环结束后,输出解码器中剩余的几帧数据。

2014-10-04

最简单的基于FFmpeg的内存读写的例子

本程序实现了FFmpeg对内存中的视频数据的读写。包含两个工程: simplest_ffmpeg_mem_player:播放内存中视频数据的播放器。 simplest_ffmpeg_mem_transcoder:转码内存中数据的转码器。

2014-10-05

最简单的基于FFmpeg的推流器(以推送RTMP为例)

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

2014-10-06

最简单的基于FFmpeg的封装格式处理的例子

该解决方案包含了使用FFmpeg进行封装格式处理的各种例子: simplest_ffmpeg_demuxer:视音频分离器。 simplest_ffmpeg_demuxer_simple:视音频分离器(简化版)。 simplest_ffmpeg_muxer:视音频复用器。 simplest_ffmpeg_remuxer:封装格式转换器。

2014-10-06

最简单的基于FFMPEG的AVDevice的例子

FMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。因此做了一个FFmpeg中的libavdevice类库的使用例子。 本工程包含两个基于FFmpeg的libavdevice的例子: simplest_ffmpeg_grabdesktop:屏幕录制。 simplest_ffmpeg_readcamera:读取摄像头。 工程基于VC2010,配置都已经做好,可以直接运行查看结果。

2014-09-30

最简单的基于FFMPEG+SDL的音频播放器 (classic)

FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。 因此我把自己做项目过程中实现的一个非常简单的音频播放器(大约200-300行代码)源代码传上来,以作备忘,同时方便新手学习FFMPEG。 该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。 相比旧版的改动: 重建了工程,删掉了不必要的代码,把代码修改得更规范更易懂。 可以通过宏控制是否使用SDL,以及是否输出PCM。

2014-09-01

最简单的基于FFMPEG+SDL的音频播放器 1.2

FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。 因此我把自己做项目过程中实现的一个非常简单的音频播放器(大约200-300行代码)源代码传上来,以作备忘,同时方便新手学习FFMPEG。 该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。 相比旧版本的改动: 重建了工程,删掉了不必要的代码,把代码修改得更规范更易懂。 可以通过宏控制是否使用SDL,以及是否输出PCM。 支持MP3,AAC等多种格式

2014-09-01

最简单的基于FFMPEG+SDL的音频播放器 2

FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。 因此我把自己做项目过程中实现的一个非常简单的音频播放器(大约200-300行代码)源代码传上来,以作备忘,同时方便新手学习FFMPEG。 该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。 该版本使用SDL2.0替代了原先的SDL1.2 相比旧版本的改动: *重建了工程,删掉了不必要的代码,把代码修改得更规范更易懂。 *可以通过宏控制是否使用SDL,以及是否输出PCM。 *支持MP3,AAC等多种格式

2014-09-01

最简单的基于FFMPEG+SDL的音频播放器 1.2 (修正)

FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。 因此我把自己做项目过程中实现的一个非常简单的音频播放器(大约200-300行代码)源代码传上来,以作备忘,同时方便新手学习FFMPEG。 该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。 相比旧版本的改动: 重建了工程,删掉了不必要的代码,把代码修改得更规范更易懂。 可以通过宏控制是否使用SDL,以及是否输出PCM。 支持MP3,AAC等多种格式

2014-09-02

最简单的基于FFMPEG+SDL的音频播放器 2 (修正)

FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。 因此我把自己做项目过程中实现的一个非常简单的音频播放器(大约200-300行代码)源代码传上来,以作备忘,同时方便新手学习FFMPEG。 该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。 该版本使用SDL2.0替代了原先的SDL1.2 相比旧版本的改动: *重建了工程,删掉了不必要的代码,把代码修改得更规范更易懂。 *可以通过宏控制是否使用SDL,以及是否输出PCM。 *支持MP3,AAC等多种格式 修正版中又修正了一部分小错误。

2014-09-02

最简单的基于FFMPEG+SDL的视频播放器 2 (SDL 2.0)

本程序实现了视频文件的解码和显示(支持HEVC,H.264,MPEG2等)。 是最简单的FFmpeg视频解码方面的教程。 通过学习本例子可以了解FFmpeg的解码流程。 项目包含两个工程: simplest_ffmpeg_player:标准版,FFmpeg学习的开始。 simplest_ffmpeg_player_su:SU(SDL Update)版,加入了简单的SDL的Event。 工程采用了VC2010,FFmpeg使用了较新的类库,SDL使用了2.0版本。

2014-08-27

最简单的基于FFMPEG的视频播放器1.1

本程序实现了视频文件的解码和显示(支持HEVC,H.264,MPEG2等)。 是最简单的FFmpeg视频解码方面的教程。 通过学习本例子可以了解FFmpeg的解码流程。 项目包含两个工程: simplest_ffmpeg_player:标准版,FFmpeg学习的开始。 simplest_ffmpeg_player_su:SU(SDL Update)版,加入了简单的SDL的Event。 备注: 标准版在播放视频的时候,画面显示使用延时40ms的方式。这么做有两个后果: (1)SDL弹出的窗口无法移动,一直显示是忙碌状态 (2)画面显示并不是严格的40ms一帧,因为还没有考虑解码的时间。 SU(SDL Update)版在视频解码的过程中,不再使用延时40ms的方式,而是创建了 一个线程,每隔40ms发送一个自定义的消息,告知主函数进行解码显示。这样做之后: (1)SDL弹出的窗口可以移动了 (2)画面显示是严格的40ms一帧

2014-08-25

TIandSI(视频序列TI和SI计算工具,图形界面版本)

视频序列时候用到的TI(时间信息)和SI(空间信息)的计算工具(自行编写的,根据ITU-R BT.1788标准)。 这是图形界面版本的可执行程序。 2.0更新记录: *删除了旧版里的TeeChart,感觉作用不大 *增加了TI和SI计算过程预览窗口,可以查看TI和SI的计算过程。 *增加了计算过程进度条 *支持多种格式的YUV视频输入:YUV420P,YUV422P,YUV444P,Y *支持批量添加YUV视频 *增加了“结果”对话框,可以直接在程序中查看TI和SI计算结果 *增加了“暂停”,“继续”,“停止”等按钮,可以控制计算的进度

2014-08-25

TIandSI 源代码(视频序列TI和SI计算工具,图形界面版本)

视频序列时候用到的TI(时间信息)和SI(空间信息)的计算工具(自行编写的,根据ITU-R BT.1788标准)。 这是图形界面版本的源代码。 工程基于VC2010 2.0更新记录: *删除了旧版里的TeeChart,感觉作用不大 *增加了TI和SI计算过程预览窗口,可以查看TI和SI的计算过程。 *增加了计算过程进度条 *支持多种格式的YUV视频输入:YUV420P,YUV422P,YUV444P,Y *支持批量添加YUV视频 *增加了“结果”对话框,可以直接在程序中查看TI和SI计算结果 *增加了“暂停”,“继续”,“停止”等按钮,可以控制计算的进度

2014-08-25

FLV封装格式分析器 1.1 (源代码)

自己做的FLV封装格式分析工具。可以分析FLV中每个Tag的信息。 此外还支持分离FLV时的视频流和音频流。工程使用VC2010和MFC开发完成。

2014-08-16

MPEG2-TS格式分析工具 1.1 (源代码)

自己做的MPEG2-TS分析工具。支持中英双语。可以用于学习MPEG2TS封转格式。工程使用VC2010和MFC开发完成。

2014-08-16

H.264码流分析器 1.1 (源代码)

自己做的H.264码流分析工具。可以分析每个NAL的信息,支持中英双语。 支持H.264裸流作为输入。 工程使用VC2010和MFC开发完成。

2014-08-16

JPEG分析器 1.1 (源代码)

自己做的JPEG分析工具。主要可以用于JPEG编码标准的学习。同时也支持解码,以及输出文件头中相关的信息。 支持JPEG文件作为输入。 工程使用VC2010和MFC开发完成。

2014-08-16

AAC码流分析器 1.1 (源代码)

自己做的AAC码流分析工具。支持中英双语。分析功能还需继续完善。 支持AAC或者M4A作为输入。 工程使用VC2010和MFC开发完成。

2014-08-16

H.264码流分析器 1.1

自己做的H.264码流分析工具。可以分析每个NAL的信息,支持中英双语。 支持H.264裸流作为输入。 可以详细的列出H.264码流中NAL的信息。

2014-08-16

ffplay for MFC 1.1 (源代码)

自己做的FFPLAY移植到VC下的开源工程:ffplay for MFC。 本工程将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下。并且使用MFC做了一套简单的界面。它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出。此外还包含一些控制功能:播放,暂停/继续,前进,后退,停止,逐帧播放,全屏等功能。通过本程序可以学习视频播放器原理,以及SDL和Windows消息机制等。代码中包含了比较详细的注释。 1.1版(2014.7.10) * 更换了部分界面 * 原工程支持Unicode编码 * 修复了Release下的Bug * 添加了两个宏定义"INT64_MIN INT64_MAX",在没有安装 Win7SDK的情况下,可能会出现找不到定义的情况。

2014-08-16

ffmpeg for MFC 1.2 (源代码)

自己做的FFMPEG移植到VC下的开源工程:ffmpeg for MFC。 本工程将ffmpeg工程中的ffmpeg转码器(ffmpeg.c)移植到了VC环境下。并且使用MFC做了一套简单的界面。它可以完成一个视频转码的基本功能:封装格式以及编码格式的转换。通过本程序可以学习视频转码器的原理,以及Windows的消息机制等知识。 更新记录============================== 1.1版(2014.7.12) * 更换了部分界面 * 原工程支持Unicode编码 * 修复了一部分内存泄露的问题 * 修正了ffmpeg.c中的exit_program()函数。保证在转码结束后可以释放资源。 * 修正了一部分“任务列表”的功能 * 修正了添加任务的时候“要用按钮去选输入文件,不能自己直接输入”的问题。 1.2版(2014.8.16) *增加了“内部转码”和“外部转码”选项。“内部转码”即通过原先移植的ffmpeg.c进行转码。“外部转码”支持作为一个GUI直接调用ffmpeg.exe进行转码。

2014-08-16

ffmpeg for MFC 1.2

FFMPEG移植到VC下的开源工程:ffmpeg for MFC。本工程将ffmpeg工程中的ffmpeg转码器(ffmpeg.c)移植到了VC环境下。并且使用MFC做了一套简单的界面。它可以完成一个视频转码的基本功能:封装格式以及编码格式的转换。通过本程序可以学习视频转码器的原理,以及Windows的消息机制等知识。 更新记录============================== 1.1版(2014.7.12) * 更换了部分界面 * 原工程支持Unicode编码 * 修复了一部分内存泄露的问题 * 修正了ffmpeg.c中的exit_program()函数。保证在转码结束后可以释放资源。 * 修正了一部分“任务列表”的功能 * 修正了添加任务的时候“要用按钮去选输入文件,不能自己直接输入”的问题。 1.2版(2014.8.16) *增加了“内部转码”和“外部转码”选项。“内部转码”即通过原先移植的ffmpeg.c进行转码。“外部转码”支持作为一个GUI直接调用ffmpeg.exe进行转码。

2014-08-16

ffmpeg for MFC 1.2 测试版

FFMPEG移植到VC下的开源工程:ffmpeg for MFC。本工程将ffmpeg工程中的ffmpeg转码器(ffmpeg.c)移植到了VC环境下。并且使用MFC做了一套简单的界面。它可以完成一个视频转码的基本功能:封装格式以及编码格式的转换。通过本程序可以学习视频转码器的原理,以及Windows的消息机制等知识。 这是编译好的可执行程序。 更新记录============================== 1.1版(2014.7.12) * 更换了部分界面 * 原工程支持Unicode编码 * 修复了一部分内存泄露的问题 * 修正了ffmpeg.c中的exit_program()函数。保证在转码结束后可以释放资源。 * 修正了一部分“任务列表”的功能 * 修正了添加任务的时候“要用按钮去选输入文件,不能自己直接输入”的问题。 1.2版(2014.8.16) *增加了“内部转码”和“外部转码”选项。“内部转码”即通过原先移植的ffmpeg.c进行转码。“外部转码”支持作为一个GUI直接调用ffmpeg.exe进行转码。

2014-08-16

最简单的基于FFMPEG+SDL的视频播放器(Linux)

FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。 该播放器代码十分简单,只有约100行左右。但是几乎包含了使用FFMPEG播放一个视频所有必备的API,并且使用SDL显示解码出来的视频。十分适合新手学习FFmpeg。 这个是Linux下的代码,在Ubuntu下测试可以运行,前提是安装了FFmpeg和SDL。 编译命令: gcc simplest_ffmpeg_player.c -g -o smp.out -lSDLmain -lSDL -lavformat -lavcodec -lavutil -lswscale

2014-07-30

TISI(视频序列TI和SI计算工具,命令行版本)

视频序列时候用到的TI(时间信息)和SI(空间信息)的计算工具(自行编写的,根据ITU-R BT.1788标准)。 这是命令行版本的可执行程序。

2014-07-28

TISI(视频序列TI和SI计算工具,源代码)

视频序列时候用到的TI(时间信息)和SI(空间信息)的计算工具(自行编写的,根据ITU-R BT.1788标准)。 这是命令行版本的源代码。

2014-07-28

VideoEye 0.2 测试版

VideoEye是一个开源的视频分析的软件。本软件可以播放和分析视频数据。它支持多种视频流输入方式:HTTP,RTMP,RTSP以及文件等等。该软件可以实时分析视频流并能以图形化的方式呈现其分析结果。 目前该软件还处于完善阶段。 这是当前版本的可执行程序,使用VC2010开发完成。

2014-07-11

VideoEye 0.2 源代码

VideoEye是一个开源的视频分析的软件。本软件可以播放和分析视频数据。它支持多种视频流输入方式:HTTP,RTMP,RTSP以及文件等等。该软件可以实时分析视频流并能以图形化的方式呈现其分析结果。 目前该软件还处于完善阶段。 这是0.2版本的源代码,使用VC2010开发完成。

2014-07-12

VC2010编译的MFC程序需要的dll

VC2010编译的MFC程序(动态链接到Dll),复制到其他计算机上的时候,可能需要以下dll的支持: mfc100u.dll,msvcp100.dll,msvcr100.dll 该文件包含了以上三个Dll。

2014-07-12

VideoEye 0.1 源代码

VideoEye是一个开源的视频分析的软件。本软件可以播放和分析视频数据。它支持多种视频流输入方式:HTTP,RTMP,RTSP以及文件等等。该软件可以实时分析视频流并能以图形化的方式呈现其分析结果。 目前该软件还处于完善阶段。 这是当前版本的源代码,使用VC2010开发完成。

2014-06-26

VideoEye 0.1 测试版

VideoEye是一个开源的视频分析的软件。本软件可以播放和分析视频数据。它支持多种视频流输入方式:HTTP,RTMP,RTSP以及文件等等。该软件可以实时分析视频流并能以图形化的方式呈现其分析结果。 目前该软件还处于完善阶段。 这是当前版本的可执行程序,使用VC2010开发完成。

2014-06-26

博客文章全跑到回收站里了

发表于 2013-11-14 最后回复 2015-12-20

博客的问题

发表于 2013-11-15 最后回复 2015-08-21

博客有问题

发表于 2013-11-14 最后回复 2013-11-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除