如何将NSData加载到AVPlayerItem中?

5
这是我根据你之前的帖子提出的一个后续问题:如何在iOS中加密mp3文件
如何使用NSData而不是文件路径/URL将音轨加载到AVPlayerItem中?
谢谢。

2
将其写入文件,然后加载该文件。 - Dustin
+1 给 @Dustin。AVPlayerItem 类确实没有太多选择余地。 - Jeremy
2个回答

9
[/*name of NSData*/ writeToFile:/*save file path*/ atomically: YES];
NSURL *filepath = [NSURL fileURLWithPath:/*save file path*/];
AVPlayerItem *player = [AVPlayerItem playerItemWithURL:filepath];

未经测试,但应该能够正常工作。


+1 因为花时间提供了一个例子。我太懒了 :) - Jeremy
谢谢提供示例。我真的希望有另一种方法来完成它,因为重新保存MP3文件为未加密形式(即使只是短暂的)可能会带来一些安全问题,我认为? - Kiran Panesar
这取决于你的mp3需要多安全...如果这是一个大问题,你可以在完成后立即删除文件。 - Dustin
@Dustin 是的,那就是我要做的。我相信它会足够安全,但并不完美。感谢你的帮助 :) - Kiran Panesar
1
对于那些偶然发现这篇文章的人,AVAudioPlayer的initWithData方法可能会有所帮助。 - danielmhanover

1

更新Dustin的回答,适用于Swift 5:

var audioData: Data // some audio data
var fileURL: URL // some local path, probably appending NSTemporaryDirectory() 
try! audioData.write(to: fileURL)
let item = AVPlayerItem(url: fileURL)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接