Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >FFmpeg4.0笔记:采集桌面

FFmpeg4.0笔记:采集桌面

作者头像
gongluck
发布于 2019-07-09 10:03:38
发布于 2019-07-09 10:03:38
59400
代码可运行
举报
文章被收录于专栏:C++C++
运行总次数:0
代码可运行

Github

https://github.com/gongluck/FFmpeg4.0-study/tree/master/Cff

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 采集桌面
void test_desktop()
{
    bool ret = false;
    std::string err;
    CDemux demux;
    CDecode decode;
    
    ret = demux.device_register_all(err);
    TESTCHECKRET(ret);
    ret = demux.set_input_format("gdigrab", err); //采集桌面
    TESTCHECKRET(ret);
    ret = demux.set_dic_opt("framerate", "15", err);
    TESTCHECKRET(ret);
    ret = demux.set_demux_callback(DemuxDesktopCB, &decode, err);
    TESTCHECKRET(ret);
    ret = demux.set_demux_status_callback(DemuxStatusCB, &demux, err);
    TESTCHECKRET(ret);
    ret = demux.set_input("desktop", err);
    TESTCHECKRET(ret);
    ret = demux.openinput(err);
    TESTCHECKRET(ret);

    g_vindex = demux.get_steam_index(AVMEDIA_TYPE_VIDEO, err);
    std::cout << err << std::endl;
    g_aindex = demux.get_steam_index(AVMEDIA_TYPE_AUDIO, err);
    std::cout << err << std::endl;

    ret = decode.set_dec_callback(DecVideoFrameCB, &decode, err);
    TESTCHECKRET(ret);
    ret = decode.copy_param(demux.get_steam_par(g_vindex, err), err);
    TESTCHECKRET(ret);
    ret = decode.codec_open(err);
    TESTCHECKRET(ret);

    ret = demux.begindemux(err);
    TESTCHECKRET(ret);

    std::cout << "input to stop demuxing." << std::endl;
    std::cin.get();

    ret = demux.stopdemux(err);
    TESTCHECKRET(ret);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
FFmpeg4.0笔记:封装ffmpeg的解封装功能类CDemux
https://github.com/gongluck/FFmpeg4.0-study/tree/master/Cff
gongluck
2019/07/08
6260
FFmpeg4.0笔记:封装ffmpeg的解码功能类CDecode
https://github.com/gongluck/FFmpeg4.0-study/tree/master/Cff
gongluck
2019/06/15
1.1K0
FFmpeg4.0笔记:本地媒体文件解码、帧格式转换、重采样、编码、封装等例子
https://github.com/gongluck/FFmpeg4.0-study/blob/master/official%20example/my_example.cpp
gongluck
2019/05/22
2.5K0
FFmpeg4.0笔记:封装ffmpeg的视频帧转换功能类CSws
https://github.com/gongluck/FFmpeg4.0-study/tree/master/Cff
gongluck
2019/06/15
6200
ffmpeg+sdl播放类
前段时间一直捣鼓ffmpeg,觉得还是VLC比较亲切,虽然我现在都不知道VLC怎么用了。 除了雷神的博客,主要参考的还是这个博客:http://blog.yundiantech.com/?log=in
_gongluck
2018/03/08
1.1K0
FFmpeg4.0笔记:封装ffmpeg的音频重采样功能类CSwr
https://github.com/gongluck/FFmpeg4.0-study/tree/master/Cff
gongluck
2019/06/15
9130
FFmpeg4.0笔记:rtsp2rtmp
Github https://github.com/gongluck/FFmpeg4.0-study.git #include <iostream> using namespace std; extern "C" { #include "libavformat/avformat.h" #include "libavutil/time.h" } #pragma comment(lib, "avformat.lib") #pragma comment(lib, "avutil.lib") #pragma co
gongluck
2018/06/22
1.5K0
FFmpeg封装格式处理2-解复用例程
本例实现,将输入文件中的视频流和音频流分离出来,保存为单独的文件,所保存的文件是不含封装格式的裸流文件。
叶余
2019/04/02
1.1K0
FFmpeg封装格式处理2-解复用例程
FFmpeg4.0+SDL2.0笔记03:Playing Sound
背景:在系统性学习FFmpeg时,发现官方推荐教程还是15年的,不少接口已经弃用,大版本也升了一级,所以在这里记录下FFmpeg4.0+SDL2.0的学习过程。
非一
2021/04/07
8680
使用FFmpeg新解码API解封装解码音视频(代码实例)
在ffmpeg的源代码中,有新旧版本的编解码接口调用示例,但是demux、mux然后decode、encode的联动起来的接口调用实例并没有,在使用旧版本的编解码接口在编译时会报接口弃用告警信息,所以最好尽快把原有的调用方式切换到新的编解码接口调用方式,告警信息如下:
用户3765803
2019/03/05
1.4K0
ffmpeg api的应用——提取视频图片
        这些年来,“短视频”吸引了无数网民的注意。相对于丰富有趣的内容,我们码农可能更关心其底层技术实现。本系列文章将结合ffmpeg,讲解几则视频处理案例。(转载请指明出于breaksoftware的csdn博客)
方亮
2019/01/16
1.5K0
FFmpeg简单转码程序--视频剪辑
学习了雷神的文章,慕斯人分享精神,感其英年而逝,不胜唏嘘。他有分享一个转码程序《最简单的基于FFMPEG的转码程序》其中使用了filter(参考了ffmpeg.c中的流程),他曾说想再编写一个不需要filter的版本,可惜未有机会。恰好工作中有相关ffmpeg处理内容,故狗尾续貂,撰写本文。
jacker
2018/09/01
8.3K0
FFmpeg简单转码程序--视频剪辑
Ffplay源码之read_thread解析(二)
大家好,我是小涂,本周继续给大家分享ffplay中的read_thread这个线程源码的解读,这算是自己的一个学习记录过程吧。
用户6280468
2022/03/21
6510
Ffplay源码之read_thread解析(二)
ffplay源码分析3-代码框架
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10301831.html
叶余
2019/04/02
3.2K2
FFmpeg_3.2.4+SDL_2.0.5学习(1)音视频解码帧及显示/播放数据
int OpenAVFile(const char* szFileName) { char errbuf[256] = { 0 }; int iRes = 0; int vindex = -1; AVFormatContext* pFmtCtx = NULL; AVCodecContext* vCodecCtx = NULL; AVCodec* vCodec = NULL; AVPacket* pkt = NULL; AVFrame* pfe = NULL; AVFrame* YUV =
_gongluck
2018/03/08
1.4K0
FFMPEG视频开发:Linux使用FFMPEG采集摄像头数据保存为MP4文件存储(采集摄像头数据方式使用ffmpeg本身的接口)
关于Linux下X264和FFMPEG库的编译安装方法参考这里:https://blog.csdn.net/xiaolong1126626497/article/details/104919095
DS小龙哥
2022/01/12
2.5K1
FFMPEG视频开发:Linux使用FFMPEG采集摄像头数据保存为MP4文件存储(采集摄像头数据方式使用ffmpeg本身的接口)
【C++】FFmpeg:音视频库介绍与使用示例
FFmpeg是一款开源的音视频库,提供了处理音视频文件、转码、解码、编码、播放等功能。它是一个完整的跨平台解决方案,支持多种音视频格式,并提供多种API和工具来处理音视频数据。
DevFrank
2024/07/24
6330
FFmpeg编解码处理4-音频编码
编码使用avcodec_send_frame()和avcodec_receive_packet()两个函数。
叶余
2019/04/01
2.1K0
FFmpeg4.0+SDL2.0笔记01:Making Screencaps
背景:在系统性学习FFmpeg时,发现官方推荐教程还是15年的,不少接口已经弃用,大版本也升了一级,所以在这里记录下FFmpeg4.0+SDL2.0的学习过程。
非一
2021/04/06
6380
ffplay.c 源码分析- 视频部分
ffplay.c 中线程模型简单命令。主要是有如下几个线程: 1. 渲染的线程-主线程 简单的理解,来说就是main方法运行所在的线程。 实际上是SDL_CreateWindow 调用所在的线程。以Android为例(笔者比较熟悉),创建的是OpenGL的Surface。也就是EGLContext所在的线程了。
deep_sadness
2018/12/14
2.4K0
ffplay.c 源码分析- 视频部分
推荐阅读
相关推荐
FFmpeg4.0笔记:封装ffmpeg的解封装功能类CDemux
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验