youtube-dl -o "/home/smith/Original-Video.%(ext)s" https://whatever && ffmpeg -i /home/smith/Original-Video.YYY -filter:v fps=10 -b:v 368k -b:a 32k -c:a libopus -strict -2 /home/smith/Recoded-Video.mp4
如何在单个 BASH CLI 语句中将 youtube-dl 使用 %(ext)s 捕获的扩展传递给后续 (&&) ffmpeg 命令?
以便:
Original-Video.YYY = Original-Video.%(ext)s
或者
Original-Video.YYY = Original-Video.mp4
Original-Video.YYY = Original-Video.mkv
Original-Video.YYY = Original-Video.mov
答案1
不行。你必须找到最新的视频文件并解析它。
未经测试,但类似于:
base=/home/smith/Original-Video
if youtube-dl -o "$base.%(ext)s" https://whatever; then
newest=$(stat -c $'%Y\t%n' "$base".* | sort -nr | head -1 | cut -f 2-)
ext=${newest%%*.}
new="/home/smith/Recoded-Video.$ext"
ffmpeg -i "$newest" -filter:v fps=10 -b:v 368k -b:a 32k -c:a libopus -strict -2 "$new"
fi
答案2
如果你不想摆弄 bash:我写了一个下载器它使用 ffmpeg 和 yt-dl 来实现视频和音频的最佳组合。流可以简单地拖到其 GUI 中
添加我的 ppa 您可以安装和更新它:
sudo add-apt-repository ppa:jentiger-moratai/mediatools
sudo apt update
sudo apt install ytdownloader