스크린 샷을 잊어 버려, 안드로이드에서 실행중인 응용 프로그램의 비디오를 캡처 할 수 있습니까? 뿌리 또는 비 뿌리, 나는 상관없고, 적어도 15fps를 원합니다.
업데이트 : 외부 하드웨어를 원하지 않습니다. 의도는 휴대 성이 뛰어나고 모든 프레임이 Android OS 내에서 캡처되는 것입니다. 앱 SDK의 경계를 넘어 서면 OS 수준 수정을 기꺼이 시작하지만 시작점이 필요합니다.
스크린 샷을 잊어 버려, 안드로이드에서 실행중인 응용 프로그램의 비디오를 캡처 할 수 있습니까? 뿌리 또는 비 뿌리, 나는 상관없고, 적어도 15fps를 원합니다.
업데이트 : 외부 하드웨어를 원하지 않습니다. 의도는 휴대 성이 뛰어나고 모든 프레임이 Android OS 내에서 캡처되는 것입니다. 앱 SDK의 경계를 넘어 서면 OS 수준 수정을 기꺼이 시작하지만 시작점이 필요합니다.
답변:
Android 4.4 (KitKat) 이상 장치에는 Android 장치 화면을 기록하기위한 셸 유틸리티가 있습니다. USB를 통해 adb 유틸리티를 사용하여 KitKat을 실행하는 개발자 / 디버그 모드의 장치를 연결 한 후 다음을 입력하십시오.
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
나는 이것이 오래된 질문이라는 것을 알고 있지만 OP가 좋아하는 것으로 대답하지 않았기 때문에. Android 마켓 스크린 캐스트 링크 에서이를 승인하는 앱이 있습니다.
예, 비디오 출력이있는 전화를 사용하고 비디오 레코더를 사용하여 스트림을 캡처합니다.
이 기사를 참조 하십시오 http://graphics-geek.blogspot.com/2011/02/recording-animations-via-hdmi.html
@taranfx, 더 많은 정보없이 StackOverFlow에 Android 개발자 도구가 설치되어 있다고 가정합니다. 그렇다면 에뮬레이터를 실행 한 다음 많은 데스크톱 화면 캡처 프로그램 중 하나를 사용하여 실행중인 응용 프로그램을 캡처 할 수 있습니다. Mac의 화면 흐름 은이 작업에 효과적입니다. Windows 또는 Nix 플랫폼을 사용하는 경우 좋은 화면 캡처 프로그램이 많이 있으며 온라인 서비스도 있다는 것을 알고 있지만 링크가 없거나 사용하지 않았습니다. 다음은 에뮬레이터 설정 및 실행에 대한 참조 문서 링크입니다. 안드로이드 SDK는 모바일 장치 에뮬레이터를 포함 ...
또한 SMRecorder와 같은 스크린 레코더를 사용하는 것이 좋습니다. 에뮬레이터를 사용하는 대신, 특히 게임이나 비디오를 원할 때 에뮬레이터를 사용하는 대신 Android가 설치된 VirtualBox VM을 사용하는 것이 좋습니다. Dalvik 디버거를 연결하여 앱을 디버깅 할 수 있습니다. 디버거로 인해 앱 속도가 너무 느려지면 연결을 끊어 비디오를 녹화하십시오. 디버깅을 위해 Android VM을 설정하는 방법을 설명하는 많은 링크가 있습니다. 에뮬레이터보다 훨씬 낫습니다. 이제 앱이 가속도계 나 PC에서 사용할 수없는 카메라를 사용하는 경우 장치에서 직접 화면 캡처를 처리하지 않습니다. 이를 위해 위에서 언급 한 Android 마켓 앱을 사용합니다.
Android 4.3에는 표면에서 기록하는 데 사용할 수있는 새로운 MediaCodec API가 있습니다. 참조 : http://developer.android.com/about/versions/android-4.3.html ( "Surface에서 비디오 인코딩"섹션으로 스크롤 하십시오 )
기기가 루팅 된 경우 휴대 전화 나 태블릿에서 직접 화면 동영상을 녹화 할 수 있습니다. SCR Screen Recorder 앱 을 만들고 있습니다. 내가 아는 한, 이것은 Tegra 기기 (Nexus 7 포함) 및 Android 4.2를 지원하는 유일한 앱입니다. 현재 앱은 기기에 따라 9-18fps 사이에서 기록되지만 개선하기 위해 노력하고 있습니다. SCR Screen Recorder는 아직 베타 테스트 단계에 있으므로 자유롭게 테스트하고 의견을 보내주십시오.
AirPlay 미러링 및 화면 녹화 기능이 이제 미러 APK (베타)가 있는 CyanogenMod 에 있습니다.
비디오 카메라 응용 프로그램을 개발하는 경우 비디오 캡처에 사용할 API를 아는 것이 좋습니다.
http://developer.android.com/training/camera/videobasics.html
(위의 링크는 실제 레코딩이 수행되는 방식이 아니라 의도 제출을 통해 비디오 레코딩이 수행되는 방식 만 보여줍니다)
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;
}
삼성 전화의 경우 추가 설정 ( 'cam_mode'핵)이 있습니다.
CamcorderProfile.QUALITY_HIGH 해상도로 녹색 깜박임 비디오 생성
더 유용한 링크 :
나는 그것을 구현하지 않았지만 여전히 나는 당신에게 이것을 할 아이디어를주고있다.
우선 안드로이드 장치 의 스크린 샷 을 찍을 코드를 얻습니다 . 그리고 일정한 시간 간격을두고 이미지를 생성하는 동일한 기능을 호출하십시오. 프레임 / 이미지에서 비디오 를 작성하는 코드를 추가 한 다음 찾으십시오 .
편집하다
볼 이 링크를 도하고 화면 크기에 따라 국지적 중요한 것은 여러 개의 작은 작업으로 작업을 분할 한 다음 필요로 결합하는 것입니다 수정합니다.
가장 좋은 방법은 FFMPEG 입니다. 그러나 한 번 시도했지만 매우 긴 절차입니다. 먼저 cygwin 및 Native C ++ 라이브러리와 많은 것들을 다운로드하고 연결해야 FFMPEG (C ++로 빌드 됨)를 사용할 수 있습니다.
Remote Manager를 살펴보십시오 . 그러나 화면이 큰 장치에서는 제대로 작동하지 않는 것 같습니다. 그래도 DEMO 를 시도해 볼 수 있습니다 .
Android
은 프로그램 이름으로 사용했기 때문에 차단했습니다 . 곧 나는 아무 Android
말없이 다시 출판 할 것이다 .
Android Lollipop (5)에는 여기에 설명 된 화면 캡처 를 허용 하는 새로운 기능이 추가되었습니다.
다음과 같이 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();
}
이것은 오래되었지만 ASC는 어떻습니까?