当前位置: 首页 > news >正文

flutter执行Asset中的可执行文件

一、背景

之前做一个音视频合成的工具类,需要将ffmpeg打包进Asset中,但是没有很好的办法运行Asset中的ffmpeg。

二、实现

思路:获取系统临时目录,将ffmpeg从Asset中读取,然后写入到系统临时目录中再使用。

import 'dart:io';import 'package:flutter/services.dart';class FFmpegUtil {static final ffmpegExeFileName = Platform.isWindows ? 'ffmpeg.exe' : 'ffmpeg';static String? _ffmpegPath;static Future<void> init() async {final documentsDir = Directory.systemTemp;final ffmpegFile = File('${documentsDir.path}/$ffmpegExeFileName');final ffmpegBytes =await rootBundle.load('assets/ffmpeg/$ffmpegExeFileName');if (ffmpegFile.existsSync() &&ffmpegFile.lengthSync() == ffmpegBytes.buffer.lengthInBytes) {print('Will use existed ffmpeg file: $ffmpegFile');_ffmpegPath = ffmpegFile.path;return;}print('Will copy to ffmpeg file: $ffmpegFile');// 将 FFmpeg 可执行文件写入应用程序的文档目录await ffmpegFile.writeAsBytes(ffmpegBytes.buffer.asUint8List());// 设置文件权限为可执行if (Platform.isMacOS) {await Process.run('chmod', ['+x', ffmpegFile.path]);}_ffmpegPath = ffmpegFile.path;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 嵌入式Linux应用程序开发-2 Linux基础命令
  • 国外服务器独立ip的好处
  • 动态规划的正确打开
  • Linux学习-上传本地镜像到指定镜像仓库
  • Spring Boot DevTools:简化开发,实现热部署
  • 【自由能系列(初级)】大脑功能与贝叶斯计算——深层生成模型的自由能原理
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • Harmony南向驱动开发: HDC与真机调试
  • OmniGraffle Pro for Mac 思维导图软件安装
  • 《自然语言处理》—— jieba库的介绍与使用
  • 上新!Matlab实现基于QRGRU-Attention分位数回归门控循环单元注意力机制的时间序列区间预测模型
  • uni-app布局
  • 样式(3)----修改主题颜色
  • 数据库:笔记03SQL
  • 数据结构之内核链表,栈,队列
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • ES6核心特性
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Hibernate【inverse和cascade属性】知识要点
  • JavaWeb(学习笔记二)
  • JAVA多线程机制解析-volatilesynchronized
  • Promise面试题2实现异步串行执行
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 设计模式 开闭原则
  • 我感觉这是史上最牛的防sql注入方法类
  • 小程序测试方案初探
  • ​MySQL主从复制一致性检测
  • ###STL(标准模板库)
  • #window11设置系统变量#
  • (~_~)
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)计算机毕业设计ssm电影分享网站
  • (黑马C++)L06 重载与继承
  • (论文阅读11/100)Fast R-CNN
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)ORM
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @ConfigurationProperties注解对数据的自动封装
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • @Transactional 竟也能解决分布式事务?
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [AIGC 大数据基础]hive浅谈
  • [AIGC] Redis基础命令集详细介绍
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [C++] 小游戏 斗破苍穹 2.11.6 版本 zty出品
  • [C++][opencv]基于opencv实现photoshop算法色阶调整
  • [CSS]浮动
  • [EMWIN]FRAMEWIN 与 WINDOW 的使用注意