利用jsdelivr和github来存储视频

本文最后更新于:2 个月前

效果图

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

对于图片来说可以利用别人搭建好的图床例如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格式的文件,内容如下:
    1
    2
    3
    4
    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 master
    git 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格式,一对一转换,转换后大小没什么变化。

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

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

1
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的格式,请查看王友元同学的文章

第三步

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

最后使用upload.bat上传

如何使用

  • typecho和wordpress可以使用dplayer插件
  • Hexo见程序萌部落

    dplayer插件(typecho)


    一定要把HLS支持打开

    最终效果

    在线影院

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!