首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >存储在Firebase存储中的m3u8文件不会在网络播放器上播放

存储在Firebase存储中的m3u8文件不会在网络播放器上播放
EN

Stack Overflow用户
提问于 2020-08-12 10:53:49
回答 2查看 973关注 0票数 0

我已将m3u8文件存储在防火墙云存储中,这是m3u8文件的URL

代码语言:javascript
运行
复制
[https://firebasestorage.googleapis.com/v0/b/testing-musicoi.appspot.com/o/MediaContent%2F240p%2F240_out.m3u8?alt=media&token=0f81947b-1df0-4333-ae67-bdf21b4c49cc]

当我在我的电脑上使用VLC播放器时,这个网址很好地工作,但是当我尝试使用像这个HLS媒体播放器这样的网络播放器时,它是不工作的。此外,我想知道这个m3u8网址不适用于吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-12 11:05:02

web依赖于跨源资源共享,它允许一个域上的脚本访问另一个域的数据。此操作失败,因为您的原始域不允许来自其他域的访问。

您需要配置Access-Control-Allow-Origin头以允许bitmovin.com (和其他域)访问您的文件。

编辑firebase.json并添加或更改hosting部分:

代码语言:javascript
运行
复制
"hosting": {
  "headers": [ {
    "source": "**/*.*",
    "headers": [ {
      "key": "Access-Control-Allow-Origin",
      "value": "*"
    } ]
  } ]
}

[消]火基文件

票数 2
EN

Stack Overflow用户

发布于 2020-08-12 16:59:59

我发现了一个类似的问题,可能是您感兴趣的:

首先,在xml文件中创建一个外部播放器。

代码语言:javascript
运行
复制
<com.google.android.exoplayer2.ui.PlayerView
        android:id="@+id/video_view"
        android:layout_width="match_parent"
        android:layout_height="0sp"
        android:layout_marginStart="20dp"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="20dp"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0" />

“我已经将高度设置为0,因为稍后我将以编程方式修复高度,然后在您的活动中声明简单的SimpleExoPlayer为player。”

代码语言:javascript
运行
复制
 SimpleExoPlayer player;

“那么,在你遵循这些步骤”

代码语言:javascript
运行
复制
//declare your PlayerView 

final PlayerView playerView = mview.findViewById(R.id.video_view);

//your database ref

        final StorageReference storageReference =
                FirebaseStorage.getInstance().getReference("/Post_Video/"+ video + ".mp4");


 player = ExoPlayerFactory.newSimpleInstance(MainActivity.this);
        playerView.setPlayer(player);

        playerView.setVisibility(View.VISIBLE);

        playerView.getLayoutParams().height=550;
        playerView.getLayoutParams().width=950;

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


                BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter.Builder(MainActivity.this).build();
                TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
                ExoPlayer exoPlayer = (SimpleExoPlayer) ExoPlayerFactory.newSimpleInstance(MainActivity.this);
                Uri video = Uri.parse(uri.toString());
                DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("video");
                ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
                MediaSource mediaSource = new ExtractorMediaSource(video,dataSourceFactory,extractorsFactory,null,null);
                playerView.setPlayer(exoPlayer);
                exoPlayer.prepare(mediaSource);
                exoPlayer.setPlayWhenReady(false);

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

https://stackoverflow.com/questions/63375031

复制
相关文章

相似问题

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