protonemedia / laravel-ffmpeg

This package provides an integration with FFmpeg for Laravel. Laravel's Filesystem handles the storage of the files.
https://protone.media/en/blog/how-to-use-ffmpeg-in-your-laravel-projects
MIT License
1.64k stars 194 forks source link

Possible in FFMPEG Wrapper? #428

Open HeadStudios opened 2 years ago

HeadStudios commented 2 years ago

Trying to convert this to wrapper (tested in console)

ffmpeg \ -i https://rent-roll-devour-bucket-a1.s3.ap-southeast-2.amazonaws.com/videos/audits/conversion_rate_audit.mp4 \ -i https://rent-roll-devour-bucket-a1.s3.ap-southeast-2.amazonaws.com/videos/audits/john_ahern.mp4 \ -i https://rent-roll-devour-bucket-a1.s3.ap-southeast-2.amazonaws.com/videos/audits/outro_generic.mp4 \ -i https://rrdevours.monster/plain-assets/logos/small_tiger_vial.png \ -filter_complex " [0:v]scale=1152:720:force_original_aspect_ratio=decrease,pad=1152:720:(ow-iw)/2:(oh-ih)/2:violet,fps=30[a]; [1:v]scale=1152:720:force_original_aspect_ratio=decrease,pad=1152:720:(ow-iw)/2:(oh-ih)/2:violet,fps=30[b]; [2:v]scale=1152:720:force_original_aspect_ratio=decrease,pad=1152:720:(ow-iw)/2:(oh-ih)/2:violet,fps=30[c]; [a][0:a][b][1:a][c][2:a]concat=n=3:v=1:a=1[concat1]; [concat1]drawtext=text='Stack Overflow':fontcolor=white:fontsize=24:box=1:boxcolor=black@0.5:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2:enable='between(t,180,200)'[concat2]; [concat2][3]overlay=(W-w)-50:(H-h)-50:enable='between(t,0,20)' " outputer.mp4 -y -vsync 2

Is this possible with Laravel FFMPEG wrapper? It would be cool to have a filter_complex ffmpeg function but I haven't seen anything like that where i can just... copy/paste?

Thank you!

HeadStudios commented 2 years ago

Tried this but it started complaining:

`Route::get('vider', function() {

//$ffmpeg = FFMpeg\FFMpeg::create();
//$media = $ffmpeg->openAdvanced(array('https://rent-roll-devour-bucket-a1.s3.ap-southeast-2.amazonaws.com/videos/audits/conversion_rate_audit.mp4', 'https://rent-roll-devour-bucket-a1.s3.ap-southeast-2.amazonaws.com/videos/audits/john_ahern.mp4', 'https://rent-roll-devour-bucket-a1.s3.ap-southeast-2.amazonaws.com/videos/audits/outro_generic.mp4', 'https://rrdevours.monster/plain-assets/logos/small_tiger_vial.png'));
FFMpeg::openUrl('https://rent-roll-devour-bucket-a1.s3.ap-southeast-2.amazonaws.com/videos/audits/conversion_rate_audit.mp4')->openUrl('https://rent-roll-devour-bucket-a1.s3.ap-southeast-2.amazonaws.com/videos/audits/john_ahern.mp4')->openUrl('https://rent-roll-devour-bucket-a1.s3.ap-southeast-2.amazonaws.com/videos/audits/outro_generic.mp4')->openUrl('https://rrdevours.monster/plain-assets/logos/small_tiger_vial.png')
->filters()
->custom('[0:v]', 'scale=1152:720:force_original_aspect_ratio=decrease,pad=1152:720:(ow-iw)/2:(oh-ih)/2:violet,fps=30', '[a]')
->custom('[1:v]', 'scale=1152:720:force_original_aspect_ratio=decrease,pad=1152:720:(ow-iw)/2:(oh-ih)/2:violet,fps=30', '[b]')
->custom('[2:v]', 'scale=1152:720:force_original_aspect_ratio=decrease,pad=1152:720:(ow-iw)/2:(oh-ih)/2:violet,fps=30', '[c]')
->custom('[a][0:a][b][1:a][c][2:a]', 'concat=n=3:v=1:a=1', '[concat1]')
->custom('[concat1]', 'drawtext=text=\'Stack Overflower\':fontcolor=white:fontsize=24:box=1:boxcolor=black@0.5:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2:enable=\'between(t,180,200)\'', '[concat2]')
->custom('[concat2][3]', 'overlay=(W-w)-50:(H-h)-50:enable=\'between(t,0,20)\'', '[concat4]')
->export()
->toDisk('s3')
->inFormat(new \FFMpeg\Format\Video\X264)
->save('videos/scripts/final/sweet_aroma.mp4');
return 'done no complaints';`

Weirdly enough saying export doesn't work - https://share.getcloudapp.com/GGuKmypq