0

我想压缩我的视频,然后将其上传到 firebase。但是如何使用 Uri 压缩视频是我的上传活动代码,在这里我创建了一种将视频上传到 firebase 存储的方法,但我希望首先压缩视频,然后再上传到 firebase。这里的任何人请帮助我。

public class Upload_reels extends AppCompatActivity {
    private ImageView plus;
    private VideoView reelvideo;
    private EditText captiontxt;
    private Button uploadbtn;
    private RelativeLayout picktbtn;
    public static final int CODE = 12;
    private DatabaseReference reference;
    private FirebaseDatabase database;
    private FirebaseAuth firebaseAuth;
    private StorageReference storageReference;
    private FirebaseStorage firebaseStorage;
    private Uri videoUri;
    String profileUrl,tick,username, captionst,timestamp;
    private ProgressDialog progressDialog;
    String videoUrl , compressedUri;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload_reels);

        getSupportActionBar().hide();

        plus = findViewById(R.id.plusicon);
        reelvideo  = findViewById(R.id.reelPlay);
        captiontxt = findViewById(R.id.caption);
        uploadbtn = findViewById(R.id.upload_reels_btn);
        picktbtn = findViewById(R.id.pickvideobtn);

        firebaseAuth = FirebaseAuth.getInstance();
        database = FirebaseDatabase.getInstance();
        reference = database.getReference("Users");
        progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Uploading.....");
        GiraffeCompressor.init(this);



        reference.child(firebaseAuth.getCurrentUser().getUid()).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                if (snapshot.exists()) {

                    profileUrl = snapshot.child("ProfileImage").getValue().toString();
                    username = snapshot.child("Name").getValue().toString();
                    tick = snapshot.child("Tick").getValue().toString();

                    Toast.makeText(Upload_reels.this, username, Toast.LENGTH_SHORT).show();


                }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });



        picktbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                pichvideo();
            }
        });

        uploadbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                captionst = captiontxt.getText().toString().trim();
                checkutills();
            }
        });






    }

    private void checkutills() {

        if (TextUtils.isEmpty(captionst)){
            Toast.makeText(this, "Please Enter a best Caption for your video", Toast.LENGTH_SHORT).show();
        }

        else {

            uploadvideotostorage();
        }


    }

    private void uploadvideotostorage() {
        progressDialog.show();

        if (videoUri!=null){

            timestamp = String.valueOf(System.currentTimeMillis());
            String filepathname = "Post/" + "post_" + timestamp;

            firebaseStorage = FirebaseStorage.getInstance();
            storageReference = firebaseStorage.getReference("Reels").child(filepathname);
            storageReference.putFile(videoUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                    taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {

                            videoUrl = String.valueOf(uri);

                            addtodatabse();

                        }
                    });

                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {

                }
            });





        }
    }

    private void addtodatabse() {

        HashMap<String  , String> hashMap = new HashMap<>();
        hashMap.put("videoUrl",videoUrl);
        hashMap.put("tick",tick);
        hashMap.put("Caption",captionst);
        hashMap.put("Username",username);
        hashMap.put("profileurl",profileUrl);
        hashMap.put("pId",timestamp);
        hashMap.put("UID",firebaseAuth.getCurrentUser().getUid());


        DatabaseReference refdata = FirebaseDatabase.getInstance().getReference("TravelReels");
        refdata.child(timestamp).setValue(hashMap).addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {

                Toast.makeText(Upload_reels.this, "Reels Uploaded Successfully", Toast.LENGTH_SHORT).show();
                progressDialog.dismiss();

            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(Upload_reels.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                progressDialog.dismiss();

            }
        });




    }

    private void pichvideo() {

        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType("video/*");
        startActivityForResult(intent,CODE);
    }

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

        if (requestCode == CODE && resultCode == RESULT_OK && data!=null){

            reelvideo.setVisibility(View.VISIBLE);
            plus.setVisibility(View.GONE);

            videoUri = data.getData();

            reelvideo.setVideoURI(videoUri);



            reelvideo.start();


        }
    }



}
4

0 回答 0