专栏首页C++FFmpeg4.0笔记:采集系统声音

FFmpeg4.0笔记:采集系统声音

Github

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

// 采集系统声音
void test_systemsound()
{
    bool ret = false;
    std::string err;
    CDemux demux;
    CDecode decode;

    ret = demux.device_register_all(err);
    TESTCHECKRET(ret);
    ret = demux.set_input_format("dshow", err); //采集声卡
    TESTCHECKRET(ret);
    ret = demux.set_dic_opt("framerate", "15", err);
    TESTCHECKRET(ret);
    ret = demux.set_demux_callback(DemuxSystemSoundCB, &decode, err);
    TESTCHECKRET(ret);
    ret = demux.set_demux_status_callback(DemuxStatusCB, &demux, err);
    TESTCHECKRET(ret);
    ret = demux.set_input("audio=virtual-audio-capturer", 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(DecAudioFrameCB, &decode, err);
    TESTCHECKRET(ret);
    ret = decode.copy_param(demux.get_steam_par(g_aindex, 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);
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • FFmpeg4.0笔记:采集桌面

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

    gongluck
  • FFmpeg4.0笔记:封装ffmpeg的音频重采样功能类CSwr

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

    gongluck
  • FFmpeg4.0笔记:rtsp2rtmp

    gongluck
  • FFmpeg4.0笔记:采集桌面

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

    gongluck
  • Endnote的Output Style文件

    我使用Endnote已经有一些日子,苦于Endnote无法输出符合中文期刊要求的参考文献格式,用得不多. 这次写论文想试一下,便在研究英文Output Styl...

    步行者08
  • [菜鸟SpringCloud实战入门]第八章:通过消息总线Bus实现配置文件统一刷新(使用Kafka)

    欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud。

    Rude3Knife的公众号
  • Spring 5 AOP 默认改用 CGLIB 了?从现象到源码的深度分析

    Spring5 AOP 默认使用 Cglib 了?我第一次听到这个说法是在一个微信群里:

    用户1516716
  • [菜鸟SpringCloud实战入门]第八章:通过消息总线Spring Cloud Bus实现配置文件刷新(使用Kafka)

    欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud。

    后端技术漫谈
  • UWP基础教程 - XAML对象元素和属性

    元素 XAML的对象元素是指XAML中一个完整的节点,一个XAML文件始终只有一个根元素,在Windows 10 UWP 应用中通常是采用Page作为根元素,这...

    陈仁松
  • CSS 去除ul的li标签前面小点 list-style: none;

    在开发html的页面中,经常需要使用ul无序列表来写菜单栏目,但是由于前面的小点是不美观的,而且不同的浏览器也是不兼容的。

    Devops海洋的渔夫

扫码关注云+社区

领取腾讯云代金券