将图像,视频上传和下载到Firebase存储以及从android应用上传和下载太慢

时间:2018-08-23 10:13:20

标签: android firebase google-cloud-firestore firebase-storage

我正在开发一个Android应用程序,其中包括将照片和视频上传/下载到Firebase存储。我对firebase的功能感到非常满意,但是即使我在高速互联网上,上传/下载图像和视频也只花很少的时间。

图片和视频的上传和下载工作正常,但是我不能指望Google支持的平台会出现这种情况。我在上传之前压缩图像,尽管花费的时间更多。说,例如。我在WhatsApp个人资料照片上上传了7Mb大小的图片,最多需要5-6秒即可完成。但是在我的android应用中,同一张图片上传将花费60秒钟以上。

伙计们,如果您有任何更好的解决方案或最终实现的任何方法,请分享。

关于, 斯里尼

3 个答案:

答案 0 :(得分:1)

所有与媒体压缩有关。 您还可以通过压缩媒体来上传与WhatsApp相同的图像,视频和其他媒体文件。 压缩后,检查Firebase的速度以进行上传和下载。您也会感觉到它的速度。

这是压缩工具

等等。 我正在使用这两个库来压缩视频和图像文件。

以这种方式使用Firebase上传。

 @(Html.Kendo().Scheduler<BusSchedulingSystem.Web.ViewModels.SchedulerViewModel>()
                .Name("scheduler")

                .Date(new DateTime(2018, 8, 13))
                //.StartTime(new DateTime(2013, 6, 13, 7, 00, 00))
                .Height(600)
                .Views(views =>
                {
                    views.TimelineMonthView();
                })
                .Timezone("Etc/UTC")
                .Group(group => group.Resources("Company").Orientation(SchedulerGroupOrientation.Vertical))
                .Events(events => events.DataBound("onLoad") )



    .Resources(resource =>
    {
        resource.Add(m => m.Company.Id)
            .Title("Company")
            .Name("Company")
            .DataSource(ds => ds
                    .Custom()
                    .Transport(transport => transport.Read(read => read.Action("Read", "Scheduler")))
                    .Schema(schema => schema
                        .Data("Data")
                        .Total("Total")
                        .Errors("Errors")
                        .Model(model =>
                        {

                            model.Field("Name", typeof(string));

                        })
                    )
                )
            .DataTextField("Name");
    })

答案 1 :(得分:0)

尝试

// Get the data from an ImageView as bytes
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();

UploadTask uploadTask = mountainsRef.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle unsuccessful uploads
    }
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        // taskSnapshot.getMetadata() contains file metadata such as size, content-type, etc.
        // ...
    }
});

答案 2 :(得分:0)

您是否尝试过检出WebP和WebM中的照片和视频?

这是Google的一些团队开发的一种格式,旨在将文件大小减小到最小,而又不大幅度改变文件的质量。与其他格式的图像和视频相比,结果非常好。 WebP还支持编码器和解码器。

在此处查看WebP的工具:

  

https://developers.google.com/speed/webp/

只需下载该工具并将其放在您的工作文件夹中,调用命令提示符并运行

  

cwebp -q int fileName.jpg -o fileName.webp

并查看结果。

查看用于WebM的工具:

  

https://www.webmproject.org/