使用 powershell 脚本下载 YouTube 视频的一部分

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

我正在编写这个 Powershell 脚本:

$URL = "https://www.youtube.com/watch?v=KbuwueqEJL0"
$from = 00:06:15
$to = 00:09:17

$cmdOutput = (youtube-dl --get-url $URL) 

ffmpeg -ss $from -to $to -i <video_url> -ss $from -to $to -i <audio_url> output.mkv

此脚本的目的是下载 YouTube 视频的一部分。我设置了变量 $URL 来指定 Youtube URL,而

$from
$to
是我要下载的部分的开始和结束时间。

$cmdOutput
用于输出流 URL。输出将有两行:第一行是视频流的 URL,第二行是音频流的 URL。

目前,我不知道如何将输出用作变量并指定 $cmdOutput 的行号以将其放入正确的流中。我猜

<video_url>
<audio_url>
会被
$cmdOutput[line 1]
$cmdOutput[line 2]
之类的东西取代,尽管我知道这些是不正确的。

我查阅了这个答案,写这个脚本对我来说很方便。我还阅读了Boris Lipschitz的答案,了解如何使用Python做同样的事情,但他的答案不起作用。

在该脚本中,

-ss <start_time>
标志输入搜索点,
-t <duration>
标志告诉FFmpeg在指定的持续时间后停止编码。例如,如果开始时间为 00:02:00,持续时间为 00:03:00,FFmpeg 将从 00:02:00 到 00:05:00 下载,这不是预期的结果。由于某种原因,即使我将
-t
标志替换为
-to <end_time>
,他的 Python 脚本也会跳过前 5 秒的输出。我尝试编辑他的脚本,但除非您明确指定视频和音频流的时间以及它们各自的流 URL,否则它不起作用。

powershell ffmpeg youtube-dl
1个回答
0
投票
# updated for current versions 
# yt-dlp version 2024.10.22 and 
# ffmpeg #version 7.1

# Prereqs use PS or CMD to Install.
# winget yt-dlp
# winget ffmpeg


# Define URL and time ranges.
$URL = "https://www.youtube.com/watch?v=05j8Ai9riEM&list=PPSV" 
$from = "00:00:00"
$duration = "00:02:14"

# Download and merge video and audio into 'full_video.mkv'.
yt-dlp -f bestvideo+bestaudio --merge-output-format mkv -o 
"full_video.mkv" $URL

# Use FFmpeg to extract the specific portion of the video. 
ffmpeg -i "full_video.mkv" -ss $from -t $duration -c copy output.mkv
© www.soinside.com 2019 - 2024. All rights reserved.