为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
幕布斯7119047 2023-07-08 15:45:29
我正在使用一个名为pascalbaljetmedia/laravel-ffmpeg并想要创建一个用于视频流的 HLS 播放列表。但首先我想检查视频比特率或宽度/高度,看看它是否是 4k、1080、720 等。那么我如何计算视频比特率及其尺寸?...这是获取视频信息后我想做的事情:$video = FFMpeg::fromDisk('videos')                ->open('original_video.mp4')                ->exportForHLS();$resolutions = [];//check if we can make 4k versionif ( ( $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 versionif(  ( $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 formartsforeach($resolutions as $resolution){    $video->addFormat($resolution['q'], function($media) {        $media->addFilter('scale='. $resolution['size']['w].':'. $resolution['size']['h]);    });}$video->save('video_name.m3u8');有什么帮助吗?
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

我不使用 Laravel,但它看起来像是pascalbaljetmedia/laravel-ffmpeg的包装器php-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']);.


查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信