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

使用 PHP 库合并 FFMPEG 音频

使用 PHP 库合并 FFMPEG 音频

PHP
慕沐林林 2023-05-12 14:32:27
我一直在使用 FFMPEG,仍然是一个初学者,但我学到了很多东西。所以我必须合并 2 个音频,一个属于视频,一个只是 .mp3 文件。我得到了正确的 shell exec,但现在我想使用 FFMPEG php 库。这是正确的(我认为)和有效的 shell 命令:/usr/bin/ffmpeg -y -i video-short.mp4 -i audio-short.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2 [a]" -map 0:v -map "[a]" -c:v copy -c:a aac -ac 2 -b:a 128k video3-audio-output.mp4这将输出带有 2 个音频的视频。在我编写了 php 代码并编辑了一些输出的代码以便脚本工作之后,我得到了这个。这是 php 代码,我似乎无法弄清楚如何返回正确的 shell。        $video = $this->ffmpeg->openAdvanced([        'video-short.mp4',        'audio-short.mp3'    ]);    $video        ->filters()        ->custom('[0:a][1:a]', 'amerge=inputs=', '2[a]' );    $video        ->map(array('0:v', '"[a]"'), new X264('aac'),        'video3-audio-output.mp4'    )        ->save();现在我需要获取代码以返回类似 shell 的东西,它确实有效,我已经尝试了很多小时。这是我的 php 返回的内容,它给出了编码错误,另外No channel layout for input 1/usr/bin/ffmpeg -y -i video-short.mp4 -i audio-short.mp3 -filter_complex [0:a][1:a]amerge=inputs=2[a] -map 0:v -map "[a]" -vcodec libx264 -acodec aac -b:a 128k video3-audio-output.mp4(编辑)所以我将“复制”添加到 FFMpeg\Format\Video\X264 getAvaiableVideoCodecs()。如果我将 'copy' 添加到 new X264('aac', 'copy') 它会转储正确的 Shell 命令,但它仍然会在“编码失败”时崩溃
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

我找到了解决方案,这可能是一个常见问题。


因此,您需要将“复制”添加到 FFMpeg\Format\Video\X264 getAvaiableVideoCodecs()。


但不是“amerge”,它出于某种原因不会在前端合并给定的音频文件并返回编码失败。我们使用混合。


使用混合。这是一个示例,说明代码在运行时的样子。


$video = $this->ffmpeg->openAdvanced(array(

    'videoplayback.mp4',

    'audio-short.mp3'

));

$video

    ->filters()

    ->custom('[0:a][1:a]', 'amix=inputs=', '2[a]' );

$video

    ->map(array('0:v', '[a]'), new X264('aac', 'copy'),

   'video3-audio-output.mp4'

)

    ->save();

这可以帮助将来的人们。


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 246 浏览

添加回答

举报

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