You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP-FFMpeg编码错误处理:如何使用-strict experimental及获取ffmpeg输出

解决方法

PHP-FFMpeg 执行命令失败时会抛出FFMpeg\Exception\ExecutionFailureException类型的异常,该类内置了获取FFmpeg标准输出和错误输出的方法,你可以通过捕获该异常拿到完整的FFmpeg运行日志排查问题。

改造后的代码示例

try {
    $ffmpeg = FFMpeg\FFMpeg::create();
    $video = $ffmpeg->open("/home/enrico/clipper/tmp/streamers/Antonio/" . $video_id);
    $format = new FFMpeg\Format\Video\X264();
    $format->setInitialParameters(array('-bsf:a',  'aac_adtstoasc' , '-acodec', 'copy', '-vcodec', 'copy'));
    $video->save($format, "playlista.mp4");
} catch (FFMpeg\Exception\ExecutionFailureException $e) {
    // 获取FFmpeg标准输出内容
    echo "FFmpeg标准输出:\n";
    print_r($e->getOutput());
    // 获取FFmpeg错误输出内容(绝大多数报错信息都在这里)
    echo "\nFFmpeg错误输出:\n";
    print_r($e->getErrorOutput());
    // 也可以直接打印FFmpeg执行的完整命令,方便手动复现问题
    echo "\n执行的FFmpeg命令:\n";
    echo $e->getCommand();
} catch (Exception $e) {
    // 捕获其他类型异常,比如文件不存在、权限不足等
    echo "其他错误:".$e->getMessage();
}

排查提示

  • FFmpeg的运行时错误(比如编码不兼容、m3u8分片缺失、参数冲突)都会输出在错误输出中,直接查看即可定位具体问题
  • 你当前代码用了-acodec copy和-vcodec copy参数,如果原始m3u8流的编码不是x264+aac,会导致封装失败,这种错误可以在错误输出中直接看到对应提示

内容的提问来源于stack exchange,提问作者Enrico Mendonca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:18:03