首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为特定参数编写Laravel FFMpeg视频转换代码?

如何为特定参数编写Laravel FFMpeg视频转换代码?
EN

Stack Overflow用户
提问于 2022-10-06 21:27:35
回答 1查看 127关注 0票数 0

我使用Laravel9.x运行php 8.1.x。我有一些代码,用于将具有除视频/MP4以外的上下文类型的视频转换为H264格式。其原因是要制作一种与苹果(iOS)、安卓和大多数网络浏览器兼容的视频格式。到目前为止,这段代码在我们使用过的每一个视频上都有效,除了一个视频。我目前的代码是

代码语言:javascript
复制
        $ffmpeg = FFMpeg::create();
        $video = $ffmpeg->open($videoFilename);
        $format = new X264();
        $format->setAudioCodec("aac"); 
        $video->save($format, $newFilename);

因此,为了调试需要做的其他工作,我开始在我的计算机上手动运行ffmpeg命令,并对该视频的副本进行处理。我终于找到了成功转换视频所需的额外参数,这样它就可以在所有设备上播放。手动命令如下:

代码语言:javascript
复制
ffmpeg -i input.mov -pix_fmt yuv420p -b:v 4000k -c:v libx264 output.mp4

我大约90%确信,处理这个视频的具体内容的参数如下:

-pix_fmt yuv420p -b:v 4000 K

我现在的问题是,我不知道我需要对我的php代码进行哪些更改,这相当于那些附加的命令行参数。我还在想,当我输入这个问题时,是否有一种方法可以让我在视频需要这个附加参数时“自动检测”呢?(也许这是第二个帖子/问题)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-07 06:41:32

假设您正在使用此包php-ffmpeg/php-ffmpeg

你试过setAdditionalParameters方法了吗?

它会给出这样的东西:

代码语言:javascript
复制
$format->setAdditionalParameters(explode(' ', '-pix_fmt yuv420p -b:v 4000k'));

综合解决办法:

代码语言:javascript
复制
$ffmpeg = FFMpeg::create();
$video = $ffmpeg->open($videoFilename);
$format = new X264();
$format->setAudioCodec("aac");
$format->setAdditionalParameters(explode(' ', '-pix_fmt yuv420p -b:v 4000k'));
$video->save($format, $newFilename);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73980183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档