专业领域程序指的是主要应用于科学实验方面的程序。这类程序并不是视音频技术开发必须的,主要用于研究工作。
简介
VideoEye是一个开源的实时视频分析的软件。本软件可以播放和分析视频数据。它支持多种视频流输入方式:HTTP,RTMP,RTSP以及文件等等。该软件可以实时分析视频流并能以图形化的方式呈现其分析结果。
文章
项目主页
SourceForge:https://sourceforge.net/projects/videoeye/
Github:https://github.com/leixiaohua1020/VideoEye
开源中国:http://git.oschina.net/leixiaohua1020/VideoEye
简介
本工具用于计算视频的时间信息(TI,也称为时间复杂度),以及空间信息(SI,也称为空间复杂度),以上两个指标取自于ITU-R BT.1788标准。
文章
《视频特性TI(时间信息)和SI(空间信息)的计算工具:TIandSI》
项目主页
SourceForge:https://sourceforge.net/projects/tiandsi/
Github:https://github.com/leixiaohua1020/TIandSI
开源中国:http://git.oschina.net/leixiaohua1020/TIandSI
FFmpeg示例程序是我做的最多的一类程序。这些示例程序展示了利用FFmpeg的类库进行视音频程序开发的方法,比较适合新手学习FFmpeg。目前这些示例程序已经覆盖了从流媒体接收,解封装,解码,像素转换,编码,封装,流媒体发送所有这些流程。
下面我们上述几个层次对FFmpeg示例程序进行归类。
协议层处理包含以下项目:
封装层处理包含以下项目:
编码层处理包含以下项目:
像素层处理包含以下项目:
下面逐一列出这些项目的信息。
最简单的基于FFMPEG的视频播放器
简介
本程序实现了视频文件的解码和显示。是最简单的FFmpeg视频解码方面的教程。通过学习本例子可以了解FFmpeg的解码流程。
项目包含3个工程:
simplest_ffmpeg_player:标准版,FFmpeg学习的开始。
simplest_ffmpeg_player_su:SU(SDL Update)版,加入了简单的SDL的Event。
simplest_ffmpeg_decoder_pure:一个纯净的解码器只使用libavcodec(没有使用libavformat)。
文章
《100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)》
《最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)》
《最简单的基于FFmpeg的解码器-纯净版(不包含libavformat)》
项目主页
SourceForge:https://sourceforge.net/projects/simplestffmpegplayer/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_player
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_player
最简单的基于FFMPEG的音频播放器
简介
本程序实现了音频的解码和播放。是最简单的FFmpeg音频解码方面的教程。通过学习本例子可以了解FFmpeg的解码流程。
文章
《最简单的基于FFMPEG+SDL的音频播放器 ver2 (采用SDL2.0)》
项目主页
SourceForge:https://sourceforge.net/projects/simplestffmpegaudioplayer/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_audio_player
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_audio_player
最简单的基于FFMPEG的图像编码器
简介
本程序实现了YUV420P像素数据编码为JPEG图片。是最简单的FFmpeg编码方面的教程。通过学习本例子可以了解FFmpeg的编码流程。
文章
《最简单的基于FFMPEG的图像编码器(YUV编码为JPEG)》
项目主页
SourceForge:https://sourceforge.net/projects/simplestffmpegpictureencoder/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_picture_encoder
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_picture_encoder
最简单的基于FFMPEG的视频编码器
简介
本程序实现了YUV像素数据编码为视频码流(H.265,H264,MPEG2,VP8等等)。是最简单的FFmpeg视频编码方面的教程。通过学习本例子可以了解FFmpeg的编码流程。
它包含以下两个子项目:
simplest_ffmpeg_video_encoder:普通版编码器。使用libavcodec和libavformat编码并且封装视频。
simplest_ffmpeg_video_encoder_pure:纯净版编码器。仅使用libavcodec编码视频,不使用libavformat。
文章
《最简单的基于FFMPEG的视频编码器(YUV编码为H.264)》
《最简单的基于FFmpeg的视频编码器-更新版(YUV编码为HEVC(H.265))》
项目主页
SourceForge:https://sourceforge.net/projects/simplestffmpegvideoencoder/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_video_encoder
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_video_encoder
最简单的基于FFMPEG的音频编码器
简介
本程序实现了音频PCM采样数据编码为压缩码流(MP3,WMA,AAC等)。是最简单的FFmpeg音频编码方面的教程。通过学习本例子可以了解FFmpeg的编码流程。
文章
《最简单的基于FFMPEG的音频编码器(PCM编码为AAC)》
项目主页
SourceForge:https://sourceforge.net/projects/simplestffmpegaudioencoder/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_audio_encoder
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_audio_encoder
最简单的基于FFMPEG的封装格式处理
简介
该解决方案包含了使用FFmpeg进行封装格式处理的各种例子:
simplest_ffmpeg_demuxer:视音频分离器。
simplest_ffmpeg_demuxer_simple:视音频分离器(简化版)。
simplest_ffmpeg_muxer:视音频复用器。
simplest_ffmpeg_remuxer:封装格式转换器。
文章
《最简单的基于FFmpeg的封装格式处理:视音频分离器简化版(demuxer-simple)》
《最简单的基于FFmpeg的封装格式处理:视音频分离器(demuxer)》
《最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)》
《最简单的基于FFMPEG的封装格式处理:封装格式转换(remuxer)》
项目主页
SourceForge:https://sourceforge.net/projects/simplestffmpegformat/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_format
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_format
最简单的基于FFmpeg的推流器(推送RTMP)
简介
本例子实现了推送本地视频至流媒体服务器(以RTMP为例)。是使用FFmpeg进行流媒体推送最简单的教程。
文章
项目主页
SourceForge:https://sourceforge.net/projects/simplestffmpegstreamer/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_streamer
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_streamer
最简单的基于FFmpeg的AVfilter例子(水印叠加)
简介
本程序使用FFmpeg的AVfilter实现了视频的水印叠加功能。可以将一张PNG图片作为水印叠加到视频上。是最简单的FFmpeg的AVFilter方面的教程。
文章
《最简单的基于FFmpeg的AVfilter例子(水印叠加)》
项目主页
SourceForge:https://sourceforge.net/projects/simplestffmpegvideofilter/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_video_filter
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_video_filter
最简单的基于FFmpeg的libswscale的示例
简介
本程序是最简单的基于FFmpeg的libswscale进行像素处理的示例。它包含了两个工程:
simplest_ffmpeg_swscale: 最简单的libswscale的教程。
simplest_pic_gen: 生成各种测试图片的工具。
文章
《最简单的基于FFmpeg的libswscale的示例附件:测试图片生成工具》
项目主页
SourceForge:https://sourceforge.net/projects/simplestffmpegswscale/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_swscale
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_swscale
最简单的基于FFmpeg的AVDevice例子
简介
本工程包含两个基于FFmpeg的libavdevice的例子:
simplest_ffmpeg_grabdesktop:屏幕录制。
simplest_ffmpeg_readcamera:读取摄像头。
文章
《最简单的基于FFmpeg的AVDevice例子(屏幕录制)》
《最简单的基于FFmpeg的AVDevice例子(读取摄像头)》
项目主页
SourceForge:https://sourceforge.net/projects/simplestffmpegdevice/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_device
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_device
最简单的基于FFmpeg的内存读写例子
简介
本程序实现了对内存中的视频数据的读写。包含两个工程:
simplest_ffmpeg_mem_player:播放内存中视频数据的播放器。
simplest_ffmpeg_mem_transcoder:转码内存中数据的转码器。
文章
项目主页
SourceForge:https://sourceforge.net/projects/simplestffmpegmemhandler/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_mem_handler
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_mem_handler
FFmpeg移植程序是将FFmpeg项目中的命令行工具“ffplay”和“ffmpeg”的源代码(ffplay.c和ffmpeg.c)移植到VC下后编写的程序。移植后的程序保留了原本命令行工具的大部分功能,并且使用MFC做了一套界面,使用起来相对方便一些。其实相比与实际应用来说,这两个工程更加适合作为学习材料。可以通过它们研究播放器,转码器的原理。
简介
本工程将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下。并且使用MFC做了一套简单的界面。
文章
《ffplay播放器移植VC的工程:ffplay for MFC》
项目主页
SourceForge:https://sourceforge.net/projects/ffplayformfc/
Github:https://github.com/leixiaohua1020/ffplaymfc
开源中国:http://git.oschina.net/leixiaohua1020/ffplay-for-MFC
简介
本工程将ffmpeg工程中的ffmpeg转码器(ffmpeg.c)移植到了VC环境下。并且使用MFC做了一套简单的界面。文章
《ffmpeg转码器移植VC的工程:ffmpeg for MFC》
项目主页
SourceForge:https://sourceforge.net/projects/ffmpegformfc/
Github:https://github.com/leixiaohua1020/ffmpegmfc
开源中国:http://git.oschina.net/leixiaohua1020/ffmpeg-for-MFC
除了做了基于FFmpeg的多媒体程序之外,还做了一些基于其他多媒体项目的示例。如下文所列。
最简单的视音频播放示例
简介
本工程包含了使用各种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视频像素数据。
文章
《最简单的视音频播放示例3:Direct3D播放YUV,RGB(通过Surface)》
《最简单的视音频播放示例4:Direct3D播放RGB(通过Texture)》
《最简单的视音频播放示例5:OpenGL播放RGB/YUV》
《最简单的视音频播放示例6:OpenGL播放YUV420P(通过Texture,使用Shader)》
《最简单的视音频播放示例8:DirectSound播放PCM》
项目主页
SourceForge:https://sourceforge.net/projects/simplestmediaplay/
Github:https://github.com/leixiaohua1020/simplest_media_play
开源中国:http://git.oschina.net/leixiaohua1020/simplest_media_play
最简单的编码器例子
简介
该解决方案包含了几个常见的编码器的使用示例:
simplest_vpx_encoder:最简单的基于libvpx的视频编码器
simplest_x264_encoder:最简单的基于libx264的视频编码器
simplest_x265_encoder:最简单的基于libx265的视频编码器
文章
《最简单的视频编码器:编译(libx264,libx265,libvpx)》
《最简单的视频编码器:基于libx264(编码YUV为H.264)》
《最简单的视频编码器:基于libx265(编码YUV为H.265)》
《最简单的视频编码器:基于libvpx(编码YUV为VP8)》
项目主页
SourceForge:https://sourceforge.net/projects/simplestencoder/
Github:https://github.com/leixiaohua1020/simplest_encoder
开源中国:http://git.oschina.net/leixiaohua1020/simplest_encoder
最简单的基于librtmp的示例
简介
本工程包含了LibRTMP的使用示例,包含如下子工程:simplest_librtmp_receive: 接收RTMP流媒体并在本地保存成FLV格式的文件。
simplest_librtmp_send_flv: 将FLV格式的视音频文件使用RTMP推送至RTMP流媒体服务器。simplest_librtmp_send264: 将内存中的H.264数据推送至RTMP流媒体服务器。
《最简单的基于librtmp的示例:接收(RTMP保存为FLV)》
《最简单的基于librtmp的示例:发布(FLV通过RTMP发布)》
《最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)》
项目主页
SourceForge:https://sourceforge.net/projects/simplestlibrtmpexample/
Github:https://github.com/leixiaohua1020/simplest_librtmp_example
开源中国:http://git.oschina.net/leixiaohua1020/simplest_librtmp_example最简单的基于libVLC的例子
简介
本工程是包含了一些基于libVLC的示例程序。一共包含了如下几个子程序。
playerGUI: 最简单的基于libVLC的播放器-图形界面版。
simplest_libvlc_example: 最简单的基于libVLC的播放器。
simplest_libvlc_streamer: 最简单的基于libVLC的推流器。
文章
《最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器》
《最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器(图形界面版)》
《最简单的基于libVLC的例子:最简单的基于libVLC的推流器》
项目主页
SourceForge:https://sourceforge.net/projects/simplestlibvlcexample/
Github:https://github.com/leixiaohua1020/simplest_libvlc_example
开源中国:http://git.oschina.net/leixiaohua1020/simplest_libvlc_example
最简单的基于DirectShow的示例
简介
本程序包含了DirectShow开发的示例程序。适合DirectShow初学者进行学习。simplest_directshow_player: 最简单的基于DirectShow的视频播放器。
simplest_directshow_player_custom: 最简单的基于DirectShow的视频播放器(Custom)。
playerGUI: 最简单的基于DirectShow的播放器-图形界面版。
simplest_directshow_info: 最简单的Directshow信息显示例子。
simplest_directshow_filter: 目前还未完成。
文章
《最简单的基于DirectShow的示例:视频播放器图形界面版》
《最简单的基于DirectShow的示例:视频播放器自定义版》
《最简单的基于DirectShow的示例:获取Filter信息》项目主页
SourceForge:https://sourceforge.net/projects/simplestdirectshowexample/
Github:https://github.com/leixiaohua1020/simplest_directshow_example
开源中国:http://git.oschina.net/leixiaohua1020/simplest_directshow_example
视音频编解码学习工程主要用于学习编解码的原理。这几个工程都是简单的“码流分析”工具。他们可以分析不同格式的多媒体数据:TS封装格式,FLV封装格式,H.264码流,AAC码流,JPEG压缩图片。
这几个程序我完成的比较早,是我在学习视音频技术初期边看理论边实践着做出来的。因此功能上还有一些不足,一直也没有时间修正,有时间再把它们统一更新一下。
文章
项目主页
SourceForge:https://sourceforge.net/projects/h264streamanalysis/
Github:https://github.com/leixiaohua1020/h264_analysis
开源中国:http://git.oschina.net/leixiaohua1020/H264_Analysis
AAC格式分析器
文章
项目主页
SourceForge:https://sourceforge.net/projects/aacstreamanalysis/FLV封装格式分析器
文章
项目主页
SourceForge:https://sourceforge.net/projects/flvformatanalysis/
TS封装格式分析器
文章
项目主页
SourceForge:https://sourceforge.net/projects/tsformatanalysis/JPEG分析器
文章
项目主页
SourceForge:https://sourceforge.net/projects/jpeganalysis/1.1 VideoEye2. FFmpeg示例程序
1.2 TIandSI
2.1 Simplest ffmpeg player | 最简单的基于FFMPEG的视频播放器
包括了如下几个子工程:simplest_ffmpeg_player:标准版,FFmpeg学习的开始。simplest_ffmpeg_player_su:SU(SDL Update)版,加入了简单的SDL的Event。simplest_ffmpeg_decoder_pure:一个纯净的解码器只使用libavcodec(没有使用libavformat)。
2.2 simplest ffmpeg audio player | 最简单的基于FFMPEG的音频播放器
2.3 simplest ffmpeg picture encoder | 最简单的基于FFMPEG的图像编码器
2.4 simplest ffmpeg video encoder | 最简单的基于FFMPEG的视频编码器
包括了如下几个子工程:simplest_ffmpeg_video_encoder:普通版编码器。使用libavcodec和libavformat编码并且封装视频。simplest_ffmpeg_video_encoder_pure:纯净版编码器。仅使用libavcodec编码视频,不使用libavformat。
2.5 simplest ffmpeg audio encoder | 最简单的基于FFMPEG的音频编码器
2.6 simplest ffmpeg format | 最简单的基于FFMPEG的封装格式处理
包括了如下几个子工程:simplest_ffmpeg_demuxer:视音频分离器。simplest_ffmpeg_demuxer_simple:视音频分离器(简化版)。simplest_ffmpeg_muxer:视音频复用器。simplest_ffmpeg_remuxer:封装格式转换器。
2.7 simplest ffmpeg streamer | 最简单的基于FFmpeg的推流器(推送RTMP)
2.8 simplest ffmpeg video filter | 最简单的基于FFmpeg的AVfilter例子(水印叠加)
2.9 simplest ffmpeg swscale | 最简单的基于FFmpeg的libswscale的示例
包括了如下几个子工程:simplest_ffmpeg_swscale: 最简单的libswscale的教程。simplest_pic_gen: 生成各种测试图片的工具。
2.10 simplest ffmpeg device | 最简单的基于FFmpeg的AVDevice例子
包括了如下几个子工程:simplest_ffmpeg_grabdesktop:屏幕录制。simplest_ffmpeg_readcamera:读取摄像头。
2.11 simplest ffmpeg mem handler | 最简单的基于FFmpeg的内存读写例子
3. FFmpeg移植程序包括了如下几个子工程:simplest_ffmpeg_mem_player:播放内存中视频数据的播放器。simplest_ffmpeg_mem_transcoder:转码内存中数据的转码器。
3.1 FFPLAY for MFC4. 多媒体项目示例程序
3.2 FFMPEG for MFC
4.1 simplest media play | 最简单的视音频播放示例
包括了如下几个子工程: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视频像素数据。
4.2 simplest encoder | 最简单的编码器例子
包括了如下几个子工程:simplest_vpx_encoder:最简单的基于libvpx的视频编码器simplest_x264_encoder:最简单的基于libx264的视频编码器simplest_x265_encoder:最简单的基于libx265的视频编码器
4.3 simplest libRTMP example | 最简单的基于librtmp的示例
包括了如下几个子工程:simplest_librtmp_receive: 接收RTMP流媒体并在本地保存成FLV格式的文件。simplest_librtmp_send_flv: 将FLV格式的视音频文件使用RTMP推送至RTMP流媒体服务器。simplest_librtmp_send264: 将内存中的H.264数据推送至RTMP流媒体服务器。
4.4 simplest libVLC example | 最简单的基于libVLC的例子
包括了如下几个子工程:playerGUI: 最简单的基于libVLC的播放器-图形界面版。simplest_libvlc_example: 最简单的基于libVLC的播放器。simplest_libvlc_streamer: 最简单的基于libVLC的推流器。
4.5 simplest directshow example | 最简单的基于DirectShow的示例
5.视音频编解码学习工程包括了如下几个子工程:simplest_directshow_player: 最简单的基于DirectShow的视频播放器。simplest_directshow_player_custom: 最简单的基于DirectShow的视频播放器(Custom)。playerGUI: 最简单的基于DirectShow的播放器-图形界面版。simplest_directshow_info: 最简单的Directshow信息显示例子。simplest_directshow_filter: 目前还未完成。
5.1 H264 Stream Analysis | H.264分析器
5.2 AAC Stream Analysis | AAC格式分析器
5.3 FLV Format Analysis | FLV封装格式分析器
5.4 TS Format Analysis | TS封装格式分析器
5.5 JPEG Analysis | JPEG分析器
原文地址:http://blog.csdn.net/leixiaohua1020/article/details/42658139