Как правильно установить битрейты Laravel ffmpeg? Какие числа там должны быть?
При загрузке файла на сервер на Laravel, оставляю в Jobs-ах задачу. Видео должно через ffmpeg разделиться на сегменты для потокового воспроизведения.
Использую пакет: https://github.com/protonemedia/laravel-ffmpeg
Передо мной стоят две задачи:
Есть в Ютубе к примеру качества (360p, 720p, 1080p) - как установить данные битрейты? Как их вообще считать?
Допустим видео не самого лучшего качества и у него максимальное качество 360p - не будем ведь для него мы создавать 1080, 720? Как определить максимальный и дальше уже уменьшать его?
Вот сам Job
<?php
namespace App\Jobs;
use App\Models\Helpers\Video;
use FFMpeg\FFMpeg as FFMpegFFMpeg;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use FFMpeg\Format\Video\X264;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use ProtoneMedia\LaravelFFMpeg\Support\FFMpeg;
class OnVideoUpload implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* @var mixed
*/
protected $storage;
/**
* @var mixed
*/
protected $filePath;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(FilesystemAdapter $storage, String $filePath)
{
$this->storage = $storage;
$this->filePath = $filePath;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$time = time();
FFMpeg::fromDisk('local')
->open($this->filePath)
->exportForHLS()
->addFormat((new X264('aac'))->setKiloBitrate(500))
->addFormat((new X264('aac'))->setKiloBitrate(100))
->toDisk('local')
->save('Streams/' . $time . '_' . 1 . '/' . $time . '.m3u8');
}
}