使用PHP中的youtube-dl和ffmpeg,是否有更有效的方法可以在特定的开始和结束时间下载YouTube视频。
我目前有这个,它确实有效,它首先将整个视频下载到一个mp3文件,然后将该文件裁剪到我使用ffmpeg设置的范围,但是当我只需要30秒左右的20分钟视频时等待完整的视频下载似乎不是最好的方法。
<?php
require __DIR__ . '/vendor/autoload.php';
use YoutubeDl\YoutubeDl;
$dl = new YoutubeDl([
'extract-audio' => true,
'audio-format' => 'mp3',
'audio-quality' => 0, // best
'output' => 'videoname.%(ext)s',
]);
$dl->setDownloadPath('C:\youtubevideos');
$video = $dl->download('https://www.youtube.com/watch?v=oDAw7vW7H0c');
$start = 60; // Start 60 seconds in to the video
$duration = 30; // Get 30 seconds after $start
$fullVideo = "C:\youtubevideos\videoname.mp3";
$shortVideo = "C:\youtubevideos\short\shortversion.mp3"; // create 30 seconds
exec("ffmpeg -ss $start -i $fullVideo -t $duration -c copy $shortVideo");
exec("DEL $fullVideo");
我正在使用youtube dl PHP https://github.com/norkunas/youtube-dl-php