我正在使用一个名为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']);.
- 1 回答
- 0 关注
- 126 浏览
添加回答
举报
0/150
提交
取消