最简单的基于FFmpeg的内存读写的例子 1.1
本程序实现了FFmpeg对内存中的视频数据的读写。包含两个工程: simplest_ffmpeg_mem_player:播放内存中视频数据的播放器。 simplest_ffmpeg_mem_transcoder:转码内存中数据的转码器。
1.1版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
最简单的基于FFMPEG的AVDevice的例子 1.2
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。因此做了一个FFmpeg中的libavdevice类库的使用例子。
本工程包含两个基于FFmpeg的libavdevice的例子:
simplest_ffmpeg_grabdesktop:屏幕录制。
simplest_ffmpeg_readcamera:读取摄像头。
1.2版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
最简单的基于FFmpeg的libswscale的教程 1.1
本教程是最简单的基于FFmpeg的libswscale进行像素处理的教程。它包含了两个工程:
simplest_ffmpeg_swscale: 最简单的libswscale的教程(YUV420P转RGB24)。
simplest_pic_gen: 生成各种测试图片的工具。
1.1版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
最简单的基于FFmpeg的AVFilter例子(叠加水印) 1.1
本程序使用FFmpeg的AVfilter实现了视频的水印叠加功能。可以将一张PNG图片作为水印叠加到视频上。
是最简单的FFmpeg的AVFilter方面的教程。适合FFmpeg的初学者。
1.1版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
最简单的基于FFmpeg的推流器(以推送RTMP为例) 1.1
本例子实现了推送本地视频至流媒体服务器(以RTMP为例)。是使用FFmpeg进行流媒体推送最简单的教程。
1.1版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
最简单的基于FFmpeg的封装格式处理 1.2
该解决方案包含了使用FFmpeg进行封装格式处理的各种例子:
simplest ffmpeg demuxer:视音频分离器
simplest ffmpeg demuxer simple:视音频分离器(简化版)
simplest ffmpeg muxer:视音频复用器
simplest ffmpeg remuxer:封装格式转换器
1.2版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
最简单的基于FFMPEG的音频编码器 1.1
该音频编码器实现了音频PCM采样数据编码为AAC码流。 尽管该音频编码器的代码十分简单,但是几乎包含了使用FFMPEG编码一个音频所有必备的API。十分适合FFmpeg的初学者。
1.1版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
最简单的基于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。
最简单的基于FFmpeg的图像编码器 1.1
该图像编码器实现了YUV420P的数据编码为JPEG图片。尽管该图像编码器的代码十分简单,但是几乎包含了使用FFMPEG编码一个图像所有必备的API。十分适合FFmpeg的初学者。
1.1版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
最简单的基于FFMPEG+SDL的音频播放器 2.1
本程序实现了音频的解码和播放。是最简单的FFmpeg音频解码方面的教程。通过学习本例子可以了解FFmpeg的解码流程。该版本使用SDL 2.0替换了第一个版本中的SDL 1.0。
2.1版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
最简单的基于DirectShow的示例
本程序包含了DirectShow开发的示例程序。适合DirectShow初学者进行学习。
它包含了以下几个子程序:
simplest_directshow_player: 最简单的基于DirectShow的视频播放器。
simplest_directshow_player_custom: 最简单的基于DirectShow的视频播放器(Custom)。
playerGUI: 最简单的基于DirectShow的播放器-图形界面版。
simplest_directshow_info: 最简单的Directshow信息显示例子。
simplest_directshow_filter: 目前还未完成。
最简单的基于FFMPEG的AVDevice的例子 1.1
本工程包含两个基于FFmpeg的libavdevice的例子:
simplest_ffmpeg_grabdesktop:屏幕录制。
simplest_ffmpeg_readcamera:读取摄像头。
工程基于VC2010,配置都已经做好,可以直接运行查看结果。
1.1版更新:
弹出的窗口可以移动了。
最简单的基于libVLC的例子
本工程是包含了一些基于libVLC的示例程序。一共包含了如下几个子程序。
playerGUI: 最简单的基于libVLC的播放器-图形界面版。
simplest_libvlc_example: 最简单的基于libVLC的播放器。
simplest_libvlc_streamer: 最简单的基于libVLC的推流器。
最简单的基于FFMPEG+SDL的视频播放器 2.3
本程序实现了视频文件的解码和显示(支持HEVC,H.264,MPEG2等)。
是最简单的FFmpeg视频解码方面的教程。
通过学习本例子可以了解FFmpeg的解码流程。
项目包含3个工程:
simplest_ffmpeg_player:标准版,FFmpeg学习的开始。
simplest_ffmpeg_player_su:SU(SDL Update)版,加入了简单的SDL的Event。
simplest_ffmpeg_decoder_pure:一个纯净的解码器。
2.3版加入simplest_ffmpeg_decoder_pure工程。
最简单的基于FFmpeg的编码器 1.1
本程序实现了YUV像素数据编码为视频码流(H.265,H264,MPEG2,VP8等等)。
是最简单的FFmpeg视频编码方面的教程。
它包含以下两个子项目:
simplest_ffmpeg_video_encoder:最简单的基于FFmpeg的视频编码器。使用libavcodec和libavformat编码并且封装视频。
simplest_ffmpeg_video_encoder_pure:最简单的基于FFmpeg的视频编码器-纯净版。仅使用libavcodec编码视频,不使用libavformat。
最简单的基于FFmpeg的libswscale的教程
本教程是最简单的基于FFmpeg的libswscale进行像素处理的教程。它包含了两个工程:
simplest_ffmpeg_swscale: 最简单的libswscale的教程。
simplest_pic_gen: 生成各种测试图片的工具。
最简单的基于libRTMP的示例
本工程包含了LibRTMP的使用示例,包含如下子工程:
simplest_librtmp_receive: 接收RTMP流媒体并在本地保存成FLV格式的文件。
simplest_librtmp_send_flv: 将FLV格式的视音频文件使用RTMP推送至RTMP流媒体服务器。
simplest_librtmp_send264: 将内存中的H.264数据推送至RTMP流媒体服务器。
最简单的基于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 [更多]
最简单的视音频播放示例 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版修复了一些问题
最简单的视频编码器示例
该解决方案包含了几个常见的编码器的使用示例:
simplest_vpx_encoder:最简单的基于libvpx的视频编码器
simplest_x264_encoder:最简单的基于libx264的视频编码器
simplest_x265_encoder:最简单的基于libx265的视频编码器
最简单的视音频播放示例
本工程包含了使用各种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视频像素数据。
最简单的基于FFmpeg的封装格式处理的例子
该解决方案包含了使用FFmpeg进行封装格式处理的各种例子:
simplest_ffmpeg_demuxer:视音频分离器。
simplest_ffmpeg_demuxer_simple:视音频分离器(简化版)。
simplest_ffmpeg_muxer:视音频复用器。
simplest_ffmpeg_remuxer:封装格式转换器。
最简单的基于FFmpeg的推流器(以推送RTMP为例)
本例子实现了推送本地视频至流媒体服务器(以RTMP为例)。
是使用FFmpeg进行流媒体推送最简单的教程。
最简单的基于FFmpeg的内存读写的例子
本程序实现了FFmpeg对内存中的视频数据的读写。包含两个工程:
simplest_ffmpeg_mem_player:播放内存中视频数据的播放器。
simplest_ffmpeg_mem_transcoder:转码内存中数据的转码器。
最简单的基于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”功能,用于在解码循环结束后,输出解码器中剩余的几帧数据。
最简单的基于FFmpeg的AVFilter例子 1.2
本程序使用包含下面两个项目:
simplest_ffmpeg_video_filter:可以将一张PNG图片作为水印叠加到视频上,结合使用了libavfilter,libavcodec等类库。
simplest_ffmpeg_video_filter_pure:可以给YUV像素数据加特效,只用了libavfilter库。
视音频数据处理入门
本项目包含如下几种视音频数据解析示例:
(1)像素数据处理程序。包含RGB和YUV像素格式处理的函数。
(2)音频采样数据处理程序。包含PCM音频采样格式处理的函数。
(3)H.264码流分析程序。可以分离并解析NALU。
(4)AAC码流分析程序。可以分离并解析ADTS帧。
(5)FLV封装格式分析程序。可以将FLV中的MP3音频码流分离出来。
(6)UDP-RTP协议分析程序。可以将分析UDP/RTP/MPEG-TS数据包。
YUV Player
自己修改过的YUV播放器,支持RGB、YUV等格式的播放。
传媒大学广播电视工程系小学期课程 - 基于FFmpeg+SDL的视频播放器的制作
传媒大学广播电视工程系小学期课程《基于FFmpeg+SDL 的视频播放器的制作》的资料。包括:
PPT-PDF:课程的PPT
工具:视音频处理软件以及测试视频
代码:课程中的代码
其它文档:一些参考资料
最简单的基于FFmpeg的移动端例子
本解决方案包含了使用FFmpeg在移动端处理多媒体的各种例子:
[Android]
simplest_android_player: 基于安卓接口的视频播放器
simplest_ffmpeg_android_helloworld: 安卓平台下基于FFmpeg的HelloWorld程序
simplest_ffmpeg_android_decoder: 安卓平台下最简单的基于FFmpeg的视频解码器
simplest_ffmpeg_android_decoder_onelib: 安卓平台下最简单的基于FFmpeg的视频解码器-单库版
simplest_ffmpeg_android_streamer: 安卓平台下最简单的基于FFmpeg的推流器
simplest_ffmpeg_android_transcoder: 安卓平台下移植的FFmpeg命令行工具
simplest_sdl_android_helloworld: 移植SDL到安卓平台的最简单程序
[IOS]
simplest_ios_player: 基于IOS接口的视频播放器
simplest_ffmpeg_ios_helloworld: IOS平台下基于FFmpeg的HelloWorld程序
simplest_ffmpeg_ios_decoder: IOS平台下最简单的基于FFmpeg的视频解码器
simplest_ffmpeg_ios_streamer: IOS平台下最简单的基于FFmpeg的推流器
simplest_ffmpeg_ios_transcoder: IOS平台下移植的ffmpeg.c命令行工具
simplest_sdl_ios_helloworld: 移植SDL到IOS平台的最简单程序
最简单的基于FFmpeg的推流器 1.2
本例子实现了推送本地视频至流媒体服务器(以RTMP为例)。
是使用FFmpeg进行流媒体推送最简单的教程。
解决方案包含2个项目:
simplest_ffmpeg_streamer: 将本地视频文件推送至流媒体服务器。
simplest_ffmpeg_receiver: 将流媒体数据保存成本地文件。
最简单的基于FFMPEG+SDL的音频播放器 2.2
本程序实现了音频的解码和播放。是最简单的FFmpeg音频解码方面的教程。
通过学习本例子可以了解FFmpeg的解码流程。
项目包含3个工程:
simplest_ffmpeg_audio_player:基于FFmpeg+SDL的音频解码器
simplest_ffmpeg_audio_decoder:音频解码器。使用了libavcodec和libavformat。
simplest_audio_play_sdl2:使用SDL2播放PCM采样数据的例子。
最简单的基于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的AVUtil例子 (AVLog, AVOption等)
本程序是FFmpeg中的libavutil的示例,目前包含:
AVLog
AVOption (AVClass)
AVDictionary
ParseUtil
TIandSI 3.0 windows
本工具用于计算视频的时间信息(TI,也称为时间复杂度),以及空间
信息(SI,也称为空间复杂度),以上两个指标取自于ITU-R BT.1788标准。
该项目包含了4个工程:
TIandSI : 计算YUV数据的TI和SI-图形界面版。
TIandSIcmd : 计算YUV数据的TI和SI-命令行版。
TIandSIpro : 计算压缩码流数据的TI和SI-图形界面版。
TIandSIprocmd : 计算压缩码流数据的TI和SI-命令行版。
TIandSI 3.0
本工具用于计算视频的时间信息(TI,也称为时间复杂度),以及空间
信息(SI,也称为空间复杂度),以上两个指标取自于ITU-R BT.1788标准。
该项目包含了4个工程:
TIandSI : 计算YUV数据的TI和SI-图形界面版。
TIandSIcmd : 计算YUV数据的TI和SI-命令行版。
TIandSIpro : 计算压缩码流数据的TI和SI-图形界面版。
TIandSIprocmd : 计算压缩码流数据的TI和SI-命令行版。
最简单的Flash流媒体例子
本工程包含如下基于Flash技术的流媒体的例子:
simplest_as3_rtmp_player:最简单的RTMP播放器(基于ActionScript)
simplest_as3_rtmp_streamer:最简单的RTMP推流器(基于ActionScript)
rtmp_sample_player_adobe:从Adobe Flash Media Sever提取出来的测试播放器
rtmp_sample_player_wowza:从Wowza服务器中提取出来的测试播放器
rtmp_sample_player_flowplayer:基于FlowPlayer的RTMP/HTTP播放器(添加RTMP plugin)
rtmp_sample_player_videojs:基于VideoJS的RTMP/HTTP播放器
rtmp_sample_player_jwplayer:基于JWplayer的RTMP/HTTP播放器
hls_sample_player_flowplayer:基于FlowPlayer的HLS播放器(添加HLS plugin)
hls_video_player_html5:基于HTML5的HLS/HTTP播放器
activex_vlc_player:基于VLC的ActiveX控件的播放器
注意:某些播放器直接打开html页面是不能工作的,需要把播放器放到Web服务器上。
(例如Apache或者Nginx)
QAM调制与解调仿真程序
一个仿真DVB-C(Cable,数字有线电视)系统中QAM调制和解调的程序。在这个程序中,每执行一步操作,都会画出时域信号图和频域信号图,同时会在控制台打印出有关变量的取值,对于理解QAM调制与解调有一定的帮助。
最简单的基于FFMPEG+SDL的视频播放器 2.4
本程序实现了视频文件的解码和显示(支持HEVC,H.264,MPEG2等)。是最简单的FFmpeg视频解码方面的教程。通过学习本例子可以了解FFmpeg的解码流程。 项目包含3个工程:
simplest_ffmpeg_player:标准版,FFmpeg学习的开始。 simplest_ffmpeg_player_su:SU(SDL Update)版,加入了简单的SDL的Event。
simplest_ffmpeg_decoder_pure:一个纯净的解码器。
2.4版本增加了多平台下编译的支持:Windows,MacOS,以及Linux
最简单的基于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)中绿屏的问题。