gpt4 book ai didi

ios - 从服务器视频 url swift 中提取缩略图

转载 作者:搜寻专家 更新时间:2023-10-31 23:08:38 26 4
gpt4 key购买 nike

想要从视频网址获取缩略图,我遵循了大多数 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=服务器不正确配置。, NSLocalizedDescription=Operation Stopped

谁能指出我哪里做错了,或者这段代码只适用于本地视频?另外,如果有任何替代方案,请提出建议。

最佳答案

为了找到解决方案,我去了很多地方。

基本上,您必须先获取视频 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 以获取链接,然后使用该链接获取缩略图。

  • 注意:您必须将缩略图链接从“http”转换为“https”,否则它不会返回任何内容。从 JSON 中获取 url,将其拆分为带有分隔符“:”的组件,然后将“https:”与拆分 url 字符串的第二部分组合。

关于ios - 从服务器视频 url swift 中提取缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46911420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com