首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向/从android应用程序上传和下载图像、视频到firebase存储的速度太慢

向/从android应用程序上传和下载图像、视频到firebase存储的速度太慢
EN

Stack Overflow用户
提问于 2018-08-23 18:13:20
回答 3查看 4.8K关注 0票数 0

我正在开发一个android应用程序,其中包括照片和视频上传/下载到firebase存储。我对firebase的功能非常满意,但上传/下载图片和视频需要更多的时间,即使我在高速互联网上。

图片和视频的上传和下载运行得很好,但我不能指望谷歌支持的平台会这么慢。我正在压缩之前上传的图像,即使,所需的时间更多。比方说。我上传了7Mb大小的图片在WhatsApp个人资料图片,这将在最大5-6秒完成。但在我的android应用程序中,上传同一张图片需要60秒以上的时间。

伙计们,如果你们有更好的解决方案或实现,请与我们分享。

问候你,斯里尼

EN

回答 3

Stack Overflow用户

发布于 2018-08-23 18:58:52

这都是关于媒体压缩的。您还可以通过压缩您的媒体来上传与WhatsApp相同的图像、视频和其他媒体文件。压缩后检查firebase上传和下载的速度。你也会感受到它的速度。

以下是压缩工具

还有更多。我使用这两个库来压缩视频和图像文件。

这样使用firebase upload。

代码语言:javascript
复制
File file =new File(mediaPath);
        if(file.exists()) {
            UploadTask uploadTask = riversRef.putFile(Uri.fromFile(file),metadata);
            Task<Uri> urlTask = uploadTask.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();
                    }

                    // Continue with the task to get the download URL
                    return riversRef.getDownloadUrl();
                }
            }).addOnCompleteListener(task -> {
                if (task.isSuccessful()) {
                    Uri downloadUri = task.getResult();
                    getUploadedMediaPath.getUploadedFileUrl(downloadUri.toString());
                }
            });
        }
票数 1
EN

Stack Overflow用户

发布于 2018-08-23 19:02:12

尝尝这个

代码语言:javascript
复制
// 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.
        // ...
    }
});
票数 0
EN

Stack Overflow用户

发布于 2018-08-24 02:53:51

你有没有尝试过在WebP和WebM上获取照片和视频?

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

请查看此处的工具WebP:

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

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

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

并查看结果。

查看WebM的工具:

https://www.webmproject.org/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51983420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档