gca*_*cas 56 video-streaming firebase google-cloud-platform firebase-storage
我正在开发一款具有视频流功能的应用.我正在使用firebase数据库和firebase存储.我正在尝试找一些关于firebase存储如何处理视频文件的文档,但实际上找不到多少.
在文档中提到,firebase存储与其他谷歌应用服务一起使用以允许CDN和视频流,但所有搜索似乎都导致死路一条.有什么建议?
Mik*_*ald 37
我认为有几种类型的视频流,这可能会改变我们的答案:
在使用Firebase存储和Firebase实时数据库构建了实时流式Periscope风格应用程序后,我非常强烈建议不要使用它 - 我们上传了三个第二个块并通过实时数据库同步它们.虽然它有效(令人惊讶的好),但在非常好的互联网上有大约5秒的延迟,它也不是最有效的解决方案(毕竟,你上传和存储该视频,加上没有任何转码) .我建议使用一些WebRTC样式,专为视频传输而构建,并使用实时数据库在流的旁边发送信号.
另一方面,在Firebase功能上构建移动YT绝对是可能的.这里的诀窍是对视频进行转码(使用类似Zencoder或Bitmovin的内容,更多信息请访问https://cloud.google.com/solutions/media/)将您上传的视频整理成不同分辨率的小块(以及例如,iOS需要HLS进行流式传输.您的客户端可以将块信息存储在实时数据库中(块名称,可用分辨率,块数),并可以随着视频的进展从存储中下载所述块.
gra*_*spo 22
如果您想从Firebase存储中传输视频,这是我找到的最佳方式.这取决于视频文件的大小.我只要求10-30mb文件,所以这个解决方案对我有用.只需将Firebase网址视为常规网址即可:
String str = "fire_base_video_URL";
Uri uri = Uri.parse(str);
videoViewLandscape.setVideoURI(uri);
progressBarLandScape.setVisibility(View.VISIBLE);
videoViewLandscape.requestFocus();
videoViewLandscape.start();
Run Code Online (Sandbox Code Playgroud)
如果你想循环播放视频:
videoViewLandscape.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
}
});
Run Code Online (Sandbox Code Playgroud)
如果您想在视频开始之前显示进度条,请执行以下操作:
videoViewLandscape.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) {
progressBarLandScape.setVisibility(View.GONE);
return true;
}
else if(what == MediaPlayer.MEDIA_INFO_BUFFERING_START){
progressBarLandScape.setVisibility(View.VISIBLE);
return true;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
这不是最好的做事方式,但它现在适用于我,直到我找到一个好的视频流服务.
Sky*_*010 10
所有其他问题都建议您使用 HLS 之类的协议。但是,这仅在您为 Apple AppStore 开发提供时长超过 10 分钟的视频的应用程序时才需要。
在所有其他情况下,您只需将视频编码为 mp4 并将其上传到 firebase。然后,您的客户可以毫无问题地流式传输 mp4。只需确保您的 moov atom 位于 mp4 文件的开头。这允许立即开始播放视频,即使它没有完全加载。由于 firebase 存储支持可变位请求,用户还可以跳过或返回。
要测试它,只需将视频上传到您的 Firebase 存储并在浏览器中打开它。
您可以在 Firebase Cloud Storage 上托管 HLS 视频。它对我来说效果很好。诀窍是修改播放列表.m3u8文件以包含存储文件夹前缀,以及?alt=media播放列表中每个文件条目的后缀:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:2.760000,
<folder_name>%2F1_fileSequence_0.ts?alt=media
#EXT-X-ENDLIST
Run Code Online (Sandbox Code Playgroud)
您还没有真正有使用服务器端转码,你可以有谁上传视频做的客户端,并节省可观的成本。
我在此处编写了带有源代码的完整教程:https : //itnext.io/how-to-make-a-serverless-flutter-video-sharing-app-with-firebase-storage-include-hls-and-第411e4fff68fa
| 归档时间: |
|
| 查看次数: |
37841 次 |
| 最近记录: |