iOS 集成ffmpeg
前言
本来打算用flutter去实现一个ffmpeg的项目的,不过仔细分析了一下,我后期需要集成OpenGL ES做视频渲染处理,OpenGL ES的使用目前在flutter上面还不是很成熟,所以最后还是选择用原生来开发
ffmpeg集成到iOS工程
iOS对于ffmpeg的使用,看了网上,很多人说自己去编译ffmpeg源码,弄了半天,没弄好,放弃了,直接使用现成的第三方库 ffmpeg-kit-ios-full-gpl
这是我工程的Podfile文件
platform:ios,'13.0'target 'ffmpeg03' do
pod 'ffmpeg-kit-ios-full-gpl', '6.0'end
遇到的问题
集成上面的裤,pod install之后,工程是运行不起来的,会报下面的错误:
Sandbox: rsync(31518) deny(1) file-write-create
解决方法
方法一:修改Targets -> Build Settings 中 ENABLE_USER_SCRIPT_SANDBOXING
设置 NO
方法二:项目使用cocoaPods进行三方管理 且 使用了 use_frameworks
,把 use_frameworks
注释掉,重新pod install 然后运行
platform:ios,'13.0'target 'ffmpeg03' do
pod 'ffmpeg-kit-ios-full-gpl', '6.0'end
编译通过
测试
工程目录:
项目代码
实现一个视频从mp4转avi
import ffmpegkit
import UIKitclass ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()}override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {convertVideoFormat()}func convertVideoFormat() {// 获取输入文件路径guard let inputFile = Bundle.main.path(forResource: "12345", ofType: "mp4") else {print("未找到输入文件")return}// 设置输出文件路径let documentsDir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]let outputFile = "\(documentsDir)/output.avi"// 构建 FFmpeg 命令let ffmpegCommand = "-i \"\(inputFile)\" -c:v libx264 -c:a aac \"\(outputFile)\""print("执行的命令:ffmpeg \(ffmpegCommand)")// 执行转换FFmpegKit.executeAsync(ffmpegCommand) { session inlet state = session?.getState()let returnCode = session?.getReturnCode()print("Return Code:\(String(describing: returnCode))")if ReturnCode.isSuccess(returnCode) {// 转换成功print("视频转换成功!输出文件位于:\(outputFile)")DispatchQueue.main.async {// 在主线程中更新 UI 或进行下一步操作}} else {// 转换失败if let output = session?.getAllLogsAsString() {print("转换失败,输出日志:\n\(output)")}if let failStackTrace = session?.getFailStackTrace() {print("失败堆栈跟踪:\n\(failStackTrace)")}}}}
}
最终输出
相关文章:
iOS 集成ffmpeg
前言 本来打算用flutter去实现一个ffmpeg的项目的,不过仔细分析了一下,我后期需要集成OpenGL ES做视频渲染处理,OpenGL ES的使用目前在flutter上面还不是很成熟,所以最后还是选择用原生来开发 ffmpeg集成到iOS工程 iOS对于ffmp…...
DeepSeek的崛起与全球科技市场的震荡
引言 近年来,人工智能(AI)技术的快速发展不断重塑全球科技格局。 近日,中国初创企业DeepSeek推出了一款据称成本极低且性能强大的AI模型,引发全球市场的剧烈反应。NVIDIA、台积电等半导体和AI科技巨头股价大幅下跌&am…...
selenium定位网页元素
1、概述 在使用 Selenium 进行自动化测试时,定位网页元素是核心功能之一。Selenium 提供了多种定位方法,每种方法都有其适用场景和特点。以下是通过 id、linkText、partialLinkText、name、tagName、xpath、className 和 cssSelector 定位元素的…...
Elasticsearch有哪些应用场景?
Elasticsearch的应用场景非常广泛,以下是一些主要的应用场景: 1.全文搜索: Elasticsearch凭借其强大、可扩展和快速的搜索功能,在全文搜索场景中表现出色。它允许用户以近乎实时的响应执行复杂的查询,常用于大型网站…...
MySQL 基础学习(1):数据类型与操作数据库和数据表
MySQL 基础学习:数据类型与操作数据库和数据表 在这篇博客中,我们将深入学习 MySQL 的基础操作,重点关注数据库和数据表的操作,以及 MySQL 中常见的数据类型。希望本文能帮助你更好地理解和掌握 MySQL 的基本用法。 一、操作数据…...
芯片AI深度实战:基础篇之Ollama
有这么多大模型,怎么本地用? Ollama可以解决这一问题。不依赖GPU,也不需要编程。就可以在CPU上运行自己的大模型。 软件甚至不用安装,直接在ollama官网下载可执行文件即可。 现在最流行的deepseek-r1也可以使用。当然还有我认为最…...
安卓(android)订餐菜单【Android移动开发基础案例教程(第2版)黑马程序员】
一、实验目的(如果代码有错漏,可查看源码) 1.掌握Activity生命周的每个方法。 2.掌握Activity的创建、配置、启动和关闭。 3.掌握Intent和IntentFilter的使用。 4.掌握Activity之间的跳转方式、任务栈和四种启动模式。 5.掌握在Activity中添加…...
deb安装失败后,无法再安装别的包的解决方案
把package_name换成出安装问题的包 移除该包的安装标记 sudo dpkg --remove --force-remove-reinstreq package_name清理残留文件和配置 sudo apt-get purge package_name...
算法基础学习——二分查找(附带Java模板)
有单调性的数列一定可以使用二分,没有单调性的题目也可能可以使用二分; (一)整数二分 二分的本质: 在某个整数区间内,存在某种性质使得区间内左半边的数都不满足该性质;而右半边的数都满足该性…...
蓝桥杯例题五
无论你面对多大的困难和挑战,都要保持坚定的信念和积极的态度。相信自己的能力和潜力,努力不懈地追求自己的目标和梦想。不要害怕失败,因为失败是成功的垫脚石。相信自己的选择和决策,不要被他人的意见和批评左右。坚持不懈地努力…...
pyside6-uic form.ui -o ui_form.py 的作用
pyside6-uic form.ui -o ui_form.py 的作用 pyside6-uic form.ui -o ui_form.py 这个命令是用来将 .ui 文件转换为 Python 代码文件的工具。 具体作用: pyside6-uic:这是一个命令行工具,用于将用 Qt Designer 或其他图形界面工具创建的 .ui …...
理解神经网络:Brain.js 背后的核心思想
温馨提示 这篇文章篇幅较长,主要是为后续内容做铺垫和说明。如果你觉得文字太多,可以: 先收藏,等后面文章遇到不懂的地方再回来查阅。直接跳读,重点关注加粗或高亮的部分。放心,这种“文字轰炸”不会常有的,哈哈~ 感谢你的耐心阅读!😊 欢迎来到 brain.js 的学习之旅!…...
工业相机开发操作流程
建议按照如下的流程操作相机(其中有一些步骤是可选的,已经标明): 一、载入SDK的动态链接库档MVCAMSDK.DLL。可以使用动态或者静 态加载两种方式。 如果使用C/C进行开发,在工程引用 CameraApi.h头文件(位于安装目录的SDK/DEMO/VC/include中)和…...
利用飞书机器人进行 - ArXiv自动化检索推荐
相关作者的Github仓库 ArXivToday-Lark 使用教程 Step1 新建机器人 根据飞书官方机器人使用手册,新建自定义机器人,并记录好webhook地址,后续将在配置文件中更新该地址。 可以先完成到后续步骤之前,后续的步骤与安全相关&…...
SpringCloudGateWay和Sentinel结合做黑白名单来源控制
假设我们的分布式项目,admin是8087,gateway是8088,consumer是8086 我们一般的思路是我们的请求必须经过我们的网关8088然后网关转发到我们的分布式项目,那我要是没有处理我们绕过网关直接访问项目8087和8086不也是可以࿱…...
Win10安装MySQL、Pycharm连接MySQL,Pycharm中运行Django
一、Windows系统mysql相关操作 1、 检查系统是否安装mysql 按住win r (调出运行窗口) 输入service.msc,点击【确定】 image.png 打开服务列表-检查是否有mysql服务 (compmgmt.msc) image.png 2、 Windows安装MySQL …...
MR-GDINO: Efficient Open-World Continual Object Detection—— 高效开放世界持续目标检测
这篇文章提出了一种名为MR-GDINO的开放世界持续目标检测方法,旨在解决开放世界检测器在持续学习过程中对已见类别和未见类别的灾难性遗忘问题。文章的主要内容和贡献如下: 问题定义:提出了开放世界持续目标检测任务,要求检测器在持…...
显示当前绑定变量
来自v$sql中的信息 测试两个变量的情况(实际可以看6个,可根据需要修改) DROP TABLE T1 PURGE; CREATE TABLE T1 AS SELECT A.*,SYSDATE RIQI FROM DBA_USERS A ORDER BY 1;var mc char(3); var id number; exec :mc:SYS; exec :id:50;set li…...
如何将xps文件转换为txt文件?xps转为pdf,pdf转为txt,提取pdf表格并转为txt
文章目录 xps转txt方法一方法二 pdf转txt整页转txt提取pdf表格,并转为txt 总结另外参考XPS文件转换为TXT文件XPS文件转换为PDF文件PDF文件转换为TXT文件提取PDF表格并转为TXT示例代码(部分) 本文测试代码已上传,路径如下ÿ…...
STM32 PWM驱动舵机
接线图: 这里将信号线连接到了开发板的PA1上 代码配置: 这里的PWM配置与呼吸灯一样,呼吸灯连接的是PA0引脚,输出比较单元用的是OC1通道,这里只需改为OC2通道即可。 完整代码: #include "servo.h&quo…...
「AI学习笔记」深度学习的起源与发展:从神经网络到大数据(二)
深度学习(DL)是现代人工智能(AI)的核心之一,但它并不是一夜之间出现的技术。从最初的理论提出到如今的广泛应用,深度学习经历了几乎一个世纪的不断探索与发展。今天,我们一起回顾深度学习的历史…...
专业视角深度解析:DeepSeek的核心优势何在?
杭州深度求索(DeepSeek)人工智能基础技术研究有限公司,是一家成立于2023年7月的中国人工智能初创企业,总部位于浙江省杭州市。该公司由量化对冲基金幻方量化(High-Flyer)的联合创始人梁文锋创立,…...
科技巨头AI投资引领未来增长
标题:科技巨头AI投资引领未来增长 文章信息摘要: 2024年科技巨头的资本支出远超预期,达到2360亿美元,主要得益于AI基础设施和数据中心建设的加速。预计2025年这一趋势将继续保持强劲增长,资本支出可能突破3000亿美元。…...
【Unity3D】Tilemap俯视角像素游戏案例
目录 一、导入Tilemap 二、导入像素风素材 三、使用Tilemap制作地图 3.1 制作Tile Palette素材库 3.2 制作地图 四、实现A*寻路 五、待完善 一、导入Tilemap Unity 2019.4.0f1 已内置Tilemap 需导入2D Sprite、2D Tilemap Editor、以及一个我没法正常搜出的2D Tilemap…...
Java 知识速记:全面解析 final 关键字
Java 知识速记:全面解析 final 关键字 什么是 final 关键字? final 关键字是 Java 中的一个修饰符。它可以用于类、方法和变量,其作用是限制对这些元素的修改。究竟如何限制?我们来逐个分析。 final 在变量中的用法 1. 声明常…...
《智能家居“孤岛危机”:设备孤立如何拖垮系统优化后腿》
在科技飞速发展的今天,智能家居不再是遥不可及的概念,它正逐渐走进千家万户,为我们描绘出舒适便捷的未来生活蓝图。想象一下,下班回家前,你可以通过手机远程开启空调,让室内温度恰到好处;到家时…...
大数据学习之Kafka消息队列、Spark分布式计算框架一
Kafka消息队列 章节一.kafka入门 4.kafka入门_消息队列两种模式 5.kafka入门_架构相关名词 Kafka 入门 _ 架构相关名词 事件 记录了世界或您的业务中 “ 发生了某事 ” 的事实。在文档中 也称为记录或消息。当您向 Kafka 读取或写入数据时,您以事件的 形式执行…...
Linux《基础指令》
在之前的Linux《Linux简介与环境的搭建》当中我们已经初步了解了Linux的由来和如何搭建Linux环境,那么接下来在本篇当中我们就要来学习Linux的基础指令。在此我们的学习是包括两个部分,即指令和关于Linux的基础知识;因此本篇指令和基础知识的…...
Avalonia+ReactiveUI跨平台路由:打造丝滑UI交互的奇幻冒险
一、引言 在当今数字化时代,跨平台应用开发已成为大势所趋。开发者们迫切需要一种高效、灵活的方式,能够让应用程序在不同操作系统上无缝运行,为用户提供一致的体验。Avalonia 和 ReactiveUI 的组合,宛如一对天作之合的舞者&…...
Ansible自动化运维实战--通过role远程部署nginx并配置(8/8)
文章目录 1、准备工作2、创建角色结构3、编写任务4、准备配置文件(金甲模板)5、编写变量6、编写处理程序7、编写剧本8、执行剧本Playbook9、验证-游览器访问每台主机的nginx页面 在 Ansible 中,使用角色(Role)来远程部…...
H264原始码流格式分析
1.H264码流结构组成 H.264裸码流(Raw Bitstream)数据主要由一系列的NALU(网络抽象层单元)组成。每个NALU包含一个NAL头和一个RBSP(原始字节序列载荷)。 1.1 H.264码流层次 H.264码流的结构可以分为两个层…...
批量解密,再也没有任何限制了
有的时候我们在网上下载了PDF文档。发现没有办法进行任何的操作,就连打印权限都没有。今天给大家介绍的这个软件可以一键帮你进行PDF解密,非常方便,完全免费。 PDF智能助手 批量解密PDF文件 这个软件不是很大,只有10MBÿ…...
认识小程序的基本组成结构
1.基本组成结构 2.页面的组成部分 3.json配置文件 4.app.json文件(全局配置文件) 5.project.config.json文件 6.sitemap.json文件 7.页面的.json配置文件 通过window节点可以控制小程序的外观...
模型I/O
文章目录 什么是模型I/O模型I/O功能之输出解析器输出解析器的功能输出解析器的使用Pydantic JSON输出解析器结构化输出解析器 什么是模型I/O 模型I/O在所有LLM应用中,核心元素无疑都是模型本身。与模型进行有效的交互是实现高效、灵活和可扩展应用的关键。LangChain…...
DeepSeek模型:开启人工智能的新篇章
DeepSeek模型:开启人工智能的新篇章 在当今快速发展的技术浪潮中,人工智能(AI)已经成为了推动社会进步和创新的核心力量之一。而DeepSeek模型,作为AI领域的一颗璀璨明珠,正以其强大的功能和灵活的用法&…...
git push到远程仓库时无法推送大文件
一、错误 remote: Error: Deny by project hooks setting ‘default’: size of the file ‘scientific_calculator’, is 164 MiB, which has exceeded the limited size (100 MiB) in commit ‘4c91b7e3a04b8034892414d649860bf12416b614’. 二、原因 本地提交过大文件&am…...
初识ExecutorService
设计目的 ExecutorService是Java并发包(java.util.concurrent)的一部分,旨在提供一种更高层次的抽象来管理线程和任务执行。它解决了手动创建和管理线程带来的复杂性和资源浪费问题,通过复用固定数量的线程池来处理大量短生命周期的任务,从而…...
初二回娘家
昨天下午在相亲相爱一家人群里聊天,今天来娘家拜年。 聊天结束后,开始准备今天的菜肴,梳理了一下,凉菜,热菜,碗菜。 上次做菜,粉丝感觉泡的不透,有的硬,这次使用开水浸泡…...
js基础(黑马程序员)
Web APIs(day6) 一、正则表达式 1.介绍 正则表达式(Regular Expression):是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象 通常用来查找、替换那些符合正则表达式的文本&#x…...
Java---猜数字游戏
本篇文章所实现的是Java经典的猜数字游戏 , 运用简单代码来实现基本功能 目录 一.题目要求 二.游戏准备 三.代码实现 一.题目要求 随机生成一个1-100之间的整数(可以自己设置区间),提示用户猜测,猜大提示"猜大了",…...
Oracle Primavera P6 最新版 v24.12 更新 2/2
目录 一. 引言 二. P6 EPPM 更新内容 1. 用户管理改进 2. 更轻松地标准化用户设置 3. 摘要栏标签汇总数据字段 4. 将里程碑和剩余最早开始日期拖到甘特图上 5. 轻松访问审计数据 6. 粘贴数据时排除安全代码 7. 改进了状态更新卡片视图中的筛选功能 8. 直接从活动电子…...
【React】 react路由
这一篇文章的重点在于将React关于路由的问题都给搞清楚。 一个路由就是一个映射关系,key:value。key是路径,value 可能是function或者component。 安装react-router-dom包使用路由服务,我这里想要用的是6版本的包,因此后面加”6&q…...
Linux的常用指令的用法
目录 Linux下基本指令 whoami ls指令: 文件: touch clear pwd cd mkdir rmdir指令 && rm 指令 man指令 cp mv cat more less head tail 管道和重定向 1. 重定向(Redirection) 2. 管道(Pipes&a…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.18 逻辑运算引擎:数组条件判断的智能法则
1.18 逻辑运算引擎:数组条件判断的智能法则 1.18.1 目录 #mermaid-svg-QAFjJvNdJ5P4IVbV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QAFjJvNdJ5P4IVbV .error-icon{fill:#552222;}#mermaid-svg-QAF…...
C语言实现库函数strlen
size_t是 unsigned int fgets会读入\n,用strcspn函数除去 assert判读指针是否为空指针,使用前要引头文件<assert.h> #include <stdio.h> #include <assert.h> size_t mystrlen(const char* str) {assert(str);size_t count 0;while …...
18 大量数据的异步查询方案
在分布式的应用中分库分表大家都已经熟知了。如果我们的程序中需要做一个模糊查询,那就涉及到跨库搜索的情况,这个时候需要看中间件能不能支持跨库求交集的功能。比如mycat就不支持跨库查询,当然现在mycat也渐渐被摒弃了(没有处理笛卡尔交集的…...
FastExcel使用详解
文章目录 FastExcel使用详解一、引言二、环境准备与依赖引入1、Maven 依赖引入2、实体类定义 三、核心操作:读写 Excel1、读取 Excel1.1 自定义监听器1.2 读取文件 2、写入 Excel2.1 简单写入2.2 模板写入 四、Spring Boot 集成示例1、文件上传(导入&…...
深度学习python基础(第四节) 元组、字符串、集合和字典
本节主要介绍元组,字符串,集合,字典的基本语法定义,以及相关的操作. 元组的定义和操作 元组一旦定义完成就不可修改. """ # 定义元组字面量 (元素,元素,....,元素) # 元素可以不同的数据类型# 定义元组变量 变量名称 (元素,…...
QT串口通信,实现单个温湿度传感器数据的采集
1、硬件设备 RS485中继器(一进二出),usb转485模块、电源等等 => 累计115元左右。 2、核心代码 #include "MainWindow.h" #include "ui_MainWindow.h"MainWindow::...
绘制决策树尝试3
目录 代码解读AI 随机状态 种子 定义决策树回归模型 tree的decision regressor fit 还可用来预测 export 效果图 我的X只有一个特征 为何这么多分支 ??? 这是CART回归 CART回归 为什么说代码是CART回归? 不是所有的决…...