gpt4 book ai didi

php - Laravel FFMPEG 中的条件格式

转载 作者:行者123 更新时间:2023-12-04 23:07:17 25 4
gpt4 key购买 nike

我目前在 Laravel 项目中使用 Laravel FFMPEG 并运行以下运行良好 https://github.com/protonemedia/laravel-ffmpeg
这是一个有效的代码示例:

 $lowBitrate = (new X264)->setKiloBitrate(250);
$midBitrate = (new X264)->setKiloBitrate(500);
$highBitrate = (new X264)->setKiloBitrate(1000);
$superBitrate = (new X264)->setKiloBitrate(1500);

FFMpeg::open('steve_howe.mp4')
->exportForHLS()
->addFormat($lowBitrate, function($media) {
$media->addFilter('scale=640:480');
})

->addFormat($midBitrate, function($media) {
$media->scale(960, 720);
})
->addFormat($highBitrate, function ($media) {
$media->addFilter(function ($filters, $in, $out) {
$filters->custom($in, 'scale=1920:1200', $out); // $in, $parameters, $out
});
})
->addFormat($superBitrate, function($media) {
$media->addLegacyFilter(function ($filters) {
$filters->resize(new \FFMpeg\Coordinate\Dimension(2560, 1920));
});
})
->save('adaptive_steve.m3u8');
现在,我的挑战是,在客户端,我的用户需要选择他们希望在转码作业中包含哪些格式,并且一项作业可能包含 2 个或更多比特率变化,因此在调用之前需要有一个条件语句 -> addFromat()
理想情况下,我需要解决这个问题:
 $lowBitrate = (new X264)->setKiloBitrate(250);
$midBitrate = (new X264)->setKiloBitrate(500);
$highBitrate = (new X264)->setKiloBitrate(1000);
$superBitrate = (new X264)->setKiloBitrate(1500);

FFMpeg::open('steve_howe.mp4')
->exportForHLS()
->addFormat($lowBitrate, function($media) {
$media->addFilter('scale=640:480');
})
/// adding if statement here
->addFormat($midBitrate, function($media) {
$media->scale(960, 720);
})
->addFormat($highBitrate, function ($media) {
$media->addFilter(function ($filters, $in, $out) {
$filters->custom($in, 'scale=1920:1200', $out); // $in, $parameters, $out
});
})
->addFormat($superBitrate, function($media) {
$media->addLegacyFilter(function ($filters) {
$filters->resize(new \FFMpeg\Coordinate\Dimension(2560, 1920));
});
})
->save('adaptive_steve.m3u8');
不知道如何在此处添加 if/else 语句。你认为我应该如何处理这个问题?
谢谢

最佳答案

我们可以使用条件尾随如下:

$ffmpeg = FFMpeg
::open('steve_howe.mp4')
->exportForHLS()
->addFormat($lowBitrate, function($media) {
$media->addFilter('scale=640:480');
});

//condition here:
if (true) {
$ffmpeg = $ffmpeg->addFormat($midBitrate, function($media) {
$media->scale(960, 720);
});
}
// 2nd condition here:
if (true) {
$ffmpeg = $ffmpeg->addFormat($highBitrate, function ($media) {
$media->addFilter(function ($filters, $in, $out) {
$filters->custom($in, 'scale=1920:1200', $out); // $in, $parameters, $out
});
});
}

$ffmpeg->save('adaptive_steve.m3u8');

关于php - Laravel FFMPEG 中的条件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65492550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com