簡體   English   中英

捕獲Android屏幕的視頻

[英]Capture Video of Android's Screen

忘記截圖,是否可以在Android中捕獲正在運行的應用程序的視頻? 根或不根,我不在乎,我想要至少15fps。

更新:我不需要任何外部硬件。 目的是使其完全可移植,並在Android OS中捕獲每一幀。 如果它跨越app sdk的邊界,我願意去操作系統級修改,但我需要一個起點。

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

我知道這是一個古老的問題,但因為OP似乎沒有回答。 有一個應用程序可以在Android Market Screencast鏈接中使用它

是的,使用帶有視頻輸出的手機,並使用錄像機捕獲視頻流

請參閱此文章http://graphics-geek.blogspot.com/2011/02/recording-animations-via-hdmi.html

我的建議也是使用屏幕錄像機,如SMRecorder。 而不是使用速度慢的模擬器 - 特別是對於您想要視頻的游戲和事物,我建議使用安裝了Android的VirtualBox VM。 您可以將Dalvik調試器連接到它並在那里調試應用程序。 如果調試器使app太慢,請斷開它以錄制視頻。 有很多鏈接解釋如何設置Android VM進行調試。 我覺得它比模擬器好得多。 現在,如果您的應用程序使用加速計或PC上沒有的攝像頭,則不會直接在設備上捕獲屏幕。 為此,我將使用上面提到的Android市場應用程序。

@taranfx,沒有更多信息我假設你在StackOverFlow上安裝了Android Developer Tools。 如果是這樣,您可以運行模擬器,然后使用眾多桌面屏幕捕獲程序之一來捕獲正在運行的應用程序。 Mac上的屏幕流程非常適合這樣做。 我相信如果你在Windows或Nix平台上有很多好的屏幕捕獲程序,我知道也有一些在線服務,但我沒有任何鏈接,也沒有使用它們。 以下是有關設置和運行模擬器的參考文檔的鏈接。 Android SDK包含移動設備模擬器......

我猜截屏不是tegra 2不相容的原因,我已經嘗試過,但沒有乳清! 所以我嘗試在市場上使用Z-ScreeNRecorder ,將它安裝在我的LG Optimus 2x上,但是它記錄了唯一的空白屏幕,我嘗試了5分鍾。 然后我得到5分鍾。 6mb大小的空白屏幕文件...所以沒有必要嘗試,直到他們釋放一些與tegra2芯片組兼容的軟件!

Android 4.3有一個新的MediaCodec API,可用於從曲面錄制。 請參閱: http//developer.android.com/about/versions/android-4.3.html (向下滾動到“從曲面進行視頻編碼”部分)

如果您的設備已植根,則可以直接從手機或平板電腦錄制屏幕視頻。 我正在研究SCR屏幕錄像機應用程序。 據我所知,這是唯一支持Tegra設備(包括Nexus 7)和Android 4.2的應用程序。 目前應用程序根據設備記錄9-18fps,但我正在努力改進它。 SCR屏幕錄像機仍處於測試階段,因此可以隨意測試並提供反饋。

看看遠程管理器 但在我看來它與大屏幕設備無法正常工作。 雖然,你可以嘗試DEMO

AirPlay鏡像和屏幕錄制現在使用CyanogenMod with Mirror APK(Beta)。

如果您正在開發視頻攝像頭應用程序,那么最好知道用於視頻捕獲的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應用程序:

https://android.googlesource.com/platform/frameworks/av/+/android-cts-4.4_r1/cmds/screenrecord/screenrecord.cpp

關鍵錄音動作在這里完成:

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分辨率產生綠色閃爍視頻

更有用的鏈接:

如何在Android上捕獲視頻錄制?

我沒有實現它,但我仍然給你一個想法。

首先獲取代碼以獲取Android設備屏幕截圖 並且在一段時間后調用相同的函數來創建圖像。 添加然后找到從幀/圖像創建視頻的代碼。

編輯

也可以看到此鏈接並根據您的屏幕尺寸進行修改。主要是將您的工作分成幾個小任務,然后根據需要進行組合。

FFMPEG是最好的方法。 但是,一旦我嘗試過,但這是一個非常漫長的過程。 首先,您必須下載cygwin和Native C ++庫以及許多內容並連接,然后您就可以使用FFMPEG(它是用C ++構建的)。

如果您想記錄用戶導航以便測試UI和其他內容,我建議您使用TestFairy

它允許您通過電子郵件將apk發送給一些測試用戶,並查看包含應用程序中所有會話的視頻,甚至是應用程序崩潰和設備統計信息。

在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怎么樣?

如果您在PC上,則可以在PC上運行My Phone Explorer ,在手機上運行MyPhoneExplorer Client ,將屏幕截圖設置為連續刷新,並使用Wink通過My Phone Explorer窗口捕獲屏幕的自定義矩形區域用你自己的捕獲率。 然后在Wink中轉換為FLV,然后使用WinFF從Flash視頻轉換為MPG。

我沒有使用過應用程序,但我看過Rec。 作為一種方式引用,但你需要root手機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM