问题是我笔记本的硬盘比较小,250G。 我看的视频大部分都是在线的,但偶尔也会有一些资源需要下载下来慢慢观看。 硬盘太大我装了几次QQ影音又卸载了,还卸载了win10自带的播放器(占用空间不大但功能很少,最喜欢的倍速播放不是可用的)。 突然我想起来我一直在用它。 网页在线播放器的功能也很丰富。 可以直接创建一个网页来播放本地视频吗?
开始
百度了一下,找到了一个文件相关的函数网址。 它完全满足了我的要求,所以让我们开始吧。
大致思路是这样的,做一个input[type=file],选择视频直接加载到Video组件中进行播放,然后编写一个拖动事件,让视频直接拖到网页上进行播放。 既然是React,那我该怎么办呢? 怎么能少呢?
创建一个新的 .tsx 文件
10
11
12
13
14
反应,来自“反应”的 { }
()=>{
(e:){
const [ 文件 ] = e.. 文件
//然后可以在这里获取到input选择的文件进行处理。
const = URL.(文件)
选择视频后,需要与DOM进行交互,然后显示视频。 这里需要使用Hook来管理状态,并将视频地址存储在其中。
10
11
12
13
14
15
16
17 号
反应,来自 'react' 的 { , }
()=>{
常量 [ , ] = ('')
(e:){
const [ 文件 ] = e.. 文件
//然后可以在这里获取到input选择的文件进行处理。
(网址。(文件))
{&&}
至此,我们已经可以播放本地视频了,只是懒得慢慢选择视频了。 HTML5为我们提供了拖放事件。 我们可以通过拖放事件直接获取文件或文件夹。
10
11
12
13
14
15
16
17 号
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
反应,来自 '反应' 的 { , , }
()=>{
常量 [ , ] = ('')
// 我真的找不到e。 所以我会先使用任何一个。
(e:|任何){
const [ 文件 ] = e..文件 || e.?.文件
//然后可以在这里获取到input选择的文件进行处理。
(网址。(文件))
// +++++++++++++++
(()=>{
常量 = ..body
// 拖拽进入
?.("", ()=>{ /* at do sth */ }, false)
// 结束拖动防止冒泡,防止浏览器直接打开
?.("", e => e.(), false)
// 拖动并离开
?.("", ()=>{ /* at do sth */ }, false)
//拖动事件
?.("drop", e=> {
e.()//取消事件的默认动作。
//e.
(五)
},错误的)
}, [])
// +++++++++++++++
{&&}
虽然可以使用浏览器原生的Video组件,但它在任何速度下都很丑陋且无用。 虽然自己写一个美化的Video并不难,但我还是找到了一个开源的视频播放器。 最后我找到了这个
1npm 反应-
9...
{&&}
命运
当然,还有那些拖放美化。 视频播放器的css美化我就不写了。 这只是我一时兴起制作的一个小圆顶。