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

React Native中FFprobeKit偶发执行失败,无法获取具体错误求助

获取FFprobeKit执行失败的精确错误信息方法

针对你用FFprobeKit偶发获取视频时长失败但无详细错误的问题,可以通过以下几种方式排查:

1. 调整FFprobe命令的日志级别

当前命令使用-v error会过滤掉大部分调试信息,改为更详细的日志级别,比如-v verbose或-v debug,能输出执行过程中的所有细节,包括文件读取、流解析的错误:

-v verbose -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 ${uri}

2. 优化错误捕获逻辑,获取错误输出与完整日志

原代码混用async/await和then,且未获取FFprobe的错误输出(stderr),修改后统一用async/await,同时捕获错误输出和完整日志:

const getVideoDuration = async (uri: string): Promise<void> => {
  try {
    const information = await FFprobeKit.executeAsync(
      `-v verbose -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 ${uri}`
    );

    const returnCode = information.getReturnCode();
    if (returnCode.isError()) {
      // 获取错误输出(stderr)
      const errorOutput = await information.getErrorOutput();
      console.error("FFprobe执行错误:", errorOutput.toString());
      // 获取全部执行日志
      const allLogs = await information.getAllLogs();
      console.error("完整日志:", allLogs.map(log => log.getMessage()).join("\n"));
      return;
    }

    const output = await information.getOutput();
    const durationValue = parseFloat(output.toString());
    if (!isNaN(durationValue)) {
      setInputVideoDuration(durationValue * 1000);
    } else {
      console.error("时长解析失败,输出内容:", output.toString());
    }
  } catch (error) {
    console.error("全局异常捕获:", error);
  }
};

3. 启用全局日志回调

通过FFmpegKit的全局日志监听,捕获所有底层库的输出,包括libswscale、libswresample等组件的日志:

import { FFmpegKitConfig } from 'ffmpeg-kit-react-native';

// 在App初始化阶段设置
FFmpegKitConfig.enableLogCallback(log => {
  console.log(`FFmpegKit日志: ${log.getMessage()}`);
});

FFmpegKitConfig.enableStatisticsCallback(stats => {
  console.log(`执行统计: ${JSON.stringify(stats)}`);
});

4. 检查URI合法性与文件权限

偶发失败可能和文件访问权限、URI格式有关:

  • Android上如果使用content://格式的URI,需确保App有读取媒体文件的权限;
  • iOS上要确认文件在App沙盒可访问范围内,必要时将content:// URI转换为沙盒文件路径。

内容的提问来源于stack exchange,提问作者sandulasanth-7

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:55:33