簡體   English   中英

如何在沒有root的情況下從Android Canvas捕獲視頻?

[英]How I can capture video from Android Canvas without root?

我正在開發一個繪畫應用程序,使用canvas和SurfaceView,我想記錄用戶操作,並生成視頻。

在這一刻,我正在努力:

public static Bitmap captureView(View v) {
    Log.v(CAPTURE_TAG, "init");
    v.setDrawingCacheEnabled(true);
    v.buildDrawingCache(true);
    Bitmap b = Bitmap.createBitmap(v.getDrawingCache());
    //v.destroyDrawingCache();
    v.setDrawingCacheEnabled(false); // clear drawing cache
    Log.v(CAPTURE_TAG, "Fin:");
    return b;
}

我使用定時器和AsynTask在AsynkTask上每隔50ms調用一次on on OnPostExecute方法,我將位圖保存在外部存儲器中:

public class takeCaptureTask extends AsyncTask<View, Void, Bitmap> {

    @Override
    protected void onPostExecute(Bitmap result) {
        Log.v("taskCapt", "Fin - InitSave");
        new saveCaptureTask().execute(result);
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        Log.v("taskCapt", "init");
    }

    @Override
    protected Bitmap doInBackground(View... params) {
        return Utils.captureView(params[0]);
    }
}

最后使用NDK和ffmpeg生成視頻。

我的問題是性能,使用這個,每個截圖需要200ms(5FPS),我需要至少15 FPS。

我的問題是:
1-我是否以正確的方式在沒有root的情況下進行屏幕錄制?
2-我可以使用其他方法截取畫布的截圖嗎?
3-這可以從沒有root的NDK截取屏幕截圖嗎? 在這種情況下,怎么樣?
4-使用NDK將數據保存到外部存儲的速度更快?
5-如何緩存大量圖像以便以后處理它?

我對我英語不好的看法。

非常感謝你的幫助!

這取決於你的繪畫方式。 您實際上可以使用Bitmap和Canvas作為繪制緩沖區,這將非常容易捕獲。 有很多方法可以做到這一點,包括只在視圖發生變化時才進行屏幕截圖

暫無
暫無

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

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