想要从视频网址获取缩略图我遵循此代码,建议在大多数SO问题中使用:
import AVFoundation
private func thumbnailForVideoAtURL(url: NSURL) -> UIImage? {
let asset = AVAsset(URL: url)
let assetImageGenerator = AVAssetImageGenerator(asset: asset)
var time = asset.duration
time.value = min(time.value, 2)
do {
let imageRef = try assetImageGenerator.copyCGImageAtTime(time, actualTime: nil)
return UIImage(CGImage: imageRef)
} catch let error {
print(error)
return nil
}
}
然后我的viewdidload方法是这样的:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let url = NSURL(string: "https://www.youtube.com/watch?v=HrKwx8EdSAE")
if let thumbnailImage = generateThumnail(url!) {
print("hello");
self.imageView.image = thumbnailImage;
}
self.view.addSubview(imageView);
}
但是我的所有视频网址都出现了此错误:
Error Domain=AVFoundationErrorDomain Code=-11850 "Operation Stopped" UserInfo={NSUnderlyingError=0x7fb4a3c04870 {Error Domain=NSOSStatusErrorDomain Code=-12939 "(null)"}, NSLocalizedFailureReason=The server is not correctly configured., NSLocalizedDescription=Operation Stopped}
任何人都可以建议我在哪里做错了或者此代码只适用于本地视频?如果有任何替代方案,请建议。
答案 0 :(得分:0)
我去了很多地方找到了解决方案。
基本上,您必须首先获取视频ID的列表(如果需要),然后使用以下内容获取返回返回带有实际缩略图链接的json的页面。
以下是缩略图的api链接: https://api.dailymotion.com/video/x26ezrb?fields=thumbnail_medium_url,thumbnail_small_url,thumbnail_large_url
在上述URL中,“ x26ezrb”是视频ID,“ fields”属性定义缩略图的大小。使用视频ID获取各自的缩略图。
如果您点击此链接“ https://api.dailymotion.com/video/x26ezrb?fields=thumbnail_large_url”,将得到如下所示的json:
{“ thumbnail_large_url”:“ http://s1.dmcdn.net/HRnTi/x240-oi8.jpg”}
现在您要做的就是解析这个json以获取链接,然后使用该链接获取缩略图。