Hey guys this is another question about FFMPEG :)
I am getting the error encoding failed for a file which I generated with laravel facade UploadedFile
/** @test */
public function can_upload_video()
{
$sizeInKilobytes = 100000;
$file = UploadedFile::fake()->create(
'video.mp4', $sizeInKilobytes, 'video/mp4'
);
Storage::fake('videos_disk');
$this->actingAs(User::factory()->create());
Livewire::test(Create::class)
->set('title', 'Testvideo333')
->set('video', $file)
->call('upload');
dd(Storage::disk('videos_disk')->allFiles());
}
If I upload real files it works and the files get transcoded to .m3u8 playlists
<?php
namespace App\Jobs;
use FFMpeg\Coordinate\Dimension;
use App\Models\Video;
use Carbon\Carbon;
use FFMpeg\Format\Video\X264;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use ProtoneMedia\LaravelFFMpeg\Support\FFMpeg;
use Illuminate\Support\Facades\Storage;
class ConvertVideoForStreaming implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $video;
/**
* Create a new job instance.
*
* @param Video $video
*/
public function __construct(Video $video)
{
$this->video = $video;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$m3u8 = $this->video->id.'.m3u8';
// create some video formats...
// $lowBitrateFormat = (new X264('aac', 'libx264'))->setKiloBitrate(500);
$midBitrateFormat = (new X264('aac'))->setKiloBitrate(1000);
// $highBitrateFormat = (new X264('aac'))->setKiloBitrate(3000);
// open the uploaded video from the right disk...
FFMpeg::fromDisk($this->video->disk)
->open($this->video->path)
// call the 'exportForHLS' method and specify the disk to which we want to export...
->exportForHLS()
->toDisk('streamable_videos')
// we'll add different formats so the stream will play smoothly
// with all kinds of internet connections...
// ->addFormat($lowBitrateFormat)
->addFormat($midBitrateFormat)
// ->addFormat($highBitrateFormat)
// call the 'save' method with a filename...
->save($m3u8);
$streaming_path = secure_url('videos/'.$m3u8);
// update the database so we know the convertion is done!
$this->video->update([
'converted_for_streaming_at' => Carbon::now(),
'streaming_path' => $streaming_path,
]);
}
}
but when I run the test I get the following error:
ProtoneMedia\LaravelFFMpeg\Exporters\EncodingException : Encoding failed
/Users/reniar/code/OfflineJetstream/vendor/pbmedia/laravel-ffmpeg/src/Exporters/EncodingException.php:12
/Users/reniar/code/OfflineJetstream/vendor/pbmedia/laravel-ffmpeg/src/Exporters/MediaExporter.php:171
/Users/reniar/code/OfflineJetstream/vendor/pbmedia/laravel-ffmpeg/src/Exporters/MediaExporter.php:129
/Users/reniar/code/OfflineJetstream/vendor/pbmedia/laravel-ffmpeg/src/Exporters/HLSExporter.php:174
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php:692
/Users/reniar/code/OfflineJetstream/vendor/pbmedia/laravel-ffmpeg/src/Exporters/HLSExporter.php:184
/Users/reniar/code/OfflineJetstream/app/Jobs/ConvertVideoForStreaming.php:63
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/Util.php:40
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:37
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/Container.php:610
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:128
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:128
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:132
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php:96
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:128
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php:98
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php:67
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php:98
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php:43
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:251
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:227
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:77
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Foundation/Bus/DispatchesJobs.php:17
/Users/reniar/code/OfflineJetstream/app/Http/Livewire/Create.php:40
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/Util.php:40
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:37
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/ComponentConcerns/HandlesActions.php:138
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/HydrationMiddleware/PerformActionCalls.php:19
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/LifecycleManager.php:70
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Connection/ConnectionHandler.php:12
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Controllers/HttpConnectionHandler.php:13
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:48
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Route.php:254
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Route.php:197
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Router.php:692
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:128
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Router.php:694
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Router.php:669
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Router.php:635
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Router.php:624
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:166
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:128
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:141
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:110
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php:508
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/TestableLivewire.php:184
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/MakesHttpRequestsWrapper.php:29
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/TestableLivewire.php:185
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/TestableLivewire.php:173
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/Concerns/MakesCallsToComponent.php:134
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/Concerns/MakesCallsToComponent.php:36
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/Concerns/MakesCallsToComponent.php:30
/Users/reniar/code/OfflineJetstream/tests/Feature/CreateTest.php:45
Caused by
Alchemy\BinaryDriver\Exception\ExecutionFailureException: ffmpeg failed to execute command '/usr/local/bin/ffmpeg' '-y' '-threads' '12' '-i' '/Users/reniar/code/OfflineJetstream/storage/framework/testing/disks/videos_disk/7KncBJNXbXPRQNlpZS5dbSUrTYJBJhGIAnJy4stt.mp4' '-map' '0' '-vcodec' 'libx264' '-b:v' '1000k' '-g' '48' '-hls_playlist_type' 'vod' '-hls_time' '10' '-hls_segment_filename' '/Users/reniar/code/OfflineJetstream/storage/app/streamable_videos/1_0_1000_%05d.ts' '-acodec' 'aac' '-b:a' '128k' '/Users/reniar/code/OfflineJetstream/storage/app/streamable_videos/1_0_1000.m3u8':
Error Output:
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
built with Apple clang version 12.0.0 (clang-1200.0.32.27)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.3.1_4 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd3ce809000] Format mov,mp4,m4a,3gp,3g2,mj2 detected only with low score of 1, misdetection possible!
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd3ce809000] moov atom not found
/Users/reniar/code/OfflineJetstream/storage/framework/testing/disks/videos_disk/7KncBJNXbXPRQNlpZS5dbSUrTYJBJhGIAnJy4stt.mp4: Invalid data found when processing input
/Users/reniar/code/OfflineJetstream/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessRunner.php:95
/Users/reniar/code/OfflineJetstream/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessRunner.php:73
/Users/reniar/code/OfflineJetstream/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/AbstractBinary.php:207
/Users/reniar/code/OfflineJetstream/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/AbstractBinary.php:136
/Users/reniar/code/OfflineJetstream/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/AdvancedMedia.php:237
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:23
/Users/reniar/code/OfflineJetstream/vendor/pbmedia/laravel-ffmpeg/src/Drivers/PHPFFMpeg.php:175
/Users/reniar/code/OfflineJetstream/vendor/pbmedia/laravel-ffmpeg/src/Exporters/MediaExporter.php:169
/Users/reniar/code/OfflineJetstream/vendor/pbmedia/laravel-ffmpeg/src/Exporters/MediaExporter.php:129
/Users/reniar/code/OfflineJetstream/vendor/pbmedia/laravel-ffmpeg/src/Exporters/HLSExporter.php:174
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php:692
/Users/reniar/code/OfflineJetstream/vendor/pbmedia/laravel-ffmpeg/src/Exporters/HLSExporter.php:184
/Users/reniar/code/OfflineJetstream/app/Jobs/ConvertVideoForStreaming.php:63
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/Util.php:40
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:37
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/Container.php:610
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:128
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:128
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:132
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php:96
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:128
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php:98
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php:67
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php:98
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php:43
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:251
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:227
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:77
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Foundation/Bus/DispatchesJobs.php:17
/Users/reniar/code/OfflineJetstream/app/Http/Livewire/Create.php:40
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/Util.php:40
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:37
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/ComponentConcerns/HandlesActions.php:138
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/HydrationMiddleware/PerformActionCalls.php:19
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/LifecycleManager.php:70
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Connection/ConnectionHandler.php:12
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Controllers/HttpConnectionHandler.php:13
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:48
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Route.php:254
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Route.php:197
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Router.php:692
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:128
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Router.php:694
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Router.php:669
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Router.php:635
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Routing/Router.php:624
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:166
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:128
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:141
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:110
/Users/reniar/code/OfflineJetstream/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php:508
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/TestableLivewire.php:184
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/MakesHttpRequestsWrapper.php:29
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/TestableLivewire.php:185
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/TestableLivewire.php:173
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/Concerns/MakesCallsToComponent.php:134
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/Concerns/MakesCallsToComponent.php:36
/Users/reniar/code/OfflineJetstream/vendor/livewire/livewire/src/Testing/Concerns/MakesCallsToComponent.php:30
/Users/reniar/code/OfflineJetstream/tests/Feature/CreateTest.php:45