多电脑+本地NAS网盘轻松自动化压制教程
❀原创教程,转载本页必须注明链接和作者
❀目前本文档处于发布早期,会频繁更新/修bug,出问题求不锤
咳咳, 标题有点吓人, 说明白点就是在拥有一堆各种系统的电脑+NAS的情况下,根据不同电脑的性能分工完成多集视频的压制,而且只要同一套命令文件就可以实现;除非分为Linux和Windows两种系统才需要改做两份,所以应该比之前的大批量压制教程简单很多(⊃‿⊂) ⊂(⋂ヮ⋂)⊃
如果要压缩12集的源,那么两台电脑的性能差理论上可以大到1/12,升级淘汰下来的旧电脑就可以有效利用起来了
提醒:本教程不包含网盘的创建,且仅在Windows10的环境下测试了本地与VPN的可行性
提醒:关于ffmpeg pipe给x265压制的说明省略,请见x265视频压制教程里的第一页
需求:最少两台电脑和一台本地NAS网盘,或者有高速VPN来访问网络另一端的NAS网盘
警告:要备份文件,导出和导入不要放在同一个文件夹里以免数据覆盖
下面正式开始教程(っ╹◡╹)ノ
实现方法(⊙_◎):
这套方案相比于手动指定在哪里导入和储存,要求电脑直接创建临时位置,这样就能减少对命令行的改动,从而让多电脑协同变得容易。主要使用了Unix和Windows中都有的pushd
,popd
命令,以及功能接近的net use
和mount
\\\٩( 'ω' )و ////
pushd
和popd
被用以创建临时导入的盘符以及路径。相当于cd /d
(change drive /drive
)命令,但好处是更加工整,主动创建临时盘符,不用给每台电脑添加网盘地址;还解决了CMD不支持UNC路径的问题。- 格式为"pushd <路径>"和popd。
- net use被用来创建临时导出的虚拟盘,毕竟压完视频后要集中到一处导出。
- 格式为
net use \\服务器名\文件夹
,注意Net不支持盘符路径,且UNC路径的末尾不允许写"\" - 还有个net view用来测验网络位置能不能打开
- 格式为
Unix社区很早之前发明的路径书写格式,写作//服务器名/文件夹/文件.xxx
,在DOS和Windows上写作\\服务器名\文件夹\文件.xxx
。用它来添加网络打印机超级方便,搭配VPN还能远程在公司内网打印恐吓信吓人的东西
- "服务器名"也可以写IP地址,比如
\\192.168.2.155\文件夹\
- Windows系统用"/"代表命令,比如
xcopy /S /Q /Y /F \\ix-server\1.txt %USERPROFILE%\Desktop\1.txt
就很工整ᕦ(ò_óˇ)ᕤ
DOS和Windows
::Windows CMD下UTF-8特供空行
Net view <服务器名>
pause ::暂停一下看看地址能不能打开,防止有的地址设了访问权限(๑•ૅㅁ•๑)
Net use Q: "\\服务器名\输出文件夹\"
::Net use支持输入用户名和密码,要升级为管理员就直接将"<密码> /USER:<用户名>"加后面
::我没见过Q盘符,而且pushd会从Z开始往A创建盘符,所以选了Q
pushd "\\服务器名\输入文件夹\"
C:\ffmpeg.exe -i [视频1] -an -f yuv4mpegpipe -strict unofficial - | C:\x265-8bit.exe --input-csp i420 --allow-non-conformance [压制参数] --y4m - --output Q:\[新视频1]
::前面pushd直接将当前命令运行位置定在了待压制文件夹,所以ffmpeg直接写视频文件名即可
C:\ffmpeg.exe -i [视频2] -an -f yuv4mpegpipe -strict unofficial - | C:\x265-8bit.exe --input-csp i420 --allow-non-conformance [压制参数] --y4m - --output Q:\[新视频2]
C:\ffmpeg.exe -i [视频n] -an -f yuv4mpegpipe -strict unofficial - | C:\x265-8bit.exe --input-csp i420 --allow-non-conformance [压制参数] --y4m - --output Q:\[新视频n]
# 照此把所有视频集数用的命令写出来就行了
# 还可以整一台电脑正序压制,一台电脑倒序压制的骚操作哦 ~>゜)~~~~
Net use q: /delete
popd&pause
::丢弃掉pushd临时建立的盘符以清空内存占用,当然重启电脑也能实现
::使用一个&以同时启用暂停,因为不需要确认上个命令是否成功运行
#!/bin/bash
echo 'su密码' | sudo -S mkdir /mnt/挂载文件夹/ && echo 'su密码' | sudo -S mount -t cifs -w //服务器名/输出文件夹 /mnt/挂载文件夹/
read -p "暂停一下看看地址能不能跑,按Enter继续哦"
::Unix 没net use,但是据说装个cifs mount就行了
::超级用户没密码的话不用写"echo 'su密码' | "
pushd "//服务器名/输入文件夹/"
ffmpeg -i [视频ssr] -an -f yuv4mpegpipe -strict unofficial - | x265-8bit --input-csp i420 --allow-non-conformance [压制参数] --y4m - --output /mnt/挂载文件夹/[新视频ssr]
echo 'su密码' | sudo -S umount /mnt
popd&read -p "按Enter继续哦"
exit
Unix mount 来源: Khaled AbuShqear
没有mount的话先用$ sudo apt-get install cifs-utils
装上CIFS工具 ○(・x・)
以上例子中,文件导入ffmpeg里的速度取决于网速,所以会比本地文件导入ffmpeg慢。当然,导出也可以再写个pushd加一栈路径存入网盘里别的位置。只要在用完的时候命令popd丢弃即可
以上例子中,直接写UNC路径到压制命令行里面不是不行,而是因为总是根据视频改写导入路径,导出路径,压制参数,文件名什么的,每次都要重写一遍实在太麻烦,比如C:\ffmpeg.exe -i Goodnight.mp4 -an -f yuv4mpegpipe -strict unofficial - | C:\x265-8bit.exe --input-csp i420 --allow-non-conformance --rect --amp --ctu 64 --min-cu-size 8 --limit-tu 1 --tu-intra-depth 4 --tu-inter-depth 4 --max-tu-size 16 --me star --subme 6 --merange 48 --analyze-src-pics --max-merge 4 --early-skip --b-intra --no-open-gop --radl 3 --min-keyint 5 --ref 3 --keyint 240 --fades --bframes 14 --b-adapt 2 --scenecut 42 --scenecut-aware-qp 3 --masking-strength 500,5,1,500,5,1 --crf 16.5 --qcomp 0.6 --rdoq-level 2 --psy-rdoq 4 --aq-mode 4 --qg-size 16 --rd 5 --limit-modes --limit-refs 1 --rskip 1 --rc-lookahead 70 --rd-refine --splitrd-skip --deblock 0:-1 --no-sao --tskip --cu-lossless --opt-qp-pps --opt-ref-list-length-pps --y4m - --output C:\test.hevc
就很麻烦,再加上各种路径就更长了
其它
关于各种log和输出啥的都和本地压制一样不变,2pass的话临时文件写个本地地址,或者用net use/mount再弄一个盘符/挂载出来就可以了
echo. ::输出空白行让命令输出窗口更工整
@ [命令行] ::避免批处理中的命令行重复一遍输入的命令
color E1 ::CMD中使用好看的蓝字黄底窗口
color B0 ::CMD中使用美观的黑字浅蓝底窗口
color F6 ::CMD中使用优雅的黄字灰白底窗口(ノ´д`)
救命为什么我闲的没事要写这么个东西那么就这样
打赏信息
在线丢人,求个打赏,支持一下T_T