簡體   English   中英

從保存在我的Gallery Android Studio中的視頻中挑選幀

[英]Picking Frames from a Video saved in my Gallery Android Studio

我是Android Studio(和Java)的新手,我正在嘗試制作視頻處理應用程序。 我希望程序從用戶庫中上傳視頻,然后每秒拍攝一次視頻圖片並將其保存到數組中。 從邏輯上講,我編寫的代碼對我來說很有意義,沒有錯誤,但是當我在Samsung平板電腦上運行該應用程序時,在觀看視頻后崩潰。 我認為setDataSource無法找到正確的數據源,但是我不確定如何傳遞視頻中的數據。 有人可以幫忙嗎?

這是我的代碼:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    savedimage = (ImageView) findViewById(R.id.imageView);
}

public void activity(View view) {
    startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.INTERNAL_CONTENT_URI), GET_FROM_GALLERY);
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    Uri videouri = data.getData();
    retriever.setDataSource(String.valueOf(videouri));
    String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
    long timeInmillisec = Long.parseLong(time);
    long seconds = timeInmillisec / 1000;
    ArrayList<Bitmap> mylist = new ArrayList<Bitmap>();
    for (int i = 0; i < seconds; i++) {

        Bitmap bArray = retriever.getFrameAtTime(100000 * i, MediaMetadataRetriever.OPTION_CLOSEST);
        mylist.add(bArray);

    }
}

由於您的videouriUri ,請嘗試調用void setDataSource (Context context, Uri uri)而不是void setDataSource (String path)

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // check for resultCode & requestCode
    if (resultCode == RESULT_OK) {
        if (requestCode == GET_FROM_GALLERY) {

            MediaMetadataRetriever retriever = new MediaMetadataRetriever();
            Uri videouri = data.getData();

            // "videouri" is Uri, call setDataSource (Context context, Uri uri) instead
            retriever.setDataSource(this, videouri);

            .....

    }
}

暫無
暫無

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

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