我正在尝试
batch
脚本mp4
视频webm
我想保留原始标题,因此它需要使用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。使用循环下载视频
这用于将标题保存到变量%%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已经 已下载
答案 0 :(得分:0)
我能够创建一个有效的脚本。
问题之一是youtube-dl
如果位于C:\Program Files\
中不能正常工作,但是当它位于不需要管理员特权的地方时可以工作。
--get-filename
部分在@
路径之前需要一个youtube-dl
符号。
youtube-dl
从视频获取文件名并保存到var %%f
youtube-dl
将视频下载到C:\Path\To\Downloads\
mp4
,因此您可以为FFmpeg
输入指定扩展名FFmpeg
将视频转换为webm,并使用%%f
作为输入/输出文件名。for /f "delims=" %%f in ('
@"C:\Users\Matt\Desktop\youtube-dl.exe"
--get-filename -o "%%(title)s"
"https://www.youtube.com/watch?v=TWNhqCHw0qc"
')
do ("C:\Users\Matt\Desktop\youtube-dl.exe"
-f best "https://www.youtube.com/watch?v=TWNhqCHw0qc"
-o "C:\Users\Matt\Downloads\%%f.mp4"
--merge-output-format mp4
&&
ffmpeg -y
-i "C:\Users\Matt\Downloads\%%f.mp4"
-c:v libvpx
-b:v 1300K -crf 16
-pix_fmt yuv420p
-map 0:v:0?
-sn
-c:a libvorbis
-q:a 6
-map 0:a:0?
-f webm
"C:\Users\Matt\Downloads\%%f.webm"
)