为啥 AVURLAsset 不加载文件?
Posted
技术标签:
【中文标题】为啥 AVURLAsset 不加载文件?【英文标题】:Why is AVURLAsset Not Loading the File?为什么 AVURLAsset 不加载文件? 【发布时间】:2018-09-27 14:39:01 【问题描述】:好的。我有一种讨厌的感觉,这将与蟋蟀的温柔啁啾相会......
我基于this 和this。
我实际上想知道这是否是一项功能,而不是错误,因为在本地加载电影然后播放它可能存在安全问题。我认为情况并非如此,但也许。需要注意的是,加载的资产来自与服务器的 REST 交互,其中电影数据实际上只是数据查询响应的一部分。它不是直接从视频流页面加载的东西(虽然它是 SSL)。
我在 AV Foundation 很年轻。
我有以下代码:
do
// We create a path to a unique temporary file to grab the media.
let url = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(UUID().uuidString)
// Store the media in the temp file.
try myData.write(to: url, options: .atomic)
let options = [AVURLAssetPreferPreciseDurationAndTimingKey: true]
let asset = AVURLAsset(url: url, options: options)
if 0 < asset.tracks.count
print("YOU GET \(asset.tracks.count) TRACKS!")
else
print("NO TRACKS FOR YOU!")
catch let error
NSLog("Error Encoding AV Media: %@", error._domain)
很基本,嗯? “myData”变量包含已下载的 MP4 电影 (.m4v)。我将它写入一个临时文件,然后使用AVURLAsset 加载该临时文件,就像它说的那样。
问题是我永远无法播放 dangblammit 电影。该文件是它应该在的地方。我可以取出临时文件,添加“.m4v”扩展名,然后在 QT 查看器中播放。
我已经准备好接受一个耳光,然后是“ya darn eedjut!”,但我想知道我应该使用哪个“M”“RTFM”。
【问题讨论】:
只是为了记录,这部电影相当小。也许4MB。这是一部很小很小的电影,将在 240 处播放。 【参考方案1】:问题似乎出在这一行
let url = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(UUID().uuidString)
您应该添加文件的扩展名。
let videoName = UUID().uuidString + ".mp4"
let url = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(videoName)
希望能解决。
【讨论】:
是的,做到了。该死。这意味着我需要编写一堆代码来对数据进行分类。谢谢!以上是关于为啥 AVURLAsset 不加载文件?的主要内容,如果未能解决你的问题,请参考以下文章