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

startRecording(saveDirectory)异常:flutter_vlc_player录制无人机视频未保存至指定目录

解决flutter_vlc_player录制无人机视频后无文件留存的问题

1. 先确认权限配置是否到位

不管Android还是iOS,录制视频+存储文件都需要对应权限,缺了权限就算startRecording返回true,最终也存不了文件:

  • Android:
    在AndroidManifest.xml里添加权限(Android 13+要用新的媒体权限):
    <!-- Android 12及以下 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- Android 13+ -->
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
    <uses-permission android:name="android.permission.WRITE_MEDIA_VIDEO" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    
    还要在代码里用permission_handler库主动动态申请权限。
  • iOS:
    在Info.plist里添加:
    <key>NSCameraUsageDescription</key>
    <string>需要相机权限录制视频</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>需要麦克风权限录制音频</string>
    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>需要存储权限保存录制的视频</string>
    

2. 确保录制目录存在且路径正确

VLC不会自动创建不存在的文件夹,必须提前生成目录:

final saveDir = '/storage/emulated/0/MyDroneRecordings'; // 示例路径,根据平台调整
final directory = Directory(saveDir);
if (!await directory.exists()) {
  await directory.create(recursive: true);
}
// 再调用录制
await _vlcController.startRecording(saveDir);

另外,打印实际录制路径,手动去文件管理器核实路径是否正确,避免用相对路径或错误的沙箱路径(iOS需用getApplicationDocumentsDirectory()等API获取合法路径)。

3. 正确调用录制结束方法,别着急检测文件

stopRecording()是异步操作,刚调用就检测文件会因为未完成写入而返回false,必须等待执行完成:

// 等待录制结束完成
await _vlcController.stopRecording();
// 再检测文件(注意文件名,部分插件版本会自动生成,可打印完整路径确认)
final recordFile = File('$saveDir/recording.mp4');
if (await recordFile.exists()) {
  print('文件已保存');
} else {
  print('文件未找到');
}

4. 排查flutter_vlc_player版本与兼容性

旧版本插件可能存在录制bug,建议升级到最新稳定版,同时确认Flutter版本与插件版本兼容。Android端还要检查build.gradle中的VLC依赖配置是否正常,无版本冲突。

5. 检查无人机流的编码格式

部分无人机的视频流编码(如H.265)可能不被VLC录制功能支持,尝试切换无人机流编码为H.264,或调用startRecording时指定录制格式:

await _vlcController.startRecording(saveDir, format: 'mp4');

6. 查看Native端日志定位具体错误

如果以上步骤都无效,查看Native端日志找根源:

  • Android:用Android Studio的Logcat,过滤“VLC”或“Recording”关键词,查找“无法打开输出文件”“权限被拒”等错误信息。
  • iOS:用Xcode打开Runner项目,查看控制台输出,定位录制相关报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:53:23