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

Flutter集成ffmpeg_kit_flutter报ResultHandler无法向空event sink发事件错误

错误原因

你遇到的ResultHandler can not send event ... on a null event sink错误核心是FFmpegKit原生层执行完命令要给Flutter层发送回调事件时,对应的事件接收通道(EventSink)已经被销毁,无法完成事件投递,具体触发原因通常有三类:

  • 执行FFmpeg命令的过程中,承载对应逻辑的Flutter页面/State已经被销毁(比如触发命令后立刻退出页面),EventSink跟随组件生命周期被释放,原生层回调时找不到接收端。
  • 你当前使用的4.5.0 LTS版本的ffmpeg_kit_flutter存在已知的EventSink生命周期管理缺陷,快速重复创建销毁FFmpeg相关组件、或者并发执行多个FFmpeg任务时,很容易触发空事件 sink 问题。
  • 你的输出文件名包含Android文件系统不允许的特殊字符:,路径/data/user/0/com.sm.smofficial/app_flutter/Trimmer/VID_20211102_030320_trimmed:Dec5,2021-13:52:55.mp4中的冒号会导致FFmpeg写文件失败,任务提前异常结束的时间点刚好碰上EventSink被释放,也会抛出该错误。
解决方案

按照优先级依次排查修复即可:

  • 先处理非法文件名:把输出文件名中所有的:替换为下划线_等合法字符,比如修改为trimmed_Dec5_2021-13_52_55.mp4,先保证FFmpeg命令本身可以正常执行完成。
  • 绑定任务和组件生命周期:在用到FFmpegKit的State的dispose回调中,主动调用FFmpegKit.cancel(sessionId)终止还在运行的FFmpeg任务,避免任务结束后回调已经被销毁的EventSink。如果不需要监听执行进度,也可以直接使用无回调的FFmpegKit.execute同步执行接口,从根源上规避事件通道问题。
  • 升级依赖版本:如果上述操作后问题仍然存在,将ffmpeg_kit_flutter升级到更高的稳定LTS版本即可修复版本自带的EventSink管理缺陷,你已经添加的uses-sdk overrideLibrary配置可以保留,无需额外修改Android端配置。
  • 混淆排查:如果仅在Release包出现该错误,检查混淆配置,添加ffmpeg_kit相关的保活规则,避免回调相关类被混淆删除导致EventSink初始化失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:45:01