我试着
batch
脚本来mp4
下载youtube-dl视频webm
将视频转换为FFmpeg我想保留原始标题,因此需要使用youtube-dl
读取标题,将其保存到变量,并将该变量用于FFmpeg
输入/输出文件名。
1.下载视频
youtube-dl -f best "https://www.youtube.com/watch?v=TWNhqCHw0qc" -o "C:\Users\Matt\Downloads\%%(title)s.mp4" --merge-output-format mp4
2.使用Loop下载视频
这用于将标题保存到变量%%a
。
for /f "delims=" %%a in ('youtube-dl -f best "https://www.youtube.com/watch?v=TWNhqCHw0qc" -o @"C:\Users\Matt\Downloads\%%(title)s.mp4" --merge-output-format mp4') do (echo example)
3.最后的剧本 下载视频,保存标题,转换为FFmpeg
排序
for /f "delims=" %%a in ('
youtube-dl
-f best "https://www.youtube.com/watch?v=TWNhqCHw0qc"
-o @"C:\Users\Matt\Downloads\%%(title)s.mp4"
--merge-output-format mp4
')
do (ffmpeg -y
-i "C:\Users\Matt\Downloads\%%a.mp4"
-c:v libvpx -b:v 1300K -crf 16 -pix_fmt yuv420p
-map 0:v:0? -sn
-c:a libvorbis -q:a 6 -ac 2 -map 0:a:0?
-f webm
"C:\Users\Matt\Downloads\%%a.webm"
)
排队
for /f "delims=" %%a in ('youtube-dl -f best "https://www.youtube.com/watch?v=TWNhqCHw0qc" -o @"C:\Users\Matt\Downloads\%%(title)s.mp4" --merge-output-format mp4') do (ffmpeg -y -i "C:\Users\Matt\Downloads\%%a.mp4" -c:v libvpx -b:v 1300K -crf 16 -pix_fmt yuv420p -map 0:v:0? -sn -c:a libvorbis -q:a 6 -ac 2 -map 0:a:0? -f webm "C:\Users\Matt\Downloads\%%a.webm")
在脚本可以访问FFmpeg
之前,youtube-dl
无法下载该文件。它表示文件已经下载,即使目录中没有文件也是如此。
[下载] @ C#\ Users \ Matt \ Downloads \ Color Balloons.mp4已经下载
我能够创建一个有效的脚本。
其中一个问题是,如果位于youtube-dl
,C:\Program Files\
无法正常工作,但在位于不需要管理员权限的地方时可以正常工作。
--get-filename
部分需要在@
路径之前的youtube-dl
符号。
youtube-dl
将视频下载到%%f
youtube-dl
,因此您可以指定C:\Path\To\Downloads\
输入的扩展名mp4
将视频转换为webm并使用FFmpeg
作为输入/输出文件名。FFmpeg