作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想制作类似“EASY screen recorder”的应用。从我必须开始的地方开始,因为我搜索了很多但没有找到任何入门链接。有任何 api 用于创建屏幕录像机而不是屏幕截图。我不想使用 javacv 从屏幕截图创建视频。我只想让用户启动应用程序并单击开始录制按钮,然后记录用户在移动设备上所做的一切。
1) android 中有没有这方面的api。
2) 如何在 android 中创建屏幕录像机应用程序。
3) android 中是否没有任何api,请向我推荐其他api,以便我可以在android 中使用。
我搜索了很多但仍然无法创建录音应用程序。我有 android 应用程序,我在其中添加代码,在特定时间后使用处理程序拍摄屏幕截图,最后它使用 javacv 创建视频,但我不喜欢,因为为此我必须在每个应用程序中编写代码并且需要当前 Activity 的屏幕截图,最后创建视频。
EASY 屏幕录像机开发人员如何创建此应用程序?他们使用了哪个api。我想创建此应用的克隆。
最佳答案
很抱歉回答晚了,但这是一个有效的代码。它适用于 Lollipop
及更高版本
private VirtualDisplay mVirtualDisplay;
private MediaRecorder mMediaRecorder;
private MediaProjection mMediaProjection;
private MediaProjectionCallback callback;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MediaProjectionManager projectionManager = (MediaProjectionManager)
context.getSystemService(Context.MEDIA_PROJECTION_SERVICE);
mMediaProjection.registerCallback(callback, null);
initRecorder();
mMediaRecorder.prepare();
mVirtualDisplay = createVirtualDisplay();
mMediaRecorder.start();
}
public void initRecorder() {
path = "/sdcard/Record/video" + ".mp4";
recId = "capture-" + System.currentTimeMillis() + ".mp4";
File myDirectory = new File(Environment.getExternalStorageDirectory(), "Record");
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mMediaRecorder.setVideoEncodingBitRate(MainFragment.bitRate);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoSize(MainFragment.DISPLAY_WIDTH,
MainFragment.DISPLAY_HEIGHT);
mMediaRecorder.setOutputFile(path);
}
private VirtualDisplay createVirtualDisplay() {
return mMediaProjection.createVirtualDisplay("MainActivity",
MainFragment.DISPLAY_WIDTH, MainFragment.DISPLAY_HEIGHT, MainFragment.screenDensity,
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
mMediaRecorder.getSurface(), null /*Callbacks*/, null /*Handler*/);
}
public class MediaProjectionCallback extends MediaProjection.Callback {
@Override
public void onStop() {
mMediaRecorder.stop();
// mMediaRecorder.reset();
mMediaRecorder.release();
mMediaProjection.unregisterCallback(callback);
mMediaProjection = null;
mMediaRecorder = null;
}
关于android - Android 中的屏幕录像机以编程方式,而不是屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25616026/
我正在尝试用 Qt 创建一个录像机。到目前为止,我所做的是在屏幕上截取一个矩形的屏幕截图并保存。最后,我使用 ffmpeg 从图像中获取视频文件。 我将计时器的信号 timeout() 连接到我的自定
我是一名优秀的程序员,十分优秀!