gpt4 book ai didi

php - 如何获得视频的最高可能比特率和尺寸?

转载 作者:行者123 更新时间:2023-12-04 22:45:29 26 4
gpt4 key购买 nike

我正在使用一个名为 pascalbaljetmedia/laravel-ffmpeg

的包

并希望为视频流创建一个 HLS 播放列表。但首先我想检查视频比特率或宽度/高度,看看它是 4k、1080、720 等。

那么我如何计算视频比特率及其尺寸?..

获取视频信息后我想做的是:


$video = FFMpeg::fromDisk('videos')
->open('original_video.mp4')
->exportForHLS();

$resolutions = [];

//check if we can make 4k version
if ( ( $bitrate >= 14000 ) || ( $width >= 3840 && $height >= 2160 ) )
{
// Then it's a 4k video
// We make a 4k version of HLS

$resolutions[] = ['q' => 14000, 'size' => [ 'w' => 3840, 'h' => 2160]];

}


//check if we can make HD version
if( ( $bitrate >= 5800 ) || ( $width >= 1920 && $height >= 1080 ) )

{
// Then it's a HD video
// We make a HD version of HLS
$resolutions[] = ['q' => 5800, 'size' => [ 'w' => 1920, 'h' => 1080]];

}


//Lastly we loop through and add formarts
foreach($resolutions as $resolution){
$video->addFormat($resolution['q'], function($media) {
$media->addFilter('scale='. $resolution['size']['w].':'. $resolution['size']['h]);
});
}

$video->save('video_name.m3u8');

有什么帮助吗?

最佳答案

我不使用 Laravel,但看起来 pascalbaljetmedia/laravel-ffmpegphp-ffmpeg/php-ffmpeg 的包装器,因此您应该能够使用 FFProbe提取此信息。

$ffprobe = FFMpeg\FFProbe::create();
$video = $ffprobe->streams('original_video.mp4')->videos()->first();
$width = $video->get('width');
$height = $video->get('height');
$bitrate = $video->get('bit_rate');

顺便说一句,您的代码行中有几个拼写错误,应该是 $media->addFilter('scale=' . $resolution['size']['w'] . ':' . $resolution['size']['h']);.

关于php - 如何获得视频的最高可能比特率和尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62633923/

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