Bartek Uchanski、もう一度ありがとう、あなたの応答は正しい方向に私を指摘しました。
GoogleのYouTube iOS Player Helper APIをビデオ再生に使用する必要がありましたが、サムネイル(Google YouTube APIでは直接不可能と思われる)を抽出するには別の「シャドウ」mp4 XCDYouTubeClientライブラリとAVAsset/AVFoundationフレームワークの両方を利用して、サムネイル画像を抽出して保存することができます。 (残念ながら[player thumbnailImageAtTime:]は廃止されましたので、私の回避策は以下のとおりです)
1)XCDYouTubeClient APIを使用して、 YouTubeの11文字の動画IDからのmp4動画ストリームのURL。同じストリームURLのYouTube動画のHTMLページを解析することもできますが、XCDYouTubeClient APIを使用するだけで簡単に見つかりました。
2)ビデオストリームのURLを取得したら、AVAsset/AVFoundationフレームワークを使用してサムネイルを抽出します。
(私はここに私の実際のアプリのコードを人手不足ましたが、次のように一般的な概念である。)
NSString *videoid = @"9bZkp7q19f0"; // youtube 11 character video identifier
[[XCDYouTubeClient defaultClient] getVideoWithIdentifier:videoid completionHandler:^(XCDYouTubeVideo *video, NSError *error) {
if (video) {
// available youtube urls; e.g. itag=160 mp4 video only, 256x144
if (video.streamURLs[[NSNumber numberWithInt:160]]) {
// grab thumbnail from specified video stream @ specified time, e.g. @ 30 secs
AVAsset *asset = [AVAsset assetWithURL:[NSURL URLWithString:[[video.streamURLs[[NSNumber numberWithInt:160]] description] stringByRemovingPercentEncoding]]];
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
CGImageRef imageRef = [imageGenerator copyCGImageAtTime:CMTimeMakeWithSeconds(30.0,NSEC_PER_SEC) actualTime:NULL error:NULL];
UIImage *ytvideo_thumbnail = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
// save thumbnail to camera roll
UIImageWriteToSavedPhotosAlbum(ytvideo_thumbnail,nil,nil,nil);
}
}
}];
私は同じ問題に遭遇してきた、すなわち現在のビデオフレームの画面のスナップをつかむしようとしていますUIImageと私が見つけて試したすべてのソリューションは、デバイス上で黒いフレームを生成します(シミュレータ上では動作しますが、デバイス上では動作しません)。同じ質問をしている2つのURL(これに加えて)が2つありますが、誰も解決策がないようです: https://github.com/youtube/youtube-ios-player-helper/issues/60 https ://stackoverflow.com/questions/32095532/screenshot-of-my-app-shows-blank-youtube-video 解決策はありますか? –
このフレームワークをお試しください: https://cocoapods.org/pods/XCDYouTubeKit YouTube動画をMPMoviePlayerControllerに読み込むカスタムライブラリです。次に、方法[player thumbnailImageAtTime:]で特定のフレームをつかむことができます –
これを試して報告してくれます、ありがとうございます! –