【问题标题】:FFmpeg - change audio codecFFmpeg - 更改音频编解码器
【发布时间】:2020-06-09 05:02:19
【问题描述】:

这是我的代码:

$format = new X264('aac', 'libx264');
$format->setKiloBitrate(500);

但当视频使用pascalbaljetmedia/laravel-ffmpeg 进行转码时,此包默认将音频编解码器设置为mp3,而不是aac

如何解决这个问题?

【问题讨论】:

  • 你确定你的FFMPEG是用libfaac构建的吗?
  • 未知编码器'libfaac'

标签: laravel laravel-5.8 ffmpeg-php


【解决方案1】:

我告诉过你libfaac 编码器。但我发现这个在 2016 年被弃用了。因为还有其他更好的编码器,例如 aaclibfdk_aacaac_at 等。查看更多 here

您应该首先在命令行工具上检查这些编码器,以确保您的 ffmpeg 是使用这些编码器编译的。让我们使用aac 编码器,因为它默认包含在所有 ffmpeg 版本中。

ffmpeg -i real_audio.mp3 -c:a aac converted_audio.aac

我使用laravel-ffmpegaac 编码器将mp3 转换为aac。它就像一个魅力。见以下代码:

<?php

namespace App\Http\Controllers;

use FFMpeg\Format\Video\X264;
use ProtoneMedia\LaravelFFMpeg\Support\FFMpeg;

class TestController extends Controller
{
    public function index() 
    {
        echo "<p>Converting...</p>";

        FFMpeg::fromDisk('public')
            ->open('audio.mp3')
            ->export()
            ->toDisk('public')
            ->inFormat(new X264('aac'))
            ->save('converted_audio.aac');
    }
}

要了解更多关于aac 编码器的信息,请使用以下命令:

ffmpeg -h encoder=aac

我的laravel-ffmpeg包版本是

"pbmedia/laravel-ffmpeg": "^7.0"

ffmpeg 版本是

ffmpeg version 3.4.6

希望对您有所帮助!

【讨论】:

  • tnx 回答,我和你一样使用 aac,但是当 pbmedia/laravel-ffmpeg 转码视频时,音频编解码器默认更改为 libmp3lame。问题就在这里!
  • 不!我尝试了视频 mp4 到音频 aac 和音频 mp3 到音频 aac,两者都工作正常。这可能是因为 libfaac 现在已弃用,并且 X264 将 libfaac 作为默认音频编解码器,(我不确定)它可能是 libmp3lame 的后备。所以你需要在将音频转换为视频时指定编解码器,反之亦然。
  • 我的代码在本地运行得很好,但是在服务器上使用它时,默认将音频格式更改为 libmp3lame!!!
  • 这就是为什么我告诉您检查是否安装了aaclibfdk_aacaac_at 等编解码器之一(在您的服务器上)。因此,FFMPEG 是否符合您需要的编解码器?检查FFMPEG 的版本。默认情况下,它的新版本使用aac 编解码器编译。如果无法挖掘您的服务器,请询问托管服务提供商。
  • 我在我的项目中使用 laravel 5.8,与它兼容的 pbmedia/laravel-ffmpeg 的最新版本是 4.0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 2020-07-14
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多