如何更改 CreationDate 资源值
Posted
技术标签:
【中文标题】如何更改 CreationDate 资源值【英文标题】:How to change CreationDate Resource Value 【发布时间】:2017-08-21 09:20:42 【问题描述】:我正在编写一个录音应用程序,使用户能够修剪以前录音的部分并将它们连接成一个新录音。
我的问题是:假设我录制了一小时长的曲目,我想修剪该曲目的前 2 分钟。当我导出这 2 分钟时,该曲目的创建日期将是“现在”,我需要它来匹配这 2 分钟实际发生的日期。
所以基本上我正在尝试修改曲目的 Url 资源值,但我只想更改创建日期。
有没有办法做到这一点?或者有没有办法添加一个新的资源值键?还是一种将所需日期附加到 url 的方法?
func trimStatringPoint(_ from: Date, startOffSet: TimeInterval, duration: TimeInterval, fileName: String, file: URL, completion: fileExportaionBlock?)
if let asset = AVURLAsset(url: file) as AVAsset?
var trimmedFileUrl = documentsDirectory().appendingPathComponent(fileName)
let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetAppleM4A)
exporter?.outputFileType = AVFileTypeAppleM4A
exporter?.outputURL = trimmedFileUrl
let start = CMTimeMake(Int64(startOffSet), 1)
let end = CMTimeMake(Int64(startOffSet + duration), 1)
exporter?.timeRange = CMTimeRangeFromTimeToTime(start, end)
exporter?.exportAsynchronously handler in
if exporter?.status != AVAssetExportSessionStatus.completed
print("Error while exporting \(exporter?.error?.localizedDescription ?? "unknown")")
completion?(nil)
return
//------------------------------------------------------
// this code needs to be replaced
do
var resourceValus = URLResourceValues()
resourceValus.creationDate = from
try trimmedFileUrl.setResourceValues(resourceValus)
catch
deleteFile(atPath: trimmedFileUrl)
print("Error while setting date - \(error.localizedDescription)")
completion?(nil)
return
//------------------------------------------------------
completion?(trimmedFileUrl)
【问题讨论】:
请包含一些与您的问题相关的代码。 我在问题中添加了代码,看看 【参考方案1】:您是否尝试过修改导出录音的元数据? https://developer.apple.com/documentation/avfoundation/avmetadatacommonkeycreationdate
AVMutableMetadataItem *item = [AVMutableMetadataItem metadataItem];
metaItem.key = AVMetadataCommonKeyCreationDate;
metaItem.keySpace = AVMetadataKeySpaceCommon;
metaItem.value = [NSDate date];
NSArray *metadata = @ metaItem ;
AVAssetExportSession *exportSession = [AVAssetExportSession exportSessionWithAsset:composition presetName:AVAssetExportPresetMediumQuality];
exportSession.metadata = metadata;
【讨论】:
以上是关于如何更改 CreationDate 资源值的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式更改 Android 中的字符串资源 xml 值?
如何获取 PHAsset 的原始(EXIF?)创建日期/时间?