
----------
# 前言:在一个个人博客上,图片视频等资源的储存至关重要。
对于图片来说可以利用别人搭建好的图床例如[sm.ms](sm.ms),或者利用`jsdelivr`与`picgo`的`github`,以及`gitee`等等都可以
但如果是视频,就没有那么方便了,各种储存方案价格昂贵,~~所以我们选择放弃,好的本文结束了~~但是我们可以利用jedelivr和github来储存
----------
# 什么是m3u8
## m3u8是苹果公司推出的视频播放标准,是m3u的一种,只是编码格式采用的是UTF-8。
m3u8准确来说是一种索引文件,使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址,从而实现在线播放。使用m3u8格式文件主要因为可以实现多码率视频的适配,视频网站可以根据用户的网络带宽情况,自动为客户端匹配一个合适的码率文件进行播放,从而保证视频的流畅度。
# 面临的问题
- Github上传限制`20M`(网页)
- Jsdelivr对加速资源的限制`20M`
- Jsdelivr对`MP4`等视频格式的解码并不让人满意
## 上传限制
使用git bash
推荐新建一个仓库,专门用来储存视频
再`git clone`到本地,取名随意,后文称此文件夹为`A`#(呲牙)
在目录下新建一个`bat`格式的文件,内容如下:
```bash
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: 链接是使用的[程序萌部落](https://cxmoe.com/)
## jsdelivr的加速资源大小限制
### 以下就是本文的重点
利用FFmpeg,从以下下载
https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z

在`A`中右键选择 Git_Bash_here(没有?请`重装下git`)
- 将`ffmpeg.exe`拖入其中,并回车,可以看见会弹出ffmpeg的信息
- 或者将这个文件夹添加到环境变量中(推荐)方法自行百度`添加环境变量`
## 执行切片
### 第一步:mp4转成ts格式,一对一转换,转换后大小没什么变化。
```bash
ffmpeg -y -i wow.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb wow.ts
```
### 第二步,按间隔分片,1对N,下面的5即“每个分片5秒”,可以自己切换。
```bash
ffmpeg -i wow.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 wow%03d.ts
```
[tip type="warning" title="注意"]
这里如果直接输入ffmpeg是不能用的,我们首先拖动 ffmpeg.exe 到黑框中,这时会在 gitbash 中出现个路径,然后把上面的命令(ffmpeg后面的)复制到路径之后即可运行。
所以推荐将它添加到环境变量。
关于mp4的格式:视频编码为`H264`,音视频编码为`AAC`,如果不是请用格式工厂进行转换
### 第三步
删掉或移除原视频和转换后的ts视频(两个最大的视频文件),如下图

最后使用`upload.bat`上传
## 如何使用
- typecho和wordpress可以使用dplayer插件
- Hexo见[程序萌部落](https://cxmoe.com/article/9cb3.html#%E4%BD%BF%E7%94%A8DPlayer%E8%A7%A3%E6%9E%90)
### dplayer插件(typecho)

一定要把 `HLS支持` 打开
### 最终效果(已废弃,网站已关闭)
[在线影院](https://old.godapex.com/video-live.html)

利用jsdelivr和github来存储视频