angular - 在页面播放视频的正确方法(从数据库上传视频数据 blob)
问题描述
我有 Angular 应用程序,它从服务器(从数据库)接收视频 blob 数据。用户将在页面上加载许多此类视频,这就是为什么我无法一次加载视频的所有数据(页面将按小时加载)。所有视频都在 <video src=""> 标签中。只有当用户想要播放它时,我才需要以某种方式上传每个视频的数据。
问题是每个 <video> 标签的 [src]="" 属性都是空的,因此没有视频数据(没有海报和控件被禁用)。用户无法按播放按钮上传视频数据。(preload 属性不起作用,因为视频没有 src)。我也无法点击 <video> 标签,因为它隐藏在控件下并且控件被禁用。
这是我如何从服务器获取 Angular 中的视频流(AppFile 是一个自定义应用程序类):
public getVideoData(video: HTMLMediaElement, videoAppFile: AppFile): void {
if (this.mode === 'message' && !video.src.length && video.paused) {
let httpParams: HttpParams = new HttpParams();
httpParams = httpParams.set('fileId', videoAppFile.id.toString());
httpParams = httpParams.set('fileType', 'video');
httpParams = httpParams.set('contentType', videoAppFile.type);
this._httpClient.get('api/files/fileData', {
params: httpParams,
responseType: 'blob'
}).subscribe(data => {
let reader = new FileReader();
reader.readAsDataURL(data);
reader.onload = function (e) {
video.src = e.target.result.toString();
};
});
}
后端是用 ASP.NET Core 编写的,它是 MVC,所以我不能直接在 [src] 属性中放置控制器的链接(如果我没记错的话)。Angular 尝试访问它不存在的路由,但不向服务器 MVC 控制器发出请求。
如何仅上传选定视频的 Blob 数据?用户应该点击哪里开始数据上传?
解决方案
推荐阅读
- python - 从 Pine 脚本到 Python 的递归函数
- sql - 在 Oracle 中从两个表中选择操作导致不完整的期望
- css - 如何将 css 添加到 Spring Boot 应用程序?
- python - 无法使用 openpyxl 打开单元格
- android-studio - 如何运行 MyLocationDemoActivity.java?
- c - 在 Linux 内核命名空间之间使用 POSIX 信号量
- networking - GCP 上的内部地址和私有地址有什么区别?
- regex - 正则表达式检查列表
- react-native - 结合两个圆形图像的左半边和右半边反应原生
- firebase - Firebase 规则不适用于子集合文档