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

Flutter video_player修改播放速度后如何获取修改信息并保存视频?

问题描述

想用Flutter的video_player包修改视频播放速度并保存到相册,已通过controller.setPlaybackSpeed()方法成功调整播放速度,但找不到获取修改后视频信息的方式,尝试过controller.dataSource和controller.value属性均无相关内容。代码示例:

Slider(
  value: blur, min: 1, max: 5, onChanged: (value) {
    setState(() {
      blur = value;
      _controller.setPlaybackSpeed(blur);
      
    });
  },) ,
解决方案

首先明确:video_player仅负责播放控制,不会修改原视频文件,setPlaybackSpeed()只是改变播放时的速率,并没有生成新的视频文件,所以从controller里拿不到“修改后的视频信息”。

要实现变速后保存视频到相册,需分两步:

  1. 记录你设置的播放速度值(比如代码里的blur变量)
  2. 用视频处理库对原视频进行变速编码,生成新文件后再保存到相册

具体实现方案

  • 用flutter_ffmpeg处理视频变速:这是FFmpeg的Flutter封装,通过命令行完成视频变速(支持音视频同步)。示例代码:
// 替换为你的原视频路径和输出路径
final inputPath = "/path/to/your/original/video.mp4";
final outputPath = "/path/to/save/modified/video.mp4";
// 计算变速参数:视频setpts是1/速度,音频atempo是速度值
final arguments = '-i $inputPath -filter_complex "[0:v]setpts=${1/blur}*PTS[v];[0:a]atempo=$blur[a]" -map "[v]" -map "[a]" $outputPath';
// 执行处理
await FlutterFFmpeg().execute(arguments);
  • 用gallery_saver保存到相册:处理完成后,将生成的视频文件保存到系统相册:
await GallerySaver.saveVideo(outputPath);

注意事项

  • 需在Android和iOS配置文件中添加对应权限(存储访问、文件读写等)
  • FFmpeg命令可按需调整,比如无需音频可去掉音频相关过滤链
  • 视频处理是耗时操作,建议放在异步任务中执行,并添加加载提示

内容的提问来源于stack exchange,提问作者selman altınbaş

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:20:39