之前有将视频切片上传到阿里图床,只不过因为大量滥用,这个方法已经行不通了。
刚好GitHub可以储存文件,并且有直链。因此拿来存放视频切片片段再合适不过。
GitHub对项目大小的限制如下,因此请注意自己项目的大小和切片文件的大小,尽可能避免被GitHub警告。
准备
在Windows安装ffmpeg、git,建议使用choco进行安装。
注册好GitHub账号。
将视频文件单独存放在英文目录。
准备好自己的域名接入cloudflare并使用cloudflare解析。
切片
我使用的 FFmpeg 工具来切片
转码
对视频进行转码(转为 mp4),将视频文件转为视频编码 h.264,音频编码 aac 格式的 mp4 文件,mp4 视频文件不是 h.264 编码到后面切片的时候可能会遇到很多莫名其妙的问题。(音画不同步之类的)
# infile.mp4 是待转码的文件(可以是其他格式,比如 avi…… 之类的)
# outfile.mp4 是转码输出文件
# libx264 转为 h.264 编码
ffmpeg -i infile.mp4 -c:v libx264 -strict -2 outfile.mp4
生成
将 mp4 切片,并生成 m3u8 文件,切片文件会存放在视频文件目录内,因此请将视频文件单独存放在一个文件夹中。
# output.mp4 需要切片的视频文件
# playlist.m3u8 待生成的 m3u8 文件名
# 5 切片时间,表示隔几秒进行切一个文件
# output%03d.ts 生成切割ts文件名,output%03d.ts 代表生成 output001.ts、output002.ts 这样的格式,03d 可以随意修改,占位符
ffmpeg -i output.mp4 -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 output%03d.ts
测试
进入存放切片的文件夹,找到m3u8文件,使用vlc,potplayer之类的播放器打开m3u8文件。可以正常播放就行。
处理
将m3u8文件和视频原文件移出存放切片文件夹。
上传
将切片文件夹用git上传到github,可能会提示:fatal: the remote end hung up unexpectedly
错误。
可能是缓存的原因或者是网络的原因,我是缓存不够,可以在Git库里的/.git/config
文件加入
[http]
postBuffer = 5242880000
编辑m3u8
使用VS CODE或者之类的软件打开m3u8文件,将里面的文件名
output000.ts
全部替换成
https://raw.githubusercontent.com/xxx/xxx/master/xxx/output000.ts
具体链接样时请根据你自己的存储库进行处理。
优化
因为GitHub在国内总是访问失败,因此可以cf worker用自己的域名反向代理raw.githubusercontent.com
即可。
教程在这
也可以用自己的域名后,用 302 跳转到jsdelivr
if ($host = 'github-raw.wnark.com') {
rewrite ^/(.*)/(.*)/master/(.*) https://cdn.jsdelivr.net/gh/$1/$2@master/$3 redirect;
}
记得要设置允许跨域:
add_header Access-Control-Allow-Origin https://www.wnark.com;
不然的话浏览器会报错。
只不过随着jsdelivr的全面被滥用,这个方法迟早会失效,因此在m3u8内的链接别用jsdelivr的,用次302跳转就行了。
测试
我博客的视频都是这样的,不用单独测试视频了。
参考:
GitHub + jsDelivr视频切片测试
git 推送出现 "fatal: The remote end hung up unexpectedly" 解决方案
版权属于:寒夜方舟
本文链接:https://www.wnark.com/archives/111.html
本站所有原创文章采用署名-非商业性使用 4.0 国际 (CC BY-NC 4.0)。 您可以自由地转载和修改,但请注明引用文章来源和不可用于商业目的。声明:本博客完全禁止任何商业类网站转载,包括但不限于CSDN,51CTO,百度文库,360DOC,AcFun,哔哩哔哩等网站。
6 条评论
切片切片切好了,电脑好像不能直接播放m3u8,手机可以,typecho又没有找到可以直接播放的插件,DPlayer不行,难受。https://cdn.jsdelivr.net/gh/flipped-cj/ImageHosting/video/playlist.m3u8
搞定了,自己又建一个弹幕播放器
Dplayer开启HLS试一下,Dplayer应该是支持m3u8的。
但是dplayer是真的不咋地,有些视频直接没声音,要么没画面。怪怪的,其他平台正常
你好,git提示 release包大于50MB,楼主这个你是咋解决的丫,
"Package size exceeded the configured limit of 50 MB."
找到的解决方法是分库,这也太麻烦了吧,请教一下 ,望指教
我不是加速release,我是直接访问GitHub的文件,虽然有提示,但还是可以正常加速。