Android端FFmpegKit Flutter音频推流失败及android_camera音频支持咨询
问题描述
- iOS端使用
ffmpeg_kit_flutter向RTSP服务器推流正常 - Android端无法运行,原使用的适配iOS的命令为:
ffmpeg -f avfoundation -i ":0" -acodec aac -f rtsp -rtsp_transport tcp "$Url"
执行ffmpeg -devices后确认Android不支持avfoundation,仅支持android_camera设备,核心疑问:android_camera是否支持音频采集?
ffmpeg -devices执行响应 I/flutter (10620): logs: libavutil 57. 28.100 / 57. 28.100 I/flutter (10620): logs: libavcodec 59. 37.100 / 59. 37.100 I/flutter (10620): logs: libavformat 59. 27.100 / 59. 27.100 I/flutter (10620): logs: libavdevice 59. 7.100 / 59. 7.100 I/flutter (10620): logs: libavfilter 8. 44.100 / 8. 44.100 I/flutter (10620): logs: libswscale 6. 7.100 / 6. 7.100 I/flutter (10620): logs: libswresample 4. 7.100 / 4. 7.100 I/flutter (10620): logs:Devices: I/flutter (10620): D. = Demuxing supported I/flutter (10620): .E = Muxing supported I/flutter (10620): -- I/flutter (10620): logs: D android_camera I/flutter (10620): logs: D lavfi I/flutter (10620): logs: DE video4linux2,v4l2
已尝试的Android命令
以下命令均未成功采集音频:
FFmpegKit.execute('-y -f android_camera -i 0:1 -r 30 -c:a aac -f rtsp -rtsp_transport tcp "$Url"'); FFmpegKit.execute('-y -f android_camera -i 0:1 -r 30 -c:a libmp3lame -qscale:a 2 "/storage/emulated/0/Download/androidvideo.mp3"'); FFmpegKit.execute('-y -f android_camera -i 0:0 -r 30 -c:a wavpack -b:a 64k "/storage/emulated/0/Download/androidvideo.wav"');
仅能录制视频但无音频的命令:
FFmpegKit.execute('-video_size hd720 -f android_camera -camera_index 1 -i anything -r 10 -t 00:00:15 "$dir/androidvideo.mp4"');
解决方案
android_camera设备仅支持视频采集,不支持音频,它是专门针对Android摄像头的视频输入组件,无法直接捕获音频信号。
要在Android上实现音视频同步推流,需分别处理视频和音频输入:
- 视频部分:继续使用
android_camera采集视频流 - 音频部分:使用Android对应的音频输入设备(需确认FFmpeg编译时包含该设备支持),通过独立输入源捕获音频,再用FFmpeg的多
-i参数合并音视频流后推流。
参考命令示例:
ffmpeg -f android_camera -i 0 -f audio -i default -c:v h264_android -c:a aac -f rtsp -rtsp_transport tcp "$Url"
注意:需根据实际FFmpeg支持的音频设备调整-f audio -i default部分(比如部分环境可能用-f alsa或对应Android音频设备标识),同时确保App已获取录音权限。
内容的提问来源于stack exchange,提问作者Uday
相关产品推荐
相关产品推荐

