周灏 2023-05-16 16:22 采纳率: 0%
浏览 99
已结题

linux上使用命令行调用FFmpeg录音成功,但是在程序中使用FFmpegFrameGrabber却失败

使用命令行

ffmpeg -f pulse -i alsa_output.platform-PHYT0006_00.stereo-fallback.monitor -t 30 output.wav

可以成功捕获声卡内容并生成录音文件。
但是当我使用程序:

FFmpegFrameGrabber skGrabber = new FFmpegFrameGrabber("alsa_output.platform-PHYT0006_00.stereo-fallback.monitor");
skGrabber.setFormat("pulse");

运行时却会报错:
av_find_input_format() error: Could not find input format "pulse"。
操作系统是linux(统信)

  • 写回答

4条回答 默认 最新

  • PythonWithCar 2023-05-18 01:02
    关注

    在Linux系统中,FFmpeg库需要依赖PulseAudio来处理音频输入和输出。错误提示"Could not find input format 'pulse'"表明在您的系统中,FFmpeg库没有正确配置或无法找到PulseAudio输入格式。

    要解决这个问题,您可以尝试以下步骤:

    1. 确保您的系统已正确安装PulseAudio。您可以通过运行以下命令来检查:

      pulseaudio --version
      

      如果没有安装,可以使用包管理器安装PulseAudio。

    2. 确保您的程序中引用了正确的FFmpeg库,并且库版本支持PulseAudio。您可以使用以下命令检查FFmpeg库是否支持PulseAudio:

      ffmpeg -formats | grep pulse
      

      如果没有输出或没有包含"PULSE"字样,则表示您的FFmpeg库可能没有编译支持PulseAudio。

    3. 如果发现FFmpeg库不支持PulseAudio,您可以尝试重新编译和安装FFmpeg库,确保在编译时启用了PulseAudio的支持。可以参考FFmpeg的官方文档或社区支持资源了解如何编译和安装支持PulseAudio的FFmpeg库。

    4. 如果您已经确认系统中正确安装了PulseAudio,并且FFmpeg库也已经编译了PulseAudio的支持,但仍然遇到问题,可能是因为库的路径配置不正确。您可以通过设置LD_LIBRARY_PATH环境变量来指定库的搜索路径,例如:

      export LD_LIBRARY_PATH=/usr/local/lib
      

      将上述命令中的/usr/local/lib替换为您FFmpeg库所在的实际路径。

    请注意,以上步骤是一般性的建议,具体操作可能会因系统环境、库版本和配置而有所不同。如果仍然无法解决问题,建议参考FFmpeg的官方文档、社区支持资源或相关论坛寻求更详细的帮助和指导。

    评论

报告相同问题?

问题事件

  • 系统已结题 5月24日
  • 赞助了问题酬金15元 5月16日
  • 创建了问题 5月16日