之前发布过PHP版切片视频并将视频上传到图床的教程,现在这个是在网页上实现切片视频并上传到图床。
序言
我之前的教程在这:
PHP版切片视频并将其上传到图床其实很简陋,只能解决有无,基本上每用一次就得把机器删掉,也没法自动修复上传失败的地方。
而在网页上实现可视化切片视频并将其上传到图床不仅实现了可视化,还可以半自动修复上传失败的文件。
如果你觉得看这篇教程感觉晕乎乎的,那么我建议你看这篇教程。
搭建教程
安装WEB环境
无论是宝塔还是appnode还是单独Nginx都可以,只是反代的作用,因为我用appnode作为我的探针,因此在这我选择appnode。
安装ffmpeg
我们在这依然使用静态预构建版本安装FFMPEG,虽然教程说是centos7,但实测这个在centos和debian上都能用。如果你是centos,建议不要使用yum安装,yum安装的ffmpeg容易出问题。
获取安装程序脚本:
wget https://raw.githubusercontent.com/q3aql/ffmpeg-install/master/ffmpeg-install
使它可执行
chmod a+x ffmpeg-install
安装发行版本
./ffmpeg-install --install release
确保其有效:
root@debian:~# ffmpeg -version
ffmpeg version 4.2.2-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8 (Debian 8.3.0-6)
configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
安装python3
系统默认安装的是python2,在这里我们需要安装python3以及pip3
centos
centos只需要
yum install epel-release
yum install python36
yum install python36-pip
即可获得python3和pip3
debian
官方源没python3
我们编译安装:
apt-get update
apt-get install aptitude
aptitude -y install gcc make zlib1g-dev libffi-dev libssl-dev
wget https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz
tar -xvf Python-3.6.10.tgz
chmod -R +x Python-3.6.10
cd Python-3.6.10
./configure
make && make install
执行python3,pip3检查是否安装完成,不用将python3软链接到python上,进入python3可以使用 ctrl+D 退出。
安装git
yum install git
或者是
apt-get install git
下载源码
cd /home
git clone https://github.com/dforel/autoSplitUploadAliImg.git
安装切片环境
pip3 install flask
pip3 install flask_wtf
pip3 install requests
配置项目管理器
宝塔的python项目管理器实际上是用到了UWSGI,UWSGI也是一个项目管理器。
我们先安装他
centos:
yum install gcc
yum install python-devel
yum install python36-devel
debian:
我安装宝塔的时候应该是自动安装了,貌似没提示要安啥东西
安装libpcre 开发库
debian:
apt-get install libpcre3 libpcre3-dev
centos:
yum install pcre pcre-devel
安装uwsgi
pip3 install uwsgi
修改uwsgi.ini配置文件
cd /home/autoSplitUploadAliImg
nano uwsgi.ini
uwsgi.ini文件内容如下所示
[uwsgi]
master = true
http=192.168.200.10:5000
chdir = /www/wwwroot/abc.com/
wsgi-file=/www/wwwroot/abc.com/main.py
callable=app
processes=1
threads=1
buffer-size = 65536
vacuum=true
pidfile =/www/wwwroot/abc.com/uwsgi.pid
[uwsgi]
master = true
#启动主进程,来管理其他进程,其它的uwsgi进程都是这个master进程的子进程,如果kill这个master进程,相当于重启所有的uwsgi进程。
http=192.168.200.10:5000
#指定网页监听ip和端口
chdir = /www/wwwroot/abc.com/
#在app加载前切换到当前目录, 指定运行目录
wsgi-file=/www/wwwroot/abc.com/main.py
#运行的入口文件
callable=app
#将功能指定为app
processes=1
#使用一个进程
threads=1
#使用一个线程
buffer-size = 65536
#设置用于uwsgi包解析的内部缓存区大小。默认是4096(4k),如果http请求数据超过这个量,就会报错。
vacuum=true
#当服务器退出的时候自动删除unix socket文件和pid文件。
pidfile =/www/wwwroot/abc.com/uwsgi.pid
#指定pid文件
根据配置文件的含义,手动修改下。
[uwsgi]
master = true
http=0.0.0.0:8080
chdir = /home/autoSplitUploadAliImg/
wsgi-file = main.py
callable = app
processes = 1
threads = 1
buffer-size = 32768
vacuum = true
pidfile = uwsgi.pid
修改完后保存,并退出。
测试
先去宝塔/appnode那先把端口打开,执行
python3 main.py
正常情况下会提示:
* Serving Flask app "main" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: ***-***-***
如果用户访问会出现访问的日志。
访问地址为服务器ip:8080
例如8.8.8.8:8080
添加个视频,切片测试下,在线观看或者下载切片试试
downTemp
,请自行修改文件名并添加后缀,例如xxx.m3u8如需在标签页显示网站图标,请将favicon.ico文件放入autoSplitUploadAliImg/static/文件夹中,默认没有
测试可用后用ctrl+c取消运行。
正式部署
先使用root用户测试下能不能正常运行
uwsgi uwsgi.ini
能进入网页,正常切片,则开始正式部署。
修改uwsgi.ini如下所示。
[uwsgi]
master = true
http=0.0.0.0:8080
chdir = /home/autoSplitUploadAliImg/
wsgi-file = main.py
callable = app
processes = 1
threads = 1
buffer-size = 32768
vacuum = true
pidfile = uwsgi.pid
harakiri = 3600
设置一个harakiri计时器,它将破坏停留时间超过指定秒数的进程,我这里选择的是3600秒,即1小时,我不信你有耐心等他处理一小时。
再次测试下能不能正常工作
uwsgi uwsgi.ini
开机启动
编辑启动文件
nano /etc/systemd/system/m3u8.uwsgi.service
根据自己的需求修改
[Unit]
Description=uWSGI m3u8
After=syslog.target
[Service]
ExecStart=/usr/local/bin/uwsgi --ini /home/autoSplitUploadAliImg/uwsgi.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
运行测试
chmod +x /etc/systemd/system/m3u8.uwsgi.service
systemctl start m3u8.uwsgi.service
检查
systemctl status m3u8.uwsgi.service
添加开机启动项
systemctl enable m3u8.uwsgi.service
重启服务器,测试网站。
添加域名
上面如果能正常访问,就在宝塔那添加网站,增加https,反代的后端请使用127.0.0.1:8080,并关闭防火墙的8080端口。
优化
自动删除临时文件
由于原作者没写,不能自动删除生成的临时文件,以及重启服务器后上传文件夹的文件也没删,因此我就在这增加一个删除脚本,可以自动删除前天创建的临时文件夹,你丢在appnode/宝塔的自动运行脚本功能里就行了。
find /home/autoSplitUploadAliImg/temp/* -mtime +1 -exec rm -rf {} \;
/home/autoSplitUploadAliImg/upload/* --设置查找的目录,不带*会删掉该目录;
-mtime +1 --设置修改时间为1天前;
-exec rm -rf --查找完毕后执行删除操作;
{} \; --固定写法
find 路径 -mtime +天数 -exec rm -rf {} ;
如果没面板的话可以保存为xxx.sh脚本,用crontab来执行。
自动删除上传文件夹
由于服务重启后,面板那上传文件记录会消失,因此需要自动删除上传文件夹。
在rc.local内,加入:
rm -rf /home/autoSplitUploadAliImg/upload/*
即可在重启服务器后,自动删除上传文件夹内的文件。
使用说明
上传
文件检查和分片
开始上传分片
处理可能失败的分片
完成
可下载或者在线播放
downTemp
,请自行修改文件名并添加后缀,例如xxx.m3u8
演示
武汉加油(切片上传时间:2020/2/13)
参考:
FFMPEG INSTALL ON CENTOS 7
dforel/autoSplitUploadAliImg
docker搭建视频切割上传阿里图床的可视化工具
Quickstart for Python/WSGI applications
uwsgi参数详解
uwsgi 配置参数
uwsgi默认buffersize太小可能导致问题
Systemd
linux定时删除N天前的文件(文件夹)
版权属于:寒夜方舟
本文链接:https://www.wnark.com/archives/58.html
本站所有原创文章采用署名-非商业性使用 4.0 国际 (CC BY-NC 4.0)。 您可以自由地转载和修改,但请注明引用文章来源和不可用于商业目的。声明:本博客完全禁止任何商业类网站转载,包括但不限于CSDN,51CTO,百度文库,360DOC,AcFun,哔哩哔哩等网站。
13 条评论
博主,请问现在还可以使用吗?
接口早挂了,要么自己找接口要么用GitHub吧
请问博主,现在还可以使用吗?
可以呀
这个切片能加上加密的参数吗?分享个加密的教程呗|´・ω・)ノ
懒.....
为什么最后上传的时候,上传四五十个文件以后就会停住不动呢?
网不好。或者是切片里有大于5M的。
这技术看的我一愣一愣的
博主,请教下,切片最低什么配置呢
我的是甲骨文的免费机,1h1g,你看着算吧
安装uwsgi
pip3 install uwsgi
修改uwsgi.ini配置文件
大佬 我按照你的教程安装到这里cd /home/autoSplitUploadAliImg 貌似没目录 系统是
Centos7.6
请按步骤来喔,在前面用了
git clone https://github.com/dforel/autoSplitUploadAliImg.git
下载了源码,源码文件夹就是autoSplitUploadAliImg