资源简介
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。因此做了一个FFmpeg中的libavdevice类库的使用例子。
本工程包含两个基于FFmpeg的libavdevice的例子:
simplest_ffmpeg_grabdesktop:屏幕录制。
simplest_ffmpeg_readcamera:读取摄像头。
1.2版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
代码片段和文件信息
/**
* 最简单的基于FFmpeg的AVDevice例子(屏幕录制)
* Simplest FFmpeg Device (Screen Capture)
*
* 雷霄骅 Lei Xiaohua
* leixiaohua1020@126.com
* 中国传媒大学/数字电视技术
* Communication University of China / Digital TV Technology
* http://blog.csdn.net/leixiaohua1020
*
* 本程序实现了屏幕录制功能。可以录制并播放桌面数据。是基于FFmpeg
* 的libavdevice类库最简单的例子。通过该例子,可以学习FFmpeg中
* libavdevice类库的使用方法。
* 本程序在Windows下可以使用2种方式录制屏幕:
* 1.gdigrab: Win32下的基于GDI的屏幕录制设备。
* 抓取桌面的时候,输入URL为“desktop”。
* 2.dshow: 使用Directshow。注意需要安装额外的软件screen-capture-recorder
* 在Linux下则可以使用x11grab录制屏幕。
*
* This software capture screen of computer. It‘s the simplest example
* about usage of FFmpeg‘s libavdevice Library.
* It‘s suiltable for the beginner of FFmpeg.
* This software support 2 methods to capture screen in Microsoft Windows:
* 1.gdigrab: Win32 GDI-based screen capture device.
* Input URL in avformat_open_input() is “desktop“.
* 2.dshow: Use Directshow. Need to install screen-capture-recorder.
* It use x11grab to capture screen in Linux.
*/
#include
#define __STDC_CONSTANT_MACROS
#ifdef _WIN32
//Windows
extern “C“
{
#include “libavcodec/avcodec.h“
#include “libavformat/avformat.h“
#include “libswscale/swscale.h“
#include “libavdevice/avdevice.h“
#include “SDL/SDL.h“
};
#else
//Linux...
#ifdef __cplusplus
extern “C“
{
#endif
#include
#include
#include
#include
#include
#ifdef __cplusplus
};
#endif
#endif
//Output YUV420P
#define OUTPUT_YUV420P 0
//‘1‘ Use Dshow
//‘0‘ Use GDIgrab
#define USE_DSHOW 0
//Refresh Event
#define SFM_REFRESH_EVENT (SDL_USEREVENT + 1)
int thread_exit=0;
int sfp_refresh_thread(void *opaque)
{
while (thread_exit==0) {
SDL_Event event;
event.type = SFM_REFRESH_EVENT;
SDL_PushEvent(&event);
SDL_Delay(40);
}
return 0;
}
//Show Dshow Device
void show_dshow_device(){
AVFormatContext *pFormatCtx = avformat_alloc_context();
AVDictionary* options = NULL;
av_dict_set(&options“list_devices““true“0);
AVInputFormat *iformat = av_find_input_format(“dshow“);
printf(“========Device Info=============\n“);
avformat_open_input(&pFormatCtx“video=dummy“iformat&options);
printf(“================================\n“);
}
//Show AVFoundation Device
void show_avfoundation_device(){
AVFormatContext *pFormatCtx = avformat_alloc_context();
AVDictionary* options = NULL;
av_dict_set(&options“list_devices““true“0);
AVInputFormat *iformat = av_find_input_format(“avfoundation“);
printf(“==AVFoundation Device Info===\n“);
avformat_open_input(&pFormatCtx““iformat&options);
printf(“=============================\n“);
}
int main(int argc char* argv[])
{
AVFormatContext *pFormatCtx;
int i videoindex;
AVCodecContext *pCodecCtx;
AVCodec *pCodec;
av_register_al
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 29 2015-02-12 17:39 .gitignore
文件 514 2015-02-12 17:39 ReadMe.txt
文件 1439 2015-02-12 17:39 simplest_ffmpeg_device.sln
文件 35328 2015-02-12 17:39 simplest_ffmpeg_device.suo
目录 0 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\
文件 67 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\.gitignore
文件 1259 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\ReadMe.txt
文件 303616 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\SDL.dll
文件 18936320 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\avcodec-55.dll
文件 1340928 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\avdevice-55.dll
文件 2034688 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\avfilter-4.dll
文件 5342720 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\avformat-55.dll
文件 418304 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\avutil-52.dll
文件 700 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\compile_cl.bat
文件 496 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\compile_gcc.sh
文件 513 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\compile_gcc_mac.sh
文件 529 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\compile_mingw.sh
目录 0 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\
目录 0 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\
文件 3233 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL.h
文件 1933 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL_active.h
文件 11215 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL_audio.h
文件 986 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL_byteorder.h
文件 6048 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL_cdrom.h
文件 1474 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL_config.h
文件 2803 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL_config_dreamcast.h
文件 2801 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL_config_macos.h
文件 4193 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL_config_macosx.h
文件 1982 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL_config_minimal.h
文件 2979 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL_config_nds.h
文件 3635 2015-02-12 17:39 simplest_ffmpeg_grabdesktop\include\SDL\SDL_config_os2.h
............此处省略398个文件信息
- 上一篇:最简单的基于FFMPEG的音频编码器 1.1
- 下一篇:ssh三大框架测试项目
相关资源
- 最简单的基于FFMPEG的音频编码器 1.1
- 最简单的基于FFMPEG+SDL的视频播放器
- ffmpeg提取mp4关键帧保存为jpg.zip
- ffmpeg+qt的简单播放器
- 使用ffmpeg将多张图片生成H264裸流并获
- ffmpeg h264 转换jpg
- 利用FFmpeg将Jpeg图片转为任意视频容器
- ffmpeg exeWINXP的最后一个可运行版本
- 最简单的基于FFMPEG的视频编码器修正
- ffmpeg-vs2013
- 基于FFMPEG_SDL2_音视频播放_参考音频时
- ffmpeg-3.2-win32-shared.zip
- ffmpeg录音
- ffmpeg资料全
- ffmpeg_windows屏幕录制并编码成H264
- windows32位系统的ffmpeg
- 利用ffmpeg提取任意格式视频帧关键帧
- ffmpeg3.0源码
- FFmpeg解码+SDL播放
- ffmpeg封装H264成MP4、AVI视频格式,及提
- 从零开始学习音视频编程技术十二 录
- AudioResample
- 最简单的基于FFmpeg的libswscale的教程
- ffmpeg-2.5.2-win32-shared
- 利用FFmpeg将mkv视频转换为H.264
- 安卓交叉编译ffmepgx86_64版本
- ffmepg的安卓arm(armeabi-v7a)版本
- 基于ARM9的远程视频监控系统
- 最简单的基于FFmpeg的封装格式转换器
- SDK播放器加速.zip
评论
共有 条评论