我想从firebase存储中检索视频

问题描述 投票:0回答:1

我正在开发简单的firebase应用程序,我在其中上传用户信息作为注册数据并在存储中上传视频。视频路径也作为正常工作的每个特定用户的嵌套子项存储在实时数据库中,但我不知道如何检索视频并在用户配置文件中设置其他用户信息。我需要代码从存储中检索视频。

     case PICK_VIDEO_REQUEST:
            if (resultCode == RESULT_OK) {


                selectedVideoUri = data.getData();
               userUid = FirebaseAuth.getInstance().getCurrentUser().getEmail();
                StorageReference storageRef = FirebaseStorage.getInstance().getReference();
                filename = data.getData().getLastPathSegment();
                tv_file_path.setText(filename);
                videoRef = storageRef.child("/videos/" + userUid + "/" + filename);
                //TODO: save the video in the db


            }
            break;




`//Button upload data in firebase
    btn_upload_notes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            uploadData(selectedVideoUri);


                           try {
                               if (FirebaseAuth.getInstance().getCurrentUser().getEmail().equals(value.getT_email())) {

                                   file_name = filename;
                                   notes_Category = text;
                                   lecture_topic = et_topic.getText().toString().trim();
                                   id = mDatabase.push().getKey();
                                   NotesModelClass notesModelClass = new NotesModelClass(id, notes_Category, lecture_topic, file_name);
                                   mDatabase.child(value.getT_id()).child("Video Notes").child(id).setValue(notesModelClass);
                                   return;
                               }
                           }
                           catch (Exception ex){
                               throw  ex;
                           }

        }
    });

`

     private void uploadData(Uri videoUri) {
    if (videoUri != null) {
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("Uploading...");
        progressDialog.show();
        UploadTask uploadTask = videoRef.putFile(videoUri);

        uploadTask.addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                if (task.isSuccessful())
                    progressDialog.dismiss();
                Toast.makeText(MainActivity.this, "Upload Complete", Toast.LENGTH_SHORT).show();

            }
        }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot
                        .getTotalByteCount());
                progressDialog.setMessage("Uploaded " + (int) progress + "%");
            }
        });
    } else {
        Toast.makeText(MainActivity.this, "Nothing to upload", Toast.LENGTH_SHORT).show();
    }

}
java android firebase firebase-storage
1个回答
2
投票

试试这个代码

检索单个视频。

StorageReference videoRef = storageRef.child("/videos/" + userUid + "/" + filename);

final long ONE_MEGABYTE = 1024 * 1024;
videoRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
    @Override
    public void onSuccess(byte[] bytes) {
        // Transform bytes to a video, play
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle any errors
    }
});

检索多个视频

 StorageTask<UploadTask.TakeSnapshot> storageTask;
        storageTask = yourStorageRefernce.putFile(videoUri);
        storageTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
            @Override
            public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
                if (!task.isSuccessful()) {
                    throw task.getException();
                }
                return yourStorageRefernce.getDownloadUrl();
            }
        }).addOnCompleteListener(new OnCompleteListener<Uri>() {
            @Override
            public void onComplete(@NonNull Task<Uri> task) {
                if (task.isSuccessful()) {
                    Uri downloadUri = task.getResult();
                    arrayList.add(downloadUri.toString());
                }
            }
        });
© www.soinside.com 2019 - 2024. All rights reserved.