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

求问:在Flutter框架(VS Code环境)中实现视频与二进制文件互转的方法

视频文件与二进制文件互转(Flutter实现)

一、视频文件转二进制(Uint8List)

1. 配置项目内资源(针对assets中的视频)

如果视频放在项目assets/videos目录下,先在pubspec.yaml中声明资源:

flutter:
  assets:
    - assets/videos/sample.mp4

2. 读取视频为二进制数据

方式1:读取项目assets中的视频

import 'package:flutter/services.dart';

Future<Uint8List> videoAssetToBinary() async {
  ByteData data = await rootBundle.load('assets/videos/sample.mp4');
  return data.buffer.asUint8List();
}

方式2:读取本地存储的视频文件

import 'dart:io';

Future<Uint8List> videoFileToBinary(String filePath) async {
  File videoFile = File(filePath);
  return await videoFile.readAsBytes();
}

3. 持久化二进制数据(可选)

如果需要保存二进制数据到本地文件:

Future<void> saveBinaryToFile(Uint8List binaryData, String savePath) async {
  File file = File(savePath);
  await file.writeAsBytes(binaryData);
}

二、二进制数据转回视频文件

1. 将二进制写入视频文件

import 'dart:io';

Future<void> binaryToVideoFile(Uint8List binaryData, String outputPath) async {
  File outputFile = File(outputPath);
  await outputFile.writeAsBytes(binaryData);
}

2. 验证视频有效性

可以用video_player插件测试生成的视频:

import 'package:video_player/video_player.dart';

Future<void> testPlayVideo(String videoPath) async {
  VideoPlayerController controller = VideoPlayerController.file(File(videoPath));
  await controller.initialize();
  controller.play();
}

注意事项

  • 处理大视频时建议分块读写,避免内存溢出。
  • Android需申请读写外部存储权限,iOS要在Info.plist中配置NSPhotoLibraryUsageDescription等权限描述。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:04:56