我使用WatchKit 1.0创建了一个iOS/Apple Watch应用程序,它使用共享组容器和自定义框架来访问同一个Core Data存储.现在,在watchOS 2.0的过渡指南中,Apple说:
如果您现有的Watch应用程序和iOS应用程序使用共享组容器或iCloud交换数据,则必须更改watchOS 2中交换数据的方式.由于WatchKit扩展现在可在Apple Watch上运行,因此扩展必须与iOS交换数据app无线.您可以使用NSURLSession对象或使用Watch Connectivity框架来执行此操作,该框架支持iOS应用程序和WatchKit扩展之间的双向通信.
但是,这如何与Core Data一起使用?我是否需要维护两个单独的存储,一个位于手表上的Documents文件夹中,另一个位于手机上,并使用Watch Connectivity框架同步更改?我看到watchOS 2.0可以访问Core Data框架(它位于可用技术列表中)......但是我不确定当商店位于手机上时它会有多大帮助.任何帮助/指导表示赞赏!
我需要能够合并在 iOS 上的相机应用程序中使用延时拍摄功能拍摄的视频并导出为单个视频。
但是,即使我尝试将单个不变的延时视频导出到照片库,它也会保存为全黑视频(具有正确的持续时间)。这是我编写的示例代码,用于导出单个未更改的视频(其中大部分改编自 Ray Wenderlich 教程):
@IBAction func saveVideo(_ sender: UIBarButtonItem) {
// 1 - Early exit if there's no video file selected
guard let videoAsset = self.avAsset else {
let alert = UIAlertController(title: "Error", message: "Failed to load video asset.", preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alert.addAction(cancelAction)
self.present(alert, animated: true, completion: nil)
return
}
// 2 - Create AVMutableComposition object. This object will hold your AVMutableCompositionTrack instances.
print("Preparing AVMutableComposition...")
let mixComposition = AVMutableComposition() …Run Code Online (Sandbox Code Playgroud) 我正在开发一款将多个视频剪辑合并为一个最终视频的应用程序。我希望用户能够根据需要将各个剪辑静音(因此,只有最终合并视频的部分内容会被静音)。我将 AVAssets 包装在一个名为“Video”的类中,该类具有“shouldMute”属性。
我的问题是,当我将其中一个 AVAssetTrack 的音量设置为零时,它在最终视频的其余部分中保持静音。这是我的代码:
var completeDuration : CMTime = CMTimeMake(0, 1)
var insertTime = kCMTimeZero
var layerInstructions = [AVVideoCompositionLayerInstruction]()
let mixComposition = AVMutableComposition()
let audioMix = AVMutableAudioMix()
let videoTrack =
mixComposition.addMutableTrack(withMediaType: AVMediaType.video,
preferredTrackID: kCMPersistentTrackID_Invalid)
let audioTrack = mixComposition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)
// iterate through video assets and merge together
for (i, video) in clips.enumerated() {
let videoAsset = video.asset
var clipDuration = videoAsset.duration
do {
if video == clips.first {
insertTime = kCMTimeZero
} else {
insertTime = …Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,它允许您将从用户的照片库中选择的照片和视频合并为一部电影。到目前为止,我的应用程序可以轻松处理常规视频、实时照片(作为视频)和静态照片。但是,我在慢动作视频(和时间流逝,就此而言)方面遇到了很多麻烦。
我的主要问题是:慢动作视频的慢动作片段中的音频极度失真(例如,听起来有点嗡嗡声、机器人和断断续续的声音)。视频显示正常。
根据这个问题的答案,我决定首先使用 AVAssetExportSession 和最高质量预设将慢动作视频的 AVComposition 导出到临时目录,然后使用生成的文件创建一个 AVURLAsset 以用于我的合成。我可以确认这个最初导出的视频也有音频失真。我正在做的就是尝试导出我从 PHAsset 获取的 AVAsset 而不做任何更改。
我的问题是:如何从用户的库中获取慢动作视频并将其作为 .mov 文件导出到临时目录,以便按预期播放,慢动作片段的音频正确音高变化而不会极度失真?
AVAssetExportSession 只是不能处理这个问题吗?我应该改用 AVAssetWriter 吗?我不确定发布任何代码会有所帮助,因为我所做的只是设置一个临时目录路径和一个 AVAssetExportSession 来导出成功的 AVComposition。
我的应用程序是用 Swift 编写的,但我会用 Objective C 来回答。