JavaCV录屏,云游戏串流的一个模块

dshow采集音频,因为暂时不会别的更好的方法,gdigrab采集视频也是因为效果比dshow好但是不会更好的,

采用多线程可以避免出现缓冲溢出的情况

[dshow @ 000001c47844cf80] real-time buffer [virtual-audio-capturer] [audio input] too full or near too full (87% of size: 3041280 [rtbufsize parameter])! frame dropped!
dshow录屏插件下载地址:

https://download.csdn.net/download/qq_46372033/87423453https://download.csdn.net/download/qq_46372033/87423453

下载运行安装即可,可以全屏录制视频也可录制音频

import org.bytedeco.ffmpeg.global.avcodec;
import org.bytedeco.ffmpeg.global.avutil;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.FFmpegFrameRecorder;
import org.bytedeco.javacv.Frame;public class AV_Thread {public static void main(String[] args) throws FFmpegFrameGrabber.Exception, FFmpegFrameRecorder.Exception {//初始化FFmpegFrameGrabber a_grabber = new FFmpegFrameGrabber("audio=virtual-audio-capturer");a_grabber.setFormat("dshow");a_grabber.start();System.out.println("音频抓取器初始化完成");FFmpegFrameGrabber v_grabber = new FFmpegFrameGrabber("desktop");v_grabber.setFormat("gdigrab");v_grabber.setFrameRate(30);v_grabber.start();System.out.println("视频抓取器初始化完成");FFmpegFrameRecorder recorder = new FFmpegFrameRecorder("src/main/resources/video/AV_Thread.flv",v_grabber.getImageWidth(),v_grabber.getImageHeight());recorder.setPixelFormat(avutil.AV_PIX_FMT_NV12);//intel核显编码仅支持nv12和p010lerecorder.setVideoCodecName("h264_qsv");//硬件编码h264recorder.setVideoBitrate(2000 * 1000);//码率,这里是2000kb/srecorder.setMaxBFrames(0);//禁用B帧,降低延迟recorder.setFormat("flv");//封装格式recorder.setGopSize(30 * 3);//关键帧间距recorder.setFrameRate(30);//帧率recorder.setInterleaved(true);recorder.setVideoOption("tune", "zerolatency");//设置预设,zerolatency表示零延迟,适用于实时视频会议//ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslowrecorder.setVideoOption("preset", "veryfast");//编码速度,gpu编码最快是veryfastrecorder.setVideoOption("crf", "28");//动态码率,取值范围0-51,建议17-28,17或18即可获得视觉上与无损无区别的画面,但算法上经过有损压缩recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);//编码格式recorder.setAudioBitrate(320 * 1000);//固定码率recorder.setAudioOption("vbr", "1");//可变比特率,1-5,1最低,5最高recorder.setAudioChannels(2);//声道recorder.setSampleRate(48000);//采样率recorder.start();System.out.println("录制器初始化完成");//创建两个线程Thread v_Record = new Thread(() -> {System.out.println("视频线程启动");Frame a_frame = null;while (true) {try {if ((a_frame = a_grabber.grabSamples()) != null) {recorder.recordSamples(48000, 2, a_frame.samples);} else {break;}} catch (FFmpegFrameGrabber.Exception e) {throw new RuntimeException(e);} catch (FFmpegFrameRecorder.Exception e) {throw new RuntimeException(e);}}});Thread a_Record = new Thread(() -> {System.out.println("音频线程启动");Frame v_frame = null;while (true) {try {if ((v_frame = v_grabber.grabImage()) != null) {recorder.recordImage(v_frame.imageWidth,v_frame.imageHeight,v_frame.imageDepth,v_frame.imageChannels,v_frame.imageStride,v_grabber.getPixelFormat(),v_frame.image);} else {break;}} catch (FFmpegFrameGrabber.Exception e) {throw new RuntimeException(e);} catch (FFmpegFrameRecorder.Exception e) {throw new RuntimeException(e);}}});//启动执行a_Record.start();v_Record.start();}
}

JavaCV录制屏幕(窗口)和系统声音,内录相关推荐

  1. M1 macOS 无法录制系统声音?SoundFlower后继有BlackHole【macOS系统声音内录】

    SoundFlower 众所周知,QuickTime无法录制系统声音,在macOS之前的版本,和M1(Apple Silicon)没问世之前,SoundFlower一直都是首选!可惜SoundFlow ...

  2. opencv录制视频 python_Python同时录制屏幕、摄像头、声音合成视频把人像放在最终视频右下角...

    原标题:Python同时录制屏幕.摄像头.声音合成视频把人像放在最终视频右下角 封面图片:<Python程序设计实验指导书>(ISBN:9787302525790),董付国,清华大学出版社 ...

  3. Android Q及以上系统音频捕获功能(声音内录)的简单实现

    前言 现在越来越多的视频类APP,如抖音.快手.B站等等,都开放了音频捕获配置,也就是android:allowAudioPlaybackCapture="true".因此学习如何 ...

  4. python开发的录音机(一)录制声卡播放的声音(内录)

    现在网上用python编写的录音机小软件很多,几乎都不支持内录. 这个小程序的主要功能特点是 1 , 录制电脑上正在播放的声音,即从声卡录制,而不是从麦克风录制,这样就可以将电脑上正在播放的音乐保存下 ...

  5. Python同时录制屏幕、摄像头、声音合成视频把人像放在最终视频右下角

    之前写了个使用pillow截图和pyaudio录音最后合成视频的代码, 60行Python代码打造自己的录屏软件(附源码) 那个代码虽然避免了opencv视频和pyaudio音频同步困难的问题,但是如 ...

  6. android 横屏录制视频,安卓手机如何录制屏幕视频?一招结束录屏的烦恼

    随着手机功能的越来越强大,大大小小的事情都可以在手机上完成,导致我们的生活的吃喝玩乐都用到手机,那么我们有时会在手机上刷到一些好玩的视频,想把它保存下载,但由于无法下载,所以我们就想了各种办法,最后采 ...

  7. JavaCV音视频开发宝典:JavaCV混合屏幕录屏和系统声音录制mp4视频文件(windows桌面屏幕和系统声音混合录制)

    <JavaCV音视频开发宝典>专栏目录导航 <JavaCV音视频开发宝典>专栏介绍和目录 前言 之前已经写过dshow方式采集摄像头画面.麦克风.系统声音和桌面屏幕画面. 之前 ...

  8. Macbook windows 10系统下录屏软件无法录制系统声音的问题

    Macbook Windows 10系统下录屏软件无法录制系统声音的问题 问题原因 Virtual Audio Cable 下载与安装 以Obs-Studio为例进行测试 录屏完成 参考教程链接 问题 ...

  9. Mac录屏同时录制系统声音和画外音(Soundflower无法安装解决方案)

    个人博客地址:xzajyjs.cn 前言 以前一直有录屏的需求,但苦于自带的QuickTime 无法录制内屏声音,一直使用的是第三方的app.近期开腾讯会议需要录屏,但主持人本身没有开启录屏权限,只好 ...

最新文章

  1. Python数据类型和分支循环
  2. android的UI开发工程师指引
  3. logspace--创建对数等分向量
  4. 神经网络粒子和物理粒子的一个本质差别
  5. 经典C语言程序100例之十六
  6. 一步步教你前端vue项目开发中如何解决跨域问题
  7. python画同心圆程序_Python Turtle:使用circle()方法绘制同心圆
  8. jQuery源码研究分析学习笔记-jQuery.fn.init()(五)
  9. 贺利坚老师汇编课程47笔记:转移地址在寄存器或内存里
  10. java路径通配符_java实现路径通配符*,**,?
  11. html点击按钮状态改变,html点击按钮改变文字怎么实现
  12. css 写一个左中右布局占满屏幕,左右两块固定宽度200,中间自适应宽,先加载中间块
  13. U8二开之界面增加按钮处理事件
  14. Qt 多国语言部分翻译不能成功加载的原因探索
  15. dann的alpha torch_pytorch BiLSTM+CRF代码详解
  16. 电脑连接蓝牙耳机声音总是断断续续:
  17. Ubuntu Kylin操作系统介绍及常用命令的使用
  18. 转 FTP搜索引擎的设计与实现(优化版)
  19. sota和fota区别_SOTA与FOTA的区别
  20. Tesseract-ocr识别中文并训练字库操作指南

热门文章

  1. 自动驾驶的技术架构和生态发展
  2. android时间格式am pm,将字符串在12(PM / AM)小时AM PM时间转换为24小时时间android
  3. java读写Excel工具类
  4. 中国航空维修行业“十四五”期间规划建议与投资动向分析报告2022年版
  5. 冰箱有哪些尺寸 冰箱尺寸的选择 冰箱尺寸大小标准对照表
  6. OSChina 周六乱弹 —— 我一直把一哥们当朋友,但
  7. 多多情报通:拼多多蓝海词是什么意思?拼多多蓝海词怎么找?
  8. 51nod 1009 数字1的数量(数学)
  9. 安卓带步骤的手写签名(附源码)
  10. 运行python程序的两种方式交互式和文件式_Python基础知识2