AVAssetExportSession 卡住(未启动)导出

2024-01-17

我尝试从照片库导出视频,但导出回调从未执行。我定期检查导出进度,进度始终为零。

下面的代码在 99.9% 的情况下都有效,但有时在某些设备上(绝对随机)它会停止工作,只有重新启动 iPhone 才有帮助。

AVAssetExportSession.Status总是在waiting state


class FilesInteractor {
    static func tempDirectoryPath() -> String {
        let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString
        return documentsPath.appendingPathComponent("temp") as String
    }

    static func createTempDirectory() {
        if !FileManager.default.fileExists(atPath: tempDirectoryPath()) {
            try? FileManager.default.createDirectory(atPath: tempDirectoryPath(), withIntermediateDirectories: true, attributes: nil)
        }
    }

    static func testVideoURL(name: String, ext: String = "mov") -> URL {
        createTempDirectory()
        let outputURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("test").appendingPathComponent("\(name).\(ext)", isDirectory: false)

        log.debug("Test video URL: \(outputURL)")

        return outputURL
    }
}

import AVFoundation

let asset = AVAsset()
let outputURL = FilesInteractor.testVideoURL("output")

let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPreset1280x720)
exportSession?.outputFileType = .mov
exportSession?.outputURL = outputURL

try? FileManager.default.removeItem(at: outputURL)
exportSession?.exportAsynchronously(completionHandler: {
    print("sometimes never calls")
})

其他视频应用程序也会冻结(Filto、Videoleap):


我在一些 Github 项目上多次看到这个问题,通常与 URL 的创建方式有关。不确定您在问题中放入的代码是否只是一些占位符,但我认为您应该创建一个像这样的 fileURL 而不是“字符串”。

var tempFileUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("temp_video_data.mp4", isDirectory: false)
tempFileUrl = URL(fileURLWithPath: tempFileUrl.path)
exportSession.outputURL = tempFileUrl

也许这会解决它?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AVAssetExportSession 卡住(未启动)导出 的相关文章

  • 处理具有不同缩放/分辨率的所有 iPhone 中的 UI [重复]

    这个问题在这里已经有答案了 在 iOS 中处理 iPhone 4 iPhone 5 iPhone 6 iPhone 6 UI 屏幕的最佳方法是什么 iPhone 6 的尺寸 3 倍缩放 坐标空间 414 x 736 像素 iPhone 6
  • 如何显示启动图像

    我是 iOS 新手 我的 Xcode 版本是 7 2 1 我尝试使用 Swift 在 iOS9 上运行 我的问题是我对如何创建启动屏幕图像感到非常困惑 我发现有很多方法可以为不同版本的 iOS 创建启动屏幕图像 有人可以向我解释一下如何设置
  • 使用 Xcode 6 XLIFF 导出的 iOS 本地化/国际化设置 Bungle

    背景 Xcode 6 添加了快速导出功能 可为每种语言创建单个 XLIFF 文件 只需从文件导航器中选择您的项目 然后选择菜单项编辑器 导出以进行本地化 Issue 它工作得非常好 并且 XML 中包含了所有内容 除了设置捆绑字符串 有人有
  • Swift - 带循环的多个链 http 请求

    两天以来 我感觉我正在搜索整个网络来解决多个 http 请求的问题 所以我的工作流程如下所示 将图像上传到服务器 响应 XML 格式和任务 ID 使用任务 ID 向服务器发出 GET 请求 以检查该任务的状态 响应 XML 格式 其中状态可
  • 如何在 UIImagePickerController 捕获图像的瞬间获取当前位置?

    我研究了如何从返回的图像中获取位置数据UIImagePickerController相机 但是 我认为最简单的方法是获取当前位置CLLocationManager此刻UIImagePickerController捕获图像 有办法做到这一点吗
  • 如何在 Objective-C 的动画中使视图振动? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个名为 qShake 的 UIView 当用户犯错误时 我希望该视图在一个小空间内短时间内从左到右晃动 我将如何创建动画来做到这一点
  • NSString 到 TimeInterval

    我有一个 NSString 的格式00 00 00 00最初获得自 dateFormatter setDateFormat HH mm ss SS 我如何获取该字符串并将其转换为 TimeInterval 如果您 100 绝对肯定这种格式永
  • 是否可以在不点击的情况下显示多个标记的多个信息窗口?

    我想在谷歌地图中显示多个标记的多个信息窗口 信息窗口应该在不点击标记本身的情况下显示 是否可以 经过研究 我了解到将标记设置为地图视图选定标记可以使信息窗口显示而无需点击它 但是 不能一次选择多个标记作为地图视图的选定标记 有什么可以做的吗
  • 身份验证后如何退出 Google

    所以我的应用程序可以选择使用 Google 登录 单击 Google 提供的按钮后 将打开一个 Web 视图并让用户输入其凭据 允许应用程序访问其信息后 应用程序将用户登录并将 SignInViewController 更改为 TabBar
  • 录制视频和音频并上传到服务器

    我想为网站添加视频录制功能 我一直在搜索并尝试所有可能的可用解决方案 但还没有任何工作正常 我已经尝试过以下解决方案 WebRTC 我知道使用 WebRTC 我们可以从网络摄像头和麦克风获取流 我发现了很多关于相同内容的文章 但没有一篇解释
  • NSAttributedString 到 NSData 'NSAttributedString' 没有可见的 @interface 声明选择器 'RTFDFromRange:documentAttributes:

    我正在尝试转换NSAttributedString to NSData using RTFDFromRange方法 得到这个 No visible interface for NSAttributedString declares the
  • Crashlytics 和答案套件的问题

    我在我的应用程序中使用 Crashlytics 来跟踪崩溃 并使用 Answers 工具包来处理自定义事件 我正在使用 pod 文件将框架集成到我的项目中 但是在添加两个 pod 时出现链接错误 pod Fabric pod Answers
  • 同一视图中的多个 UIAlertView

    我有两个带有确定 取消按钮的 UIAlertView 我通过以下方式捕获用户响应 void alertView UIAlertView alertView didDismissWithButtonIndex NSInteger button
  • 在 iOS 上提升 Asio SSL 认证

    我正在尝试在 iOS 上使用 Boost Asio 并且已经解决了所有问题 但如何检查我正在连接的服务器的证书 如何使用 Boost Asio 在 iOS 中检查连接服务器的证书 在我的另一个答案中 您可以看到一个简单的 SSL 客户端 在
  • 使用 Xcode 资产目录缓存 UIImage

    我们都知道UIImage神秘的幕后缓存机制imageNamed 方法 在苹果的UIImage 类参考 https developer apple com library IOS documentation UIKit Reference U
  • 何时使用 takeUnretainedValue() 或 takeRetainedValue() 来检索 Swift 中的非托管对象?

    根据将 Swift 与 Cocoa 和 Objective C 结合使用 https developer apple com library prerelease ios documentation Swift Conceptual Bui
  • 在 Xcode 中查看 TestFlight 崩溃日志

    我已将我的应用程序发送给 TestFlight 的一些外部测试人员 仅当您从 testFlight 安装应用程序时才会出现问题 如果我从 Xcode 安装它 一切都很好 因此 我必须从 iPhone 中删除我的应用程序 并将自己添加为外部测
  • iOS 框架问题:类在两者中均实现

    我正在开发一个使用第三方框架类的iOS框架项目 所以我在下面添加了第三方框架链接的框架和库部分 当我在 iOS 应用程序项目中添加自定义框架时 每个类都会收到此警告 objc 3139 类 class name 在两者中均实现 privat
  • 在 UIScrollView Swift 中禁用垂直滚动

    不要将此问题标记为重复 我读了很多问题 但没有找到问题的答案 我的问题如下 我有一个UIScrollView它应该只水平滚动 这里它垂直滚动 20px 奇怪的事实 它似乎与状态栏的高度相同 我尝试打印内容大小 y 偏移量和高度UIScrol
  • iOS:如何实现像Android的startActivityForResult这样的行为

    我是一名 Android 开发人员 正在开发我们应用程序的 iOS 版本 我需要知道如何在 Android 上实现类似于 startActivityForResult 的行为 我需要显示一个新的视图控制器 然后在新的视图控制器关闭时将控制权

随机推荐

  • OpenCV 用椭圆裁剪图像

    我有一个图像 cv Mat 大小为92x112我想用椭圆包围该图像中的对象 然后仅获取该像素来创建仅包含该对象的另一个图像 我的意思是 用椭圆裁剪原始图像 这是可能的 我正在尝试绘制一个椭圆 但椭圆没有绘制完整 如下所示 ellipse e
  • 如何通过 URI 激活打开 WinUI Maui?

    我创建了一个毛伊岛 Windows 应用程序 我希望通过 URI 激活应用程序并将查询参数传递给应用程序 我在包清单中添加了用于通过 uri 调用应用程序的 Windows 协议
  • 如何使用 AWS CDK 标记 EBS 卷?

    我正在使用 AWS CDK 创建带有 EBS 卷的实例 BlockDevice durableStorage BlockDevice builder deviceName dev sdf volume BlockDeviceVolume e
  • Scrapy tbody标签返回一个空答案,但里面有文本

    我尝试废弃并抓取一个网站 数据位于 tbody 标记 事件名称 中 当我检查谷歌控制台时 tbody标签有文本数据 但是当我尝试废弃它时 它返回一个空答案 也在scrapy shell中进行了测试 我检查了 AJAX 方法 因为它可以使脚本
  • 为什么宏扩展有时会加一个空格?

    如果我这样做 define F a F It expands to a godbolt https gcc godbolt org z reGxqz 如果我这样做 define F F It expands to with a space
  • Swift 将字节数组转换为字符串

    我无法将下面的字节数组快速转换为字符串 let chars UInt8 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 let datastring NSString data
  • 使用 mysqli_query 的长文本最大内存错误

    我工作的公司使用Kayako https www kayako com 管理其支持票证 我准备制作一个外部网络应用程序 它可以获取一家公司的所有门票并显示历史记录 我使用 mysqli query 连接到数据库 link mysqli co
  • 将数组添加到 web.config 中的键

    我想知道是否可以将数组作为键中的值 示例
  • 在 postgresql 中查找现有函数脚本的命令是什么?

    由于我们使用 sp helptext 过程名称 来获取 Sqlserver 中的 SP 脚本 因此我需要可用于从 postgresql 检索函数脚本的命令 请帮忙 如果您使用 pl sql 命令行界面 您可以使用 df 正如 tobixen
  • BGAppRefreshTask 后台任务未执行

    我正在使用新的 iOS13 后台任务框架 并实现 BGAppRefreshTask 类型 我的问题是 即使在等待几个小时之后 我的设备也永远不会调用该任务 但我能够使用调用 simulateLaunchForTaskWithIdentifi
  • 在 Tomcat 中为每个服务启用相互 SSL [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已经成功地在客户端应用程序和 Tomcat 实例之间设置了相互 SSL 不过 我现在正在寻找一种方法 通过相互 SSL 只公开 Tomcat 中部署
  • 为什么实际的 Switch 图像/动画没有显示?

    我在 XML 中声明了一个 Switch 它是使用特定主题的 Activity 的一部分
  • 如何正确安装msvcr71.dll

    我如何在 Windows Server 2003 上安装我的软件需要的 msvcr71 dll 我真的不想将此 dll 复制到 system32 文件夹 因为它可能会破坏此目标系统 只需将其复制到程序的所有可执行文件所在的文件夹中即可 这是
  • sprite-kit 游戏中是否可以有 Twitter / Facebook 分享按钮?

    我完全迷失了 我找到的所有教程都是针对带有故事板的 iOS 6 应用程序 我的问题是你是否可以在精灵套件游戏中拥有 Twitter 或 Facebook 共享功能 如果是这样 添加它的最佳方法是什么 我读过的很多教程都使用视图控制器 但 s
  • 内存不足错误图像视图

    我对 imageview 有问题 我有 77 张图片 jpg 和 126 个引用文本 我想要的只是简单的应用程序 我想显示带有背景图片的所有引用 并且我使用 viewflipper 所以当我向左 向右滑动时进入下一个引用 我给你我现在使用的
  • Qt Designer如何更改背景

    这是转帖 我是 Qt Designer 的新手 想要对一些按钮的丑陋做一些事情 我昨天所做的就是在互联网上查找如何在 Qt Designer 中更改屏幕的背景颜色 如何更改按钮的颜色以及如何使其侧面变成另一种颜色 你猜怎么了 我什么也没找到
  • RubyMine 文件夹树不刷新

    今天首次在 Mac OSX Leopard 上使用 RubyMine 2 0 2 如果我在文件系统中创建文件 例如 使用脚本 生成 这些新文件不会出现在 ruby mine 中 我在重新启动程序时取得了有限的成功 因为 db 文件夹中的文件
  • 如何在 pandas DataFrame 中允许重复的列名

    我有一个数据框 我想更新该数据框的列名称 列名有重复的条目 下面的代码给出错误 无法从重复的轴重新索引 list alpha beta gamma alpha df pd DataFrame datframe columns list No
  • Spotify 最新更新:Autohotkeys 脚本损坏

    我曾经使用 AutoHotKey 脚本作为 Spotify 快捷方式 内置快捷方式有限 只有在应用程序处于焦点状态时才有效 我通常在工作时将其保留在后台 不管怎样 它之前已经更新了一百万次了 没有任何问题 但是我下载了最新的 Spotify
  • AVAssetExportSession 卡住(未启动)导出

    我尝试从照片库导出视频 但导出回调从未执行 我定期检查导出进度 进度始终为零 下面的代码在 99 9 的情况下都有效 但有时在某些设备上 绝对随机 它会停止工作 只有重新启动 iPhone 才有帮助 AVAssetExportSession