A PHP library for downloading YouTube videos and extracting metadata with ease.
To use this package, you'll need the following prerequisites:
- PHP 8.0 or higher
- youtube-dl or yt-dlp installed and accessible from the command line.
- FFmpeg installed and accessible from the command line.
Run the following command to add the package to your project:
composer require refaltor/youtube-downloader
Below is an example of how to use the package to download a YouTube video:
<?php
require 'vendor/autoload.php';
use Refaltor\YoutubeDownloader\Youtube;
try {
// Initialize the YouTube downloader
$downloader = new Youtube(
outputPath: '/absolute/path/to/store/videos/', // Directory to save the video
videoUrl: 'https://www.youtube.com/watch?v=example' // URL of the YouTube video
);
// Start the download
$downloadedFile = $downloader->download();
echo "Video downloaded successfully: " . $downloadedFile;
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
You can customize the paths for FFmpeg
and youtube-dl
(or yt-dlp
) during initialization:
<?php
require 'vendor/autoload.php';
use Refaltor\YoutubeDownloader\Youtube;
try {
$downloader = new Youtube(
outputPath: '/absolute/path/to/store/videos/',
ffmpegPath: '/custom/path/to/ffmpeg',
youtubeDlPath: '/custom/path/to/youtube-dl'
);
// Set the video URL dynamically
$downloader->setVideoUrl('https://www.youtube.com/watch?v=example');
$downloadedFile = $downloader->download();
echo "Video downloaded successfully: " . $downloadedFile;
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
The download
method will throw an exception in the following cases:
- The video URL is not provided.
- The output directory is invalid or cannot be created.
- The download process fails.
Make sure to catch exceptions and handle errors appropriately:
<?php
require 'vendor/autoload.php';
use Refaltor\YoutubeDownloader\Youtube;
try {
$downloader = new Youtube(
outputPath: '/absolute/path/to/store/videos/'
);
$downloader->setVideoUrl('https://www.youtube.com/watch?v=example');
$downloadedFile = $downloader->download();
echo "Video downloaded successfully: " . $downloadedFile;
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}