我的开源项目
文章平均质量分 81
雷霄骅
这个作者很懒,什么都没留下…
展开
-
视音频编解码学习工程:H.264分析器
本文介绍一个自己的开源小项目:H.264码流分析器。在学习过程中,从开源社区获得了很多的资源,在此也算是对开源社区的回馈了。我这个项目规模不大,主要可以用来学习H.264码流结构。使用VC 2010的MFC开发完成。在对H.264的NAL进行解析的过程中,用到了另外一个开源工程:h264bitstream。h264bitstream工程本身还是挺优秀的,可以比较详细的列出NAL的信息。原创 2014-01-11 00:02:49 · 52783 阅读 · 25 评论 -
修改了一个YUV/RGB播放器
最近在学习过程中查看YUV/RGB像素数据的时候,发现找不到一个合适的播放器。主流的YUV播放器大多只支持YUV格式播放,却不支持RGB格式数据播放。而我正好需要查看RGB像素数据。在Sourceforge上找到了一个比较好用的既支持YUV又支持RGB的播放器,但是发现有一些小毛病,于是把这个播放器源代码下载下来并且做了一些修改,感觉好用了很多。在这里写文章记录一下。 该播放器使用比较简单,可以通原创 2016-01-06 00:21:26 · 73025 阅读 · 27 评论 -
最简单的基于FFmpeg的编码器-纯净版(不包含libavformat)
本文记录一个更加“纯净”的基于FFmpeg的视频编码器。此前记录过两个基于FFmpeg的视频编码器:这个视频编码器调用了FFmpeg中的libavformat和libavcodec两个库完成了视频编码工作。但是这不是一个“纯净”的编码器。上述两个库中libavformat完成封装格式处理,而libavcodec完成编码工作。一个“纯净”的编码器,理论上说只需要使用libavcodec就足够了,并不原创 2015-01-03 12:10:48 · 28742 阅读 · 38 评论 -
视音频数据处理入门: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 · 184650 阅读 · 44 评论 -
视音频数据处理入门:RGB、YUV像素数据处理
有段时间没有写博客了,这两天写起博客来竟然感觉有些兴奋,仿佛找回了原来的感觉。前一阵子在梳理以前文章的时候,发现自己虽然总结了各种视音频应用程序,却还缺少一个适合无视音频背景人员学习的“最基础”的程序。因此抽时间将以前写过的代码整理成了一个小项目。原创 2016-01-29 17:01:12 · 266597 阅读 · 181 评论 -
最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)
之前做过一个FFMPEG+SDL的简单播放器:《100行代码实现最简单的基于FFMPEG+SDL的视频播放器》。最近有不少人反映SDL已经升级到2.0版本了,甚至官网的Wiki上都只有SDL2.0的文档了,因此下载了SDL 2.0 并且进行了简单的研究。随后对此前的播放器进行了修改,将SDL1.2换成了SDL2.0。注:《100行代码实现最简单的基于FFMPEG+SDL的视频播放器》文章中提到的很多知识这里不再重复。本文重点记录SDL1.2与SDL2.0的不同。原创 2014-08-31 01:20:14 · 141064 阅读 · 95 评论 -
最简单的基于FFMPEG的图像编码器(YUV编码为JPEG)
伴随着毕业论文的完成,这两天终于腾出了空闲,又有时间搞搞FFMPEG的研究了。想着之前一直搞的都是FFMPEG解码方面的工作,很少涉及到FFMPEG编码方面的东西,于是打算研究一下FFMPEG的编码。在网上看了一些例子,发现要不然是难度略微有些大,要不然就是类库比较陈旧,于是就决定自己做一个编码方面的例子,方便以后学习。本文的编码器实现了YUV420P的数据编码为JPEG图片。本着简单的原则,原创 2014-05-09 00:25:35 · 61302 阅读 · 37 评论 -
最简单的基于FFMPEG的视频编码器(YUV编码为H.264)
本文介绍一个最简单的基于FFMPEG的视频编码器。该编码器实现了YUV420P的像素数据编码为H.264的压缩编码数据。编码器代码十分简单,但是每一行代码都很重要,适合好好研究一下。弄清楚了本代码也就基本弄清楚了FFMPEG的编码流程。目前我虽然已经调通了程序,但是还是有些地方没有完全搞明白,需要下一步继续探究然后补充内容。本程序使用最新版的类库(编译时间为2014.5.6),开发平台为VC2原创 2014-05-12 00:42:25 · 182092 阅读 · 171 评论 -
最简单的基于FFmpeg的AVfilter例子(水印叠加)
FFMPEG中有一个类库:libavfilter。该类库提供了各种视音频过滤器。之前一直没有怎么使用过这个类库,最近看了一下它的使用说明,发现还是很强大的,有很多现成的filter供使用,完成视频的处理很方便。在此将它的一个例子基础上完成了一个水印叠加器,并且移植到了VC2010下,方便开发人员学习研究它的使用方法。 下面直接贴上代码: 程序的运行效果如图所示。需要叠加的水印为一张PNG(透明原创 2014-06-09 00:03:51 · 112368 阅读 · 140 评论 -
我的开源视音频项目汇总
本文汇总一下自己视音频编解码学习方面的开源项目。这些开源项目大体上可以分成专业领域程序,FFmpeg示例程序,FFmpeg移植程序,多媒体项目示例程序,视音频编解码原理学习工程几个类别。原创 2015-01-13 01:17:34 · 154162 阅读 · 329 评论 -
视音频数据处理入门:FLV封装格式解析
前两篇文章介绍了音频码流处理程序和视频码流处理程序,本文介绍将他们打包到一起后的数据——封装格式数据的处理程序。封装格式数据在视频播放器中的位置如下所示。本文中的程序是一个FLV封装格式解析程序。该程序可以从FLV中分析得到它的基本单元Tag,并且可以简单解析Tag首部的字段。通过修改该程序可以实现不同的FLV格式数据处理功能。原理FLV封装格式是由一个FLV Header文件头和一个一个的Tag原创 2016-01-31 18:57:10 · 123773 阅读 · 20 评论 -
视音频编解码学习工程:FLV封装格式分析器
本文介绍一个自己的开源小项目:FLV封装格式分析器。FLV全称是Flash Video,是互联网上使用极为广泛的视频封装格式。像Youtube,优酷这类视频网站,都使用FLV封装视频。我这个项目规模不大,主要可以用来学习FLV封装格式结构。此外它还支持分离FLV中的视频流和音频流。使用VC 2010的MFC开发完成。在对FLV进行视音频分离的过程中,用到了一个Github开源小工程:flvparse。在此插一句:我发现Github上优秀的东西真的还是挺多的,许多零散的小工程,效果都很不错。这个flvpars原创 2014-01-12 00:01:19 · 68081 阅读 · 29 评论 -
最简单的基于FFmpeg的解码器-纯净版(不包含libavformat)
本文记录一个更加“纯净”的基于FFmpeg的视频解码器。此前记录过基于FFmpeg的视频播放器实际上就是一个解码器:《最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)》这个播放器调用了FFmpeg中的libavformat和libavcodec两个库完成了视频解码工作。但是这不是一个“纯净”的解码器。该解码器中libavformat完成封装格式的解析,而libavcod原创 2015-01-03 14:31:33 · 68184 阅读 · 79 评论 -
最简单的基于DirectShow的示例:获取Filter信息
本文记录一个获取DirectShow的Filter信息的程序。该程序可以遍历当前系统中的DirectShow Filter并且将它们的信息打印到控制台中。通过本程序可以搞清楚DirectShow中Filter,Pin,MediaType等几个关键结构之间的关系,以及它们的信息的获取方法。原创 2015-01-12 21:03:08 · 21561 阅读 · 5 评论 -
最简单的视音频播放示例3:Direct3D播放YUV,RGB(通过Surface)
上一篇文章记录了GDI播放视频的技术。打算接下来写两篇文章记录Direct3D(简称D3D)播放视频的技术。Direct3D应该Windows下最常用的播放视频的技术。实际上视频播放只是Direct3D的“副业”,它主要用于3D游戏制作。当前主流的游戏几乎都是使用Direct3D制作的,例如《地下城与勇士》,《穿越火线》,《英雄联盟》,《魔兽世界》,《QQ飞车》等等。使用Direct3D可以用两种原创 2014-10-21 00:14:27 · 40793 阅读 · 22 评论 -
最简单的视频网站(JavaEE+FFmpeg)
本文记录一个最简单的视频网站系统。此前做过一些基于JavaEE中的SSH (Strut2 + Spring + Hibernate)的网站系统,但是一直没有做过一个视频网站系统,所以就打算做一个“精简”的视频网站系统,以方便以后测试以及学习使用。本视频网站支持直播(通过RTMP实现)和点播(通过HTTP实现)。为了保持精简,这个视频网站系统仅制作了网络视频的管理功能(增删改查),以及相关的参数配置功能。原创 2015-02-23 00:39:24 · 90264 阅读 · 61 评论 -
视音频数据处理入门:PCM音频采样数据处理
上一篇文章记录了RGB/YUV视频像素数据的处理方法,本文继续上一篇文章的内容,记录PCM音频采样数据的处理方法。音频采样数据在视频播放器的解码流程中的位置如下图所示。本文分别介绍如下几个PCM音频采样数据处理函数: 分离PCM16LE双声道音频采样数据的左声道和右声道 将PCM16LE双声道音频采样数据中左声道的音量降一半 将PCM16LE双声道音频采样数据的声音速度提高一倍 将PCM1原创 2016-01-29 23:32:13 · 174446 阅读 · 72 评论 -
视音频数据处理入门:H.264视频码流解析
前两篇文章介绍的YUV/RGB处理程序以及PCM处理程序都属于视音频原始数据的处理程序。从本文开始介绍视音频码流的处理程序。本文介绍的程序是视频码流处理程序。视频码流在视频播放器中的位置如下所示。本文中的程序是一个H.264码流解析程序。该程序可以从H.264码流中分析得到它的基本单元NALU,并且可以简单解析NALU首部的字段。通过修改该程序可以实现不同的H.264码流处理功能。原理H.264原原创 2016-01-31 00:19:50 · 235973 阅读 · 98 评论 -
视音频数据处理入门:AAC音频码流解析
本文继续上一篇文章的内容,介绍一个音频码流处理程序。音频码流在视频播放器中的位置如下所示。本文中的程序是一个AAC码流解析程序。该程序可以从AAC码流中分析得到它的基本单元ADTS frame,并且可以简单解析ADTS frame首部的字段。通过修改该程序可以实现不同的AAC码流处理功能。原理AAC原始码流(又称为“裸流”)是由一个一个的ADTS frame组成的。他们的结构如下图所示。其中每个A原创 2016-01-31 11:55:51 · 124102 阅读 · 61 评论 -
最简单的基于FFmpeg的AVDevice例子(读取摄像头)
FFmpeg中有一个和多媒体设备交互的类库:Libavdevice。使用这个库可以读取电脑(或者其他设备上)的多媒体设备的数据,或者输出数据到指定的多媒体设备上。Libavdevice支持以下设备作为输入端:alsaavfoundationbktrdshowdv1394fbdevgdigrabiec61883jacklavfilibcdiolibdc1394openalosspulseqtkits原创 2014-10-01 00:09:19 · 98500 阅读 · 115 评论 -
最简单的基于FFmpeg的AVDevice例子(屏幕录制)
FFmpeg中有一个和多媒体设备交互的类库:Libavdevice。使用这个库可以读取电脑的多媒体设备的数据,或者输出数据到指定的多媒体设备上。计划写2个有关FFmpeg的libavdevice类库的例子。上篇文章记录了一个基于FFmpeg的Libavdevice类库读取摄像头数据的例子。本篇文章记录一个基于FFmpeg的Libavdevice类库录制屏幕的例子。本文程序录制当前桌面内容并且解原创 2014-10-02 13:19:23 · 74531 阅读 · 93 评论 -
最简单的基于FFmpeg的内存读写的例子:内存播放器
打算记录两个最简单的FFmpeg进行内存读写的例子。之前的所有有关FFmpeg的例子都是对文件进行操作的。例如《最简单的基于FFmpeg+SDL的视频播放器》播放的是一个视频的文件。而《最简单的基于FFmpeg的转码器》也是将一个视频文件转换为另一个视频文件。《最简单的基于FFmpeg的视频编码器(YUV编码为H.264)》也是最后编码得到一个H.264视频文件。实际上,并不是所有视频的编码,解码原创 2014-10-05 12:15:44 · 36657 阅读 · 28 评论 -
我的开源项目:AAC格式分析器
本文介绍一个自己的开源小项目:AAC格式分析器。AAC全称是Advanced Audio Coding,是互联网上使用极为广泛的音频编码格式,也是当前性能差不多最好的音频编码格式。现有的互联网上的视频很大一部分都是使用AAC进行音频编码的。使用VC 2010的MFC开发完成。开发的时候使用了一个AAC的开源解码器faad2。目前软件的的分析功能还不是很强,提取了AAC解码过程中的一些参数。以后有...2014-01-13 00:42:00 · 2136 阅读 · 0 评论 -
我的开源项目:TS封装格式分析器
本文介绍一个自己的开源小项目:TS封装格式分析器。TS全称是 MPEG 2 Transport Stream(MPEG2 传输流),广泛用于广播电视系统,比如说数字电视,以及IPTV。我这个项目规模不大,主要可以用来学习TS封装格式结构。此外它还支持分离TS中的视频流和音频流。以及输出TS包的时间戳,PTS,DTS等。使用VC 2010的MFC开发完成。在对TS进行视音频分离的过程中,用到了一个...2014-01-14 00:03:00 · 1778 阅读 · 2 评论 -
我的开源项目:JPEG分析器
本文介绍一个自己的开源小项目:JPEG分析器。JPEG全称是 Joint Photographic Experts Group(联合图像专家小组),是当今使用最为广泛的图像编码标准。我这个项目规模不大,主要可以用来学习JPEG编码标准。结合着源代码看的话效果比较好。它支持将JPEG解码为像素数据(YUV或者RGB)。同时支持输出DCT系数等参数。使用VC 2010的MFC开发完成。用到了开源工程...2014-01-15 00:04:00 · 1326 阅读 · 0 评论 -
最简单的基于FFMPEG的转码程序
本文介绍一个简单的基于FFmpeg的转码器。转码器在视音频编解码处理的程序中,属于一个比较复杂的东西。因为它结合了视频的解码和编码。一个视频播放器,一般只包含解码功能;一个视频编码工具,一般只包含编码功能;而一个视频转码器,则需要先对视频进行解码,然后再对视频进行编码,因而相当于解码器和编码器的结合。下图例举了一个视频的转码流程。输入视频的封装格式是FLV,视频编码标准是H.264,音频编码标准...2014-05-25 00:01:00 · 1066 阅读 · 3 评论 -
ffplay播放器移植VC的工程:ffplay for MFC
本文介绍一个自己做的FFPLAY移植到VC下的开源工程:ffplayfor MFC。本工程将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下。并且使用MFC做了一套简单的界面。它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出。此外还包含一些控制功能:播放,暂停/继续,前进,后退,停止,逐帧播放,全屏等;以及一些简单的视...2014-06-06 00:07:00 · 985 阅读 · 0 评论 -
ffmpeg转码器移植VC的工程:ffmpeg for MFC
本文介绍一个自己做的FFMPEG移植到VC下的开源工程:ffmpeg for MFC。本工程将ffmpeg工程中的ffmpeg转码器(ffmpeg.c)移植到了VC环境下。并且使用MFC做了一套简单的界面。它可以完成一个视频转码的基本功能:封装格式以及编码格式的转换。通过本程序可以学习视频转码器的原理,以及Windows的消息机制等知识。平台:VC2010类库:FFmpeg,MFC...2014-06-07 23:59:00 · 859 阅读 · 0 评论 -
最简单的基于FFmpeg的AVfilter例子(水印叠加)
FFMPEG中有一个类库:libavfilter。该类库提供了各种视音频过滤器。之前一直没有怎么使用过这个类库,最近看了一下它的使用说明,发现还是很强大的,有很多现成的filter供使用,完成视频的处理很方便。在此将它的一个例子基础上完成了一个水印叠加器,并且移植到了VC2010下,方便开发人员学习研究它的使用方法。该例子完成了一个水印叠加的功能。可以将一张透明背景的PNG图片作为水印叠加...2014-06-09 00:03:00 · 1284 阅读 · 0 评论 -
开源实时视频码流分析软件:VideoEye
本文介绍一个自己做的码流分析软件:VideoEye。为什么要起这个名字呢?感觉这个软件的主要功能就是对“视频”进行“分析”。而分析是要用眼睛来看的,因此取了“视频”和“分析”这两个词的英文,名之曰:VideoEye。这个软件是在自己毕业设计软件的基础上改的。可以对本地文件或者互联网视频流进行实时的码流分析。由于这个软件是自己一边学习视音频技术一边制作的,所以涵盖了比较全面的功能。在编写这个软件的...2014-06-26 00:38:00 · 3955 阅读 · 1 评论 -
我的开源项目:FLV封装格式分析器
本文介绍一个自己的开源小项目:FLV封装格式分析器。FLV全称是Flash Video,是互联网上使用极为广泛的视频封装格式。像Youtube,优酷这类视频网站,都使用FLV封装视频。我这个项目规模不大,主要可以用来学习FLV封装格式结构。此外它还支持分离FLV中的视频流和音频流。使用VC 2010的MFC开发完成。在对FLV进行视音频分离的过程中,用到了一个Github开源小工程:flvpar...2014-01-12 00:01:00 · 1507 阅读 · 0 评论 -
我的开源项目:H.264码流分析器
本文介绍一个自己的开源小项目:H.264码流分析器。在学习过程中,从开源社区获得了很多的资源,在此也算是对开源社区的回馈了。我这个项目规模不大,主要可以用来学习H.264码流结构。使用VC 2010的MFC开发完成。在对H.264的NAL进行解析的过程中,用到了另外一个开源工程:h264bitstream。h264bitstream工程本身还是挺优秀的,可以比较详细的列出NAL的信息。软...2014-01-11 00:02:00 · 1819 阅读 · 1 评论 -
最简单的视音频播放示例9:SDL2播放PCM
本文记录SDL播放音频的技术。在这里使用的版本是SDL2。实际上SDL本身并不提供视音频播放的功能,它只是封装了视音频播放的底层API。在Windows平台下,SDL封装了Direct3D这类的API用于播放视频;封装了DirectSound这类的API用于播放音频。因为SDL的编写目的就是简化视音频播放的开发难度,所以使用SDL播放视频(YUV/RGB)和音频(PCM)数据非常的容易。SDL简介原创 2014-10-31 00:23:11 · 38764 阅读 · 11 评论 -
最简单的基于FFMPEG+SDL的音频播放器
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。在此我把自己做项目过程中实现的一个非常简单的音频播放器(大约100行代码)源代码传上来,以作备忘,同时方便新手学习FFMPEG。该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL输出解码出来的音频。并且支持流媒体等多种音频输入。程序使用了新的F原创 2013-08-29 17:11:09 · 86774 阅读 · 138 评论 -
最简单的基于FFMPEG+SDL的音频播放器 ver2 (采用SDL2.0)
简介之前做过一个简单的音频播放器:《最简单的基于FFMPEG+SDL的音频播放器》,采用的是SDL1.2。前两天刚把原先做的《最简单的基于FFMPEG+SDL的视频播放器》更新采用了SDL2.0,于是顺手也把音频播放器更新成为SDL2.0.SourceForge项目主页:https://sourceforge.net/projects/simplestffmpegaudioplayer/完整工程下原创 2014-09-01 14:26:55 · 42728 阅读 · 53 评论 -
最简单的基于FFmpeg的AVfilter的例子-纯净版
有关FFmpeg的avfilter已经写过一个水印叠加的例子《最简单的基于FFmpeg的AVfilter例子(水印叠加)》,本文作为补充再记录一个纯净版的avfilter的例子。此前libavfilter一直是结合着libavcodec等类库的接口函数使用的,因此我一直以为libavfilter库与libavcodec等类库是高度耦合的(也就是如果想使用libavfilter的视音频特效功能的话必原创 2016-02-01 13:55:04 · 110162 阅读 · 60 评论 -
视音频编解码学习工程:AAC格式分析器
本文介绍一个自己的开源小项目:AAC格式分析器。AAC全称是Advanced Audio Coding,是互联网上使用极为广泛的音频编码格式,也是当前性能差不多最好的音频编码格式。现有的互联网上的视频很大一部分都是使用AAC进行音频编码的。使用VC 2010的MFC开发完成。开发的时候使用了一个AAC的开源解码器faad2。目前软件的的分析功能还不是很强,提取了AAC解码过程中的一些参数。以后有时原创 2014-01-13 00:42:15 · 30023 阅读 · 17 评论 -
最简单的基于FFMPEG的图像编码器(YUV编码为JPEG)
伴随着毕业论文的完成,这两天终于腾出了空闲,又有时间搞搞FFMPEG的研究了。想着之前一直搞的都是FFMPEG解码方面的工作,很少涉及到FFMPEG编码方面的东西,于是打算研究一下FFMPEG的编码。在网上看了一些例子,发现要不然是难度略微有些大,要不然就是类库比较陈旧,于是就决定自己做一个编码方面的例子,方便以后学习。本文的编码器实现了YUV420P的数据编码为JPEG图片。本着简单的原...2014-05-09 00:25:00 · 852 阅读 · 0 评论 -
最简单的基于FFMPEG的音频编码器(PCM编码为AAC)
本文介绍一个最简单的基于FFMPEG的音频编码器。该编码器实现了PCM音频采样数据编码为AAC的压缩编码数据。编码器代码十分简单,但是每一行代码都很重要。通过看本编码器的源代码,可以了解FFMPEG音频编码的流程。本程序使用最新版的类库(编译时间为2014.5.6),开发平台为VC2010。所有的配置都已经做好,只需要运行就可以了。下面直接上代码: /* *最简单的基于F...2014-05-11 00:14:00 · 1471 阅读 · 0 评论 -
最简单的基于FFMPEG的视频编码器(YUV编码为H.264)
本文介绍一个最简单的基于FFMPEG的视频编码器。该编码器实现了YUV420P的像素数据编码为H.264的压缩编码数据。编码器代码十分简单,但是每一行代码都很重要,适合好好研究一下。弄清楚了本代码也就基本弄清楚了FFMPEG的编码流程。目前我虽然已经调通了程序,但是还是有些地方没有完全搞明白,需要下一步继续探究然后补充内容。本程序使用最新版的类库(编译时间为2014.5.6),开发平台为V...2014-05-12 00:42:00 · 1191 阅读 · 0 评论