Sie können die javacv-Bibliothek verwenden, um eine Reihe von Bitmaps zu kombinieren, die aus der Ansicht stammen. der Code wird wie folgt aussehen:
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder("/sdcard/test.mp4",256,256);
try {
recorder.setVideoCodec(avcodec.AV_CODEC_ID_MPEG4);
recorder.setFormat("mp4");
recorder.setFrameRate(30);
recorder.setPixelFormat(avutil.PIX_FMT_YUV420P10);
recorder.setVideoBitrate(1200);
recorder.startUnsafe();
for (int i=0;i< 5;i++)
{
view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
view.setDrawingCacheEnabled(false);
recorder.record(bitmap);
}
recorder.stop();
}
catch (Exception e){
e.printStackTrace();
}
Und hier ist ein full example wie
Danke für Ihre Antwort! Ich habe versucht, die Bibliothek zu benutzen. Es scheint, dass es für mich richtig ist. Aber ich habe eine Frage, ist es möglich, 30 Bitmaps pro Sekunde aufzunehmen? Andernfalls "Bitmap.createBitmap (view.getDrawingCache());" 30 Mal in einer Sekunde aufzurufen? Wie kann es die Leistung beeinflussen? – theaibek
Was ist v1? Diese API funktioniert nicht mehr. recoder.record nimmt keine Bitmap. –
@ JeffreyLiu 'v1' ist Ihre Ansicht von dem, was Sie einen Bildschirm nehmen möchten =) – theaibek