当前位置: 首页 > 知识库问答 >
问题:

将视频从Firebase存储加载到视频视图

张毅
2023-03-14

我想从Firebase存储中播放视频,其中包含我正在尝试的视频视图,如下所示:

storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        //Toast.makeText(Chat.this, uri.toString(), Toast.LENGTH_SHORT).show();
                        MediaController mc = new MediaController(Chat.this);
                        videoView.setMediaController(mc);
                        videoView.setVideoURI(uri);
                        videoView.requestFocus();
                        //videoView.start();
                    }
                });

但它不会播放。视频是空的。

共有3个答案

斜俊
2023-03-14

这可能是通过将视频URL存储在数据库中,然后在Recyclerview中呈现的,Recyclerview由Webview / Youtube集成组成。

轩辕瑞
2023-03-14

我想这个答案的时候已经晚了,但这个答案对那些后来寻找它的人来说:

通过回收器查看从数据拨号 URI 适配器中的快照

        @Override
        protected void onStart() {
                super.onStart();

    final FirebaseRecyclerAdap...///

            ) {
                @Override
                protected void popul...////


    /////
     viewHolder.setVideo(Uri.parse(String.valueOf(videoUri)),model.getVideo());

        //  Here the position is sent to videoview adapter
        final String post_key = getRef( position ).getKey().toString();
        final String post_id = String.valueOf(post_key);

        viewHolder.setUid(model.getUid());

        //  Here the position is sent to videoview adapter
        viewHolder.setVideo(post_id);
        viewHolder.setUserprofile(getApplication(),model.getUserprofile());

        }
        yourAdpater ....


        }

        public static class ViewHolder extends RecyclerView.ViewHolder {

        View mView;
        Videoview post_video ;

        public ViewHolder(View itemView) {

        super(itemView);
        mView = itemView;

        post_video = (VideoView ) mView.findViewById(R.id.videoView);

        }

        public void setVideo(final String post_id) {

        mDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

        // 
        Uri uri=Uri.parse(dataSnapshot.child(post_id).child("video").getValue(true).toString());

//You can set up the video display as you like

                    post_video.setVideoURI(uri);
                    post_video.requestFocus();
                    post_video.start();


        @Override
        public void onCancelled(DatabaseError databaseError) {
    }
});
}

数据库应该如下所示:

看这里。

祝你好运。

萧嘉茂
2023-03-14

首先,确保存储中的视频实际上是Android设备可以播放的格式。VideoView不能播放所有内容——只能播放Android支持的视频类型。

您现在通过将uri直接传递到VideoView中所做的操作被解释为试图从给定的uri流式传输视频。Firebase存储不支持视频流,因此无法工作。从uri流式传输要求另一端的服务器能够流式传输给定的资源。

如果要从存储中播放视频,必须先下载完整的视频,保存到本地文件,然后将视频视图指向本地文件进行播放。

 类似资料:
  • 我正在开发一个有视频流功能的应用程序。我正在使用firebase数据库和firebase存储。我试图找到一些关于firebase存储如何处理视频文件的文档,但真的找不到太多。

  • 我有一个基于AWS的web应用程序。客户端使用Angular 1.5.3用JavaScript编写 null 我已经找到了这篇教程:http://docs.aws.amazon.com/amazoncloudfront/latest/developerguide/tutorialstreamingjwplayer.html,但不幸的是,这篇教程没有多大用处,因为它描述了如何从公共bucket进行流

  • 有没有办法从Firebase存储器中取出一个视频文件,而不是一次取出整个文件?像youtube一样,它只加载用户观看的片段。我不想加载一个50mb的文件,让用户等待它,只是为了让他们继续前进。 使用Firebase存储在flutter中可以做什么?

  • 我正在做一个react项目,很像一个社交媒体应用程序,用户可以上传图像或视频。我正在使用firebase存储来存储图像和视频。 我可以通过使用react react-firebase-file-uploader包完成图像上传,但由于我是web开发的新手,我很难找到为react上传视频的解决方案。 我已经搜索了整个互联网,但我找不到一个适当的解决方案来完成这些任务。 > 我要求只上传视频/视频,并希

  • 我检查过: 我查看了这个链接,上面有一个答案,说你必须将视频转换成块,并将块保存到firebase存储区,然后加载它们: 但我在这里迷失了: 谢谢你的努力。

  • 我正在使用数据移动库跟踪传输数据,以便将视频(mp4)从本地计算机上载到Azure Blob存储。 这是密码。 链接中提供的示例在GetBlob方法中没有以下行 我试过使用ContentType和不使用ContentType。在这两种情况下,文件似乎都已上载到Blob。唯一的区别似乎是ContentType,如下图所示。 问题是,在尝试下载任何文件时,它导致了一个警告错误,之后两个文件都没有播放,