使用youtube-dl下载视频和使用FFmpeg转换的批处理脚本

问题描述 投票:0回答:1

我试着

  1. 使用单个batch脚本来
  2. 使用mp4下载youtube-dl视频
  3. 将视频的原始标题保存到批处理变量中
  4. 使用webm将视频转换为FFmpeg

我想保留原始标题,因此需要使用youtube-dl读取标题,将其保存到变量,并将该变量用于FFmpeg输入/输出文件名。


CMD Batch

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")

Error

在脚本可以访问FFmpeg之前,youtube-dl无法下载该文件。它表示文件已经下载,即使目录中没有文件也是如此。

[下载] @ C#\ Users \ Matt \ Downloads \ Color Balloons.mp4已经下载

batch-file cmd ffmpeg youtube-dl
1个回答
0
投票

我能够创建一个有效的脚本。

其中一个问题是,如果位于youtube-dlC:\Program Files\无法正常工作,但在位于不需要管理员权限的地方时可以正常工作。

--get-filename部分需要在@路径之前的youtube-dl符号。


  1. qazxsw poi从视频中获取文件名并保存到var qazxsw poi
  2. youtube-dl将视频下载到%%f
  3. 合并输出为youtube-dl,因此您可以指定C:\Path\To\Downloads\输入的扩展名
  4. mp4将视频转换为webm并使用FFmpeg作为输入/输出文件名。

FFmpeg
© www.soinside.com 2019 - 2024. All rights reserved.