angular - 带有 Angular 的 Youtube 截图
问题描述
在我的应用程序中,我尝试实现 YouTube 视频截图。我习惯HTML canvas
这样做。由于画布不适用于 iframe,我使用 API 将视频作为 .mp4 获取。我的 API 将我的 YouTube 视频作为具有此模式的 url 返回"https://yt.apilover.com/file/?hash=...."
我可以在我的应用程序中播放视频,但由于 CORS 政策,每当我尝试对其进行截图时,我都会遇到“受污染的画布”问题。
takeScreenShot () {
var canvas = <HTMLCanvasElement>document.getElementById("canvas");
var ctx = canvas.getContext("2d");
canvas.width = 480;
canvas.height = 360;
const vid = document.getElementById("trailer") as HTMLVideoElement
ctx.drawImage(vid, 0, 0, canvas.width, canvas.height);
this.imgSrc = canvas.toDataURL()
return this.imgSrc
}
我知道我可以使用 proxy.conf.json 进行代理,但我也知道它在生产中没有用。
我可以使用拦截器重定向"https://yt.apilover.com/"
到我的后端来解决这个 CORS 问题吗?
解决方案
我可以使用拦截器从“https://yt.apilover.com/”重定向到我的后端,以便解决这个 CORS 问题吗?
简而言之,您无法控制超出您能力范围的事情,因此您应该找到可以管理的解决方案。例如,为什么不在您的后端使用像 FFmpeg 这样的程序来截取屏幕截图,然后将其发送到您的前端而不会出现 CORS 问题?
看看这个问题。它使用 youtube_dl 的组合从其 id 中获取 youtube Url,然后使用 FFmpeg 获取屏幕截图。
推荐阅读
- angular6 - 如何在Angular 6的组件类中使数组动态化
- c# - 用C#实现多路复用器的硬件锁
- php - 用 laravel 删除 mysql
- c# - 如何在 c# 中的 datagridview 中使 datagridview 的某些行只读和其他可编辑
- javascript - 如何在 tensorflow.js 中广播矩阵/向量点积
- php - 在下拉菜单 PHP HTML 中保留选定的值
- design-patterns - 解释器模式可以像解析配置文件一样简单吗?
- apache - 如何使 apache 中的重写模块工作?
- javascript - 如何查看初始值 .Select/Option
- jenkins - Jenkins BlueOcean 缺少插件参数作为“通过 SSH 发送构建工件”