利用jsdelivr和github来存储视频

发布于 2021-04-04 05:10

效果图

前言:在一个个人博客上,图片视频等资源的储存至关重要。

对于图片来说可以利用别人搭建好的图床例如sm.ms,或者利用jsdelivrpicgogithub,以及gitee等等都可以

但如果是视频,就没有那么方便了,各种储存方案价格昂贵,所以我们选择放弃,好的本文结束了但是我们可以利用jedelivr和github来储存


什么是m3u8

m3u8是苹果公司推出的视频播放标准,是m3u的一种,只是编码格式采用的是UTF-8。

m3u8准确来说是一种索引文件,使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址,从而实现在线播放。使用m3u8格式文件主要因为可以实现多码率视频的适配,视频网站可以根据用户的网络带宽情况,自动为客户端匹配一个合适的码率文件进行播放,从而保证视频的流畅度。

面临的问题

  • Github上传限制20M(网页)
  • Jsdelivr对加速资源的限制20M
  • Jsdelivr对MP4等视频格式的解码并不让人满意

上传限制

使用git bash
推荐新建一个仓库,专门用来储存视频
git clone到本地,取名随意,后文称此文件夹为A#(呲牙)
在目录下新建一个bat格式的文件,内容如下:

git add .git commit -m"%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"git branch -M mastergit push -u origin master 

双击bat即可强制推送本地全部内容到Github仓库。使用Git方式上传,可以摆脱20M上传大小的限制。

jsdelivr对mp4的解析不行

测试:https://cdn.jsdelivr.net/gh/TianZonglin/Ubuntu-Installog/dd.mp4
PS: 链接是使用的程序萌部落

jsdelivr的加速资源大小限制

以下就是本文的重点

利用FFmpeg,从以下下载
https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z

A中右键选择 Git_Bash_here(没有?请花亿分钟百度下然后重装下git

  • ffmpeg.exe拖入其中,并回车,可以看见会弹出ffmpeg的信息
  • 或者将这个文件夹添加到环境变量中(推荐)方法自行百度添加环境变量

执行切片

第一步:mp4转成ts格式,一对一转换,转换后大小没什么变化。

ffmpeg -y -i 你的名字.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 你的名字.ts

第二步,按间隔分片,1对N,下面的5即“每个分片5秒”,可以自己切换。

ffmpeg -i 你的名字.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 你的名字%03d.ts

[tip type="warning" title="注意"]
这里如果直接输入ffmpeg是不能用的,我们首先拖动 ffmpeg.exe 到黑框中,这时会在 gitbash 中出现个路径,然后把上面的命令(ffmpeg后面的)复制到路径之后即可运行。
所以推荐将它添加到环境变量。
关于mp4的格式,请查看[王友元同学的文章]
(http://www.moetuan.cn/554.html)

第三步

删掉或移除原视频和转换后的ts视频(两个最大的视频文件),如下图

最后使用upload.bat上传

如何使用

dplayer插件(typecho)


一定要把 HLS支持 打开

最终效果

在线影院