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

使用FFmpegKit Flutter采集Android麦克风音频至RTSP服务器失败求助

问题分析与解决方案

核心错误原因

你用的-f android_camera是FFmpegKit专门用于Android相机视频采集的输入格式,它完全不支持音频抓取,所以不管你怎么调整输入索引(0:1/0:0),都只能获取到视频流,这就是日志显示输入仅含视频、输出音频大小为0的根本原因。返回码255也和这个无效的音频输入源直接相关。

正确实现方式

1. 本地录制音频

要采集麦克风音频,需要使用android_audio输入格式,示例命令:

// 录制为MP3
FFmpegKit.execute('-y -f android_audio -i default -c:a libmp3lame -qscale:a 2 "/storage/emulated/0/Download/android_audio.mp3"');

// 录制为WAV
FFmpegKit.execute('-y -f android_audio -i default -c:a pcm_s16le "/storage/emulated/0/Download/android_audio.wav"');
  • -i default表示使用系统默认麦克风,也可以指定具体音频设备索引(可通过FFmpegKit.getMediaInformation()获取设备列表)。

2. 实时推流麦克风音频到RTSP

直接推送音频流的命令:

FFmpegKit.execute('-y -f android_audio -i default -c:a aac -f rtsp -rtsp_transport tcp "$Url"');

3. 同时采集音视频并推流/录制

如果需要同时推流音视频,需要分别抓取视频(android_camera)和音频(android_audio)流,再合并输出:

// 推流音视频到RTSP
FFmpegKit.execute('-y -f android_camera -i 0 -f android_audio -i default -c:v h264_android -c:a aac -f rtsp -rtsp_transport tcp "$Url"');

// 本地录制音视频
FFmpegKit.execute('-y -f android_camera -i 0 -f android_audio -i default -c:v h264_android -c:a aac -t 00:00:15 "$dir/android_video_audio.mp4"');
  • -i 0表示使用第0个相机设备,可根据需要调整索引;h264_android是Android硬件编码器,效率更高。

额外注意事项

  • 确认FFmpegKit的编译包包含了所需的音频编码器(比如libmp3lame、aac),如果用的是min包可能需要换成full包。
  • 虽然你已经授予权限,仍需确保在运行时动态申请了RECORD_AUDIO和CAMERA权限(Android 6.0+要求)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:59:49