fmonts / ffmpeg-bundle
Symfony bundle to provide PHP-FFmpeg as a Symfony service (https://github.com/PHP-FFMpeg/PHP-FFMpeg/)
Installs: 80 282
Dependents: 0
Suggesters: 0
Security: 0
Stars: 11
Watchers: 3
Forks: 29
Open Issues: 1
Type:symfony-bundle
Requires
- php: >=8.0
- php-ffmpeg/php-ffmpeg: ^1.0
- symfony/dependency-injection: ^5.4 || ^6.0 || ^7.0
- symfony/framework-bundle: ^5.4 || ^6.0 || ^7.0
Requires (Dev)
README
This bundle provides a simple wrapper for the PHP_FFmpeg library, exposing the library as a Symfony service.
This fork adds Symfony5, Symfony6 and Symfony7 support and drops legacy Symfony and PHP support
Set up the bundle
- Install FFmpeg and find out where the binaries are located. Example on Ubuntu/Debian:
$ sudo apt install ffmpeg $ whereis ffmpeg # outputs: ffmpeg: /usr/bin/ffmpeg $ whereis ffprobe # outputs: ffmpeg: /usr/bin/ffprobe
- Create the required configuration in a yaml file, such as
config/packages/dubture_f_fmpeg.yaml
:
dubture_f_fmpeg: ffmpeg_binary: /usr/bin/ffmpeg ffprobe_binary: /usr/bin/ffprobe binary_timeout: 300 # Use 0 for infinite threads_count: 4 temporary_directory: /var/ffmpeg-tmp
Note: The
temporary_directory
key is only used for writing two-pass logs.
- Require the bundle with composer:
$ composer require fmonts/ffmpeg-bundle
Usage
class VideoController extends AbstractController { public function resize(FFMpeg $FFMpeg): Response { // Open video $video = $FFMpeg->open('/your/source/folder/input.avi'); // Resize to 1280x720 $video ->filters() ->resize(new Dimension(1280, 720), ResizeFilter::RESIZEMODE_INSET) ->synchronize(); // Start transcoding and save video $video->save(new X264(), '/your/target/folder/video.mp4'); } }