rtmpdump vs2005版本
RTMPdump(包括libRTMP)的VS2005可以编译通过的源代码。
开源H.264码流分析器(程序+源代码)
自己做的H.264码流分析工具。可以分析每个NAL的信息,支持中英双语。
本着开源的原则,包含了源代码。工程使用VC2010和MFC开发完成。
MediaInfo_GUI (图形化的界面)
MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件。这是新版的,支持HEVC码流的分析。
最简单的视音频播放示例
本工程包含了使用各种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视频像素数据。
HEVC 码流分析工具 (Elecard出品)
HEVC的码流分析,功能极为强大,而且是免费的,学习HEVC必备。
YUV Player
自己修改过的YUV播放器,支持RGB、YUV等格式的播放。
视音频数据处理入门
本项目包含如下几种视音频数据解析示例:
(1)像素数据处理程序。包含RGB和YUV像素格式处理的函数。
(2)音频采样数据处理程序。包含PCM音频采样格式处理的函数。
(3)H.264码流分析程序。可以分离并解析NALU。
(4)AAC码流分析程序。可以分离并解析ADTS帧。
(5)FLV封装格式分析程序。可以将FLV中的MP3音频码流分离出来。
(6)UDP-RTP协议分析程序。可以将分析UDP/RTP/MPEG-TS数据包。
最简单的基于FFmpeg的AVFilter例子 1.2
本程序使用包含下面两个项目:
simplest_ffmpeg_video_filter:可以将一张PNG图片作为水印叠加到视频上,结合使用了libavfilter,libavcodec等类库。
simplest_ffmpeg_video_filter_pure:可以给YUV像素数据加特效,只用了libavfilter库。
最简单的基于FFMPEG+SDL的视频播放器 2.5
本程序实现了视频文件的解码和显示(支持HEVC,H.264,MPEG2等)。
是最简单的FFmpeg视频解码方面的教程。
通过学习本例子可以了解FFmpeg的解码流程。
项目包含6个工程:
simplest_ffmpeg_player:标准版,FFmpeg学习的开始。
simplest_ffmpeg_player_su:SU(SDL Update)版,加入了简单的SDL的Event。
simplest_ffmpeg_decoder:一个包含了封装格式处理功能的解码器。使用了libavcodec和libavformat。
simplest_ffmpeg_decoder_pure:一个纯净的解码器。只使用libavcodec(没有使用libavformat)。
simplest_video_play_sdl2:使用SDL2播放YUV的例子。
simplest_ffmpeg_helloworld:输出FFmpeg类库的信息。
最简单的基于FFmpeg的推流器 1.2
本例子实现了推送本地视频至流媒体服务器(以RTMP为例)。
是使用FFmpeg进行流媒体推送最简单的教程。
解决方案包含2个项目:
simplest_ffmpeg_streamer: 将本地视频文件推送至流媒体服务器。
simplest_ffmpeg_receiver: 将流媒体数据保存成本地文件。
最简单的基于FFmpeg的编码器 1.2
本程序实现了YUV像素数据编码为视频码流(H.265,H264,MPEG2,VP8等等)。是最简单的FFmpeg视频编码方面的教程。它包含以下两个子项目:
simplest_ffmpeg_video_encoder:最简单的基于FFmpeg的视频编码器。使用libavcodec和libavformat编码并且封装视频。 simplest_ffmpeg_video_encoder_pure:最简单的基于FFmpeg的视频编码器-纯净版。仅使用libavcodec编码视频,不使用libavformat。
1.2版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
最简单的基于libVLC的例子
本工程是包含了一些基于libVLC的示例程序。一共包含了如下几个子程序。
playerGUI: 最简单的基于libVLC的播放器-图形界面版。
simplest_libvlc_example: 最简单的基于libVLC的播放器。
simplest_libvlc_streamer: 最简单的基于libVLC的推流器。
最简单的基于FFmpeg的推流器(以推送RTMP为例)
本例子实现了推送本地视频至流媒体服务器(以RTMP为例)。
是使用FFmpeg进行流媒体推送最简单的教程。
最简单的基于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”功能,用于在解码循环结束后,输出解码器中剩余的几帧数据。
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进行转码。
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进行转码。
JPEG分析器 1.1 (源代码)
自己做的JPEG分析工具。主要可以用于JPEG编码标准的学习。同时也支持解码,以及输出文件头中相关的信息。
支持JPEG文件作为输入。
工程使用VC2010和MFC开发完成。
VideoEye 0.2 源代码
VideoEye是一个开源的视频分析的软件。本软件可以播放和分析视频数据。它支持多种视频流输入方式:HTTP,RTMP,RTSP以及文件等等。该软件可以实时分析视频流并能以图形化的方式呈现其分析结果。
目前该软件还处于完善阶段。
这是0.2版本的源代码,使用VC2010开发完成。
VideoEye 0.2 测试版
VideoEye是一个开源的视频分析的软件。本软件可以播放和分析视频数据。它支持多种视频流输入方式:HTTP,RTMP,RTSP以及文件等等。该软件可以实时分析视频流并能以图形化的方式呈现其分析结果。
目前该软件还处于完善阶段。
这是当前版本的可执行程序,使用VC2010开发完成。
VideoEye 0.1 源代码
VideoEye是一个开源的视频分析的软件。本软件可以播放和分析视频数据。它支持多种视频流输入方式:HTTP,RTMP,RTSP以及文件等等。该软件可以实时分析视频流并能以图形化的方式呈现其分析结果。
目前该软件还处于完善阶段。
这是当前版本的源代码,使用VC2010开发完成。
最简单的基于FFMPEG的转码器(源代码)
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。因此特地分离出了一个简单的视频编码器供学习之用。
该视频转码器实现了视频格式之间的转换。包含了封装格式的转换以及视音频编码格式的转换。
尽管该视频转码器的代码十分简单,但是几乎包含了使用FFMPEG转码一个视频所有必备的API。十分适合FFmpeg的初学者。
工程基于VC2010。
使用了2014.5.6版本的FFmpeg类库。
最简单的基于FFMPEG的视频编码器
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。因此特地分离出了一个简单的视频编码器供学习之用。
该视频编码器实现了YUV420P像素数据编码为H.264码流
尽管该视频编码器的代码十分简单,但是几乎包含了使用FFMPEG编码一个视频所有必备的API。十分适合FFmpeg的初学者。
工程基于VC2010。
使用了2014.5.6版本的FFmpeg类库。
x265.exe (开源HEVC编码器)
x265是一个开源项目,是一个将视频编码为h.265/高效率的视频编码(HEVC)格式的免费的库,在GNU GPL条款下发布。
这个是已经编译好可以直接使用的可执行程序。
最简单的使用命令如下:
x265 --input-res 480x272 --fps 25 src01_480x272.yuv -o src01_x265.h265
开源MPEG2-TS格式分析工具
自己做的MPEG2-TS分析工具。支持中英双语。
本着开源的原则,包含了源代码。工程使用VC2010和MFC开发完成。
ITU-R BT.1788 建议书 (视频主观质量评价标准)
ITU-R BT.1788 建议书,视频主观质量评价国际标准
Evalvid (视频质量评价工具)
Evalvid是一个对在真实或模拟的网络里传输的视频进行质量评价的框架和工具集。除了底层网络的QoS参数的测量,如丢包率,延迟,抖动,Evalvid还提供标准的视频质量评价算法如PSNR和SSIM。它视频编码方面支持H.264,MPEG-4和H.263。音频编码方面支持AAC。
用户体验质量(QoE)的模型与评价方法综述
用户体验质量(QoE)的模型与评价方法综述,对QoE概述的很全。
最简单的基于FFmpeg的AVFilter例子(叠加水印) 1.1
本程序使用FFmpeg的AVfilter实现了视频的水印叠加功能。可以将一张PNG图片作为水印叠加到视频上。
是最简单的FFmpeg的AVFilter方面的教程。适合FFmpeg的初学者。
1.1版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
最简单的视频编码器示例
该解决方案包含了几个常见的编码器的使用示例:
simplest_vpx_encoder:最简单的基于libvpx的视频编码器
simplest_x264_encoder:最简单的基于libx264的视频编码器
simplest_x265_encoder:最简单的基于libx265的视频编码器
最简单的基于FFMPEG+SDL的视频播放器-最终版
本程序实现了视频文件的解码和显示(支持HEVC,H.264,MPEG2等)。是最简单的FFmpeg视频解码方面的教程。通过学习本例子可以了解FFmpeg的解码流程。
项目包含两个工程:
simplest_ffmpeg_player:标准版,FFmpeg学习的开始。 simplest_ffmpeg_player_su:SU(SDL Update)版,加入了简单的SDL的Event。
这显示该程序的最终版,除了支持VC2010之外,也支持如下几种编译方式:
cl.exe命令行编译;
mingw编译;
gcc编译;
gcc(MacOS)编译;
此外修复了个别操作系统(例如Ubuntu)中绿屏的问题。
最简单的基于FFMPEG的视频编码器(修正)
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。因此特地分离出了一个简单的视频编码器供学习之用。
该视频编码器实现了YUV420P像素数据编码为H.264码流
尽管该视频编码器的代码十分简单,但是几乎包含了使用FFMPEG编码一个视频所有必备的API。十分适合FFmpeg的初学者。
工程基于VC2010。
使用了2014.5.6版本的FFmpeg类库。
注:这是修正版,增加了flush_encoder()函数
tiny jpeg decoder (JPEG解码器)
tiny jpeg decoder 是可以用于嵌入式系统的jpeg解码器,也可以在windows下编译通过。
最简单的基于FFMPEG+SDL的视频播放器
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。
因此我把自己做项目过程中实现的一个非常简单的视频播放器(大约100行代码)源代码传上来,以作备忘,同时方便新手学习FFMPEG。
该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个视频所有必备的API,并且使用SDL显示解码出来的视频。
最简单的基于FFMPEG的AVDevice的例子 1.2
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。因此做了一个FFmpeg中的libavdevice类库的使用例子。
本工程包含两个基于FFmpeg的libavdevice的例子:
simplest_ffmpeg_grabdesktop:屏幕录制。
simplest_ffmpeg_readcamera:读取摄像头。
1.2版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
MPlayer 源代码
MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流作业系统使用,例如Linux和其他类Unix系统、Windows及Mac OS X系统。
本代码经过测试可以编译通过。
最简单的基于FFMPEG+SDL的视频播放器(2014.5.6)
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。
该播放器代码十分简单,只有约100行左右。但是几乎包含了使用FFMPEG播放一个视频所有必备的API,并且使用SDL显示解码出来的视频。十分适合新手学习FFmpeg。
使用了2014.5.6编译的类库,支持最新的HEVC以及VP9.
最简单的基于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版本。
最简单的基于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一帧
rtmp 协议规范 中文版
rtmp的协议规范,中文版的,学习RTMP协议的好资源。
最简单的基于DirectShow的示例
本程序包含了DirectShow开发的示例程序。适合DirectShow初学者进行学习。
它包含了以下几个子程序:
simplest_directshow_player: 最简单的基于DirectShow的视频播放器。
simplest_directshow_player_custom: 最简单的基于DirectShow的视频播放器(Custom)。
playerGUI: 最简单的基于DirectShow的播放器-图形界面版。
simplest_directshow_info: 最简单的Directshow信息显示例子。
simplest_directshow_filter: 目前还未完成。