JavaCV录制屏幕(窗口)和系统声音,内录
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录制屏幕(窗口)和系统声音,内录相关推荐
- M1 macOS 无法录制系统声音?SoundFlower后继有BlackHole【macOS系统声音内录】
SoundFlower 众所周知,QuickTime无法录制系统声音,在macOS之前的版本,和M1(Apple Silicon)没问世之前,SoundFlower一直都是首选!可惜SoundFlow ...
- opencv录制视频 python_Python同时录制屏幕、摄像头、声音合成视频把人像放在最终视频右下角...
原标题:Python同时录制屏幕.摄像头.声音合成视频把人像放在最终视频右下角 封面图片:<Python程序设计实验指导书>(ISBN:9787302525790),董付国,清华大学出版社 ...
- Android Q及以上系统音频捕获功能(声音内录)的简单实现
前言 现在越来越多的视频类APP,如抖音.快手.B站等等,都开放了音频捕获配置,也就是android:allowAudioPlaybackCapture="true".因此学习如何 ...
- python开发的录音机(一)录制声卡播放的声音(内录)
现在网上用python编写的录音机小软件很多,几乎都不支持内录. 这个小程序的主要功能特点是 1 , 录制电脑上正在播放的声音,即从声卡录制,而不是从麦克风录制,这样就可以将电脑上正在播放的音乐保存下 ...
- Python同时录制屏幕、摄像头、声音合成视频把人像放在最终视频右下角
之前写了个使用pillow截图和pyaudio录音最后合成视频的代码, 60行Python代码打造自己的录屏软件(附源码) 那个代码虽然避免了opencv视频和pyaudio音频同步困难的问题,但是如 ...
- android 横屏录制视频,安卓手机如何录制屏幕视频?一招结束录屏的烦恼
随着手机功能的越来越强大,大大小小的事情都可以在手机上完成,导致我们的生活的吃喝玩乐都用到手机,那么我们有时会在手机上刷到一些好玩的视频,想把它保存下载,但由于无法下载,所以我们就想了各种办法,最后采 ...
- JavaCV音视频开发宝典:JavaCV混合屏幕录屏和系统声音录制mp4视频文件(windows桌面屏幕和系统声音混合录制)
<JavaCV音视频开发宝典>专栏目录导航 <JavaCV音视频开发宝典>专栏介绍和目录 前言 之前已经写过dshow方式采集摄像头画面.麦克风.系统声音和桌面屏幕画面. 之前 ...
- Macbook windows 10系统下录屏软件无法录制系统声音的问题
Macbook Windows 10系统下录屏软件无法录制系统声音的问题 问题原因 Virtual Audio Cable 下载与安装 以Obs-Studio为例进行测试 录屏完成 参考教程链接 问题 ...
- Mac录屏同时录制系统声音和画外音(Soundflower无法安装解决方案)
个人博客地址:xzajyjs.cn 前言 以前一直有录屏的需求,但苦于自带的QuickTime 无法录制内屏声音,一直使用的是第三方的app.近期开腾讯会议需要录屏,但主持人本身没有开启录屏权限,只好 ...
最新文章
- Python数据类型和分支循环
- android的UI开发工程师指引
- logspace--创建对数等分向量
- 神经网络粒子和物理粒子的一个本质差别
- 经典C语言程序100例之十六
- 一步步教你前端vue项目开发中如何解决跨域问题
- python画同心圆程序_Python Turtle:使用circle()方法绘制同心圆
- jQuery源码研究分析学习笔记-jQuery.fn.init()(五)
- 贺利坚老师汇编课程47笔记:转移地址在寄存器或内存里
- java路径通配符_java实现路径通配符*,**,?
- html点击按钮状态改变,html点击按钮改变文字怎么实现
- css 写一个左中右布局占满屏幕,左右两块固定宽度200,中间自适应宽,先加载中间块
- U8二开之界面增加按钮处理事件
- Qt 多国语言部分翻译不能成功加载的原因探索
- dann的alpha torch_pytorch BiLSTM+CRF代码详解
- 电脑连接蓝牙耳机声音总是断断续续:
- Ubuntu Kylin操作系统介绍及常用命令的使用
- 转 FTP搜索引擎的设计与实现(优化版)
- sota和fota区别_SOTA与FOTA的区别
- Tesseract-ocr识别中文并训练字库操作指南
热门文章
- 自动驾驶的技术架构和生态发展
- android时间格式am pm,将字符串在12(PM / AM)小时AM PM时间转换为24小时时间android
- java读写Excel工具类
- 中国航空维修行业“十四五”期间规划建议与投资动向分析报告2022年版
- 冰箱有哪些尺寸 冰箱尺寸的选择 冰箱尺寸大小标准对照表
- OSChina 周六乱弹 —— 我一直把一哥们当朋友,但
- 多多情报通:拼多多蓝海词是什么意思?拼多多蓝海词怎么找?
- 51nod 1009 数字1的数量(数学)
- 安卓带步骤的手写签名(附源码)
- 运行python程序的两种方式交互式和文件式_Python基础知识2