忘记截图,是否可以在android中捕获正在运行的应用程序的视频? 根或不根,我不在乎,我想要至少15fps。
更新:我不需要任何外部硬件。目的是使其完全可移植,并在Android OS中捕获每一帧。如果它越过了应用程序sdk的边界,我愿意进行操作系统级别的修改,但我需要一个起点。
答案 0 :(得分:242)
Android 4.4(KitKat)及更高版本的设备具有用于记录Android设备屏幕的shell实用程序。通过USB将运行KitKat的开发人员/调试模式的设备与adb实用程序连接,然后键入以下内容:
adb shell screenrecord /sdcard/movie.mp4
(Press Ctrl-C to stop)
adb pull /sdcard/movie.mp4
屏幕录制最长限制为3分钟。
参考:https://developer.android.com/studio/command-line/adb.html#screenrecord
答案 1 :(得分:17)
我知道这是一个古老的问题但是因为对OP来说似乎没有答案。有一个应用程序可以在Android Market Screencast link
中使用它答案 2 :(得分:8)
是的,请使用带有视频输出的手机,并使用录像机捕捉信息流
请参阅此文http://graphics-geek.blogspot.com/2011/02/recording-animations-via-hdmi.html
答案 3 :(得分:4)
@taranfx,没有更多信息我假设你在StackOverFlow上安装了Android Developer Tools。如果是这样,您可以运行模拟器,然后使用众多桌面屏幕捕获程序之一来捕获正在运行的应用程序。 Mac上的Screenflow非常适合这样做。我相信如果你在Windows或Nix平台上有很多好的屏幕捕获程序,我知道也有一些在线服务,但我没有任何链接,也没有使用它们。以下是有关设置和运行模拟器的参考文档的链接。The Android SDK includes a mobile device emulator...
答案 4 :(得分:4)
我的建议也是使用屏幕录像机,例如SMRecorder。而不是使用速度慢的模拟器 - 特别是对于您想要视频的游戏和事物,我建议使用安装了Android的VirtualBox VM。您可以将Dalvik调试器连接到它并在那里调试应用程序。如果调试器使app太慢,请断开它以录制视频。有很多链接解释如何设置Android VM进行调试。我觉得它比模拟器好得多。 现在,如果您的应用程序使用加速计或PC上没有的摄像头,则不会直接在设备上捕获屏幕。为此我会使用上面提到的Android市场应用程序。
答案 5 :(得分:3)
我猜截屏不是因为tegra 2不相容,我已经尝试过,但没有乳清! 所以我尝试在市场上使用 Z-ScreeNRecorder ,将它安装在我的LG Optimus 2x上,但它只记录了空白屏幕,我试了5分钟。然后我得到5分钟。 6mb大小的空白屏幕文件...所以没有必要尝试,直到他们释放一些与tegra2芯片组兼容的软件!
答案 6 :(得分:2)
Android 4.3有一个新的MediaCodec API,可用于从曲面录制。 请参阅:http://developer.android.com/about/versions/android-4.3.html (向下滚动到“从曲面进行视频编码”部分)
答案 7 :(得分:1)
在Android Lollipop(5)中new feature has been added允许截屏which is explained here
像这样调用startActivityForResult
startActivityForResult(mProjectionManager.getScreenCaptureIntent(), PERMISSION_CODE);
然后捕获结果
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode != PERMISSION_CODE) {
Log.e(TAG, "Unknown request code: " + requestCode);
return;
}
if (resultCode != RESULT_OK) {
Toast.makeText(this,
"User denied screen sharing permission", Toast.LENGTH_SHORT).show();
return;
}
mMediaProjection = mProjectionManager.getMediaProjection(resultCode, data);
mVirtualDisplay = createVirtualDisplay();
}
答案 8 :(得分:1)
如果您想录制用户导航以便测试用户界面和其他内容,我建议您使用TestFairy
它允许您通过电子邮件将apk发送给某些测试用户,并查看应用中所有会话的视频,甚至是应用崩溃和设备统计信息。
答案 9 :(得分:1)
我没有实现它,但我仍然给你一个想法。
首先获取代码screenshot of Android device。并且在一段时间后调用相同的函数来创建图像。添加然后找到要创建video from frames/images的代码。
修改强>
另请参阅this link并根据您的屏幕尺寸对其进行修改。主要是将您的工作分成几个小任务,然后根据需要进行组合。
FFMPEG是最好的方法。但是,一旦我尝试过,但这是一个非常漫长的过程。首先,您必须下载cygwin和Native C ++库以及许多内容并连接,然后您就可以使用FFMPEG(它是用C ++构建的)。
答案 10 :(得分:1)
如果您正在开发视频摄像头应用程序,那么最好知道用于视频捕获的API:
http://developer.android.com/training/camera/videobasics.html
(以上链接仅显示如何通过Intent提交录制视频,而不是如何进行实际录制)
https://www.linux.com/learn/tutorials/729988-android-app-development-how-to-capture-video
如果你想写" screenrecord" adb应用程序自己:
关键录音动作在这里完成:
static status_t recordScreen(const char* fileName) {
status_t err;
<...>
// Configure, but do not start, muxer.
sp<MediaMuxer> muxer = new MediaMuxer(fileName,
MediaMuxer::OUTPUT_FORMAT_MPEG_4);
if (gRotate) {
muxer->setOrientationHint(90);
}
// Main encoder loop.
err = runEncoder(encoder, muxer);
if (err != NO_ERROR) {
encoder->release();
encoder.clear();
return err;
}
对于三星手机,还有其他设置(&#39; cam_mode&#39; hack):
CamcorderProfile.QUALITY_HIGH resolution produces green flickering video
更有用的链接:
答案 11 :(得分:1)
AirPlay镜像和屏幕录制现在位于CyanogenMod,带有镜像APK(测试版)。
答案 12 :(得分:1)
看看Remote Manager。但在我看来它与大屏幕设备无法正常工作。虽然,您可以先尝试DEMO。
答案 13 :(得分:1)
如果您的设备已植根,则可以直接从手机或平板电脑录制屏幕视频。我正在使用SCR Screen Recorder应用。据我所知,这是唯一支持Tegra设备(包括Nexus 7)和Android 4.2的应用程序。目前应用程序根据设备记录9-18fps,但我正在努力改进它。 SCR屏幕录像机仍处于测试阶段,因此可以随意测试并提供反馈。
答案 14 :(得分:0)
如果您在PC上,则可以在PC上运行My Phone Explorer,在手机上运行MyPhoneExplorer Client,将屏幕截图设置为连续刷新,然后使用Wink捕获屏幕上的自定义矩形区域位于My Phone Explorer窗口中,具有您自己的捕获率。然后转换为Wink中的FLV,然后使用WinFF从Flash视频转换为MPG。
答案 15 :(得分:0)
我没有使用该应用,但我看到Rec.被引用作为执行此操作的方法,但您需要root手机。
答案 16 :(得分:0)
这是旧的,但是ASC怎么办?