我使用它作为参考:从视频网址获取缩略图或在iPhone SDK中获取数据
该方法使用MPMoviePlayerController类而不是AVFoundation,我想我也想使用它,因为人们说MPMoviePlayer方式比AVFoundation方式更快.
问题是,用于创建缩略图的方法[player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]在iOS 7.0中已弃用.
通过查看apple文档,其余支持的创建缩略图的方法是通过方法(void)requestThumbnailImagesAtTimes:(NSArray *)playbackTimes timeOption:(MPMovieTimeOption)option和(void)cancelAllThumbnailImageRequests.但是,正如方法签名所规定的那样,这些方法什么都不返回.那么如何访问UIImage这些方法创建的缩略图?
如果它有帮助,这就是我目前在代码方面所拥有的:
self.videoURL = info[UIImagePickerControllerMediaURL];
NSData *videoData = [NSData dataWithContentsOfURL:self.videoURL];
//Create thumbnail image
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:self.videoURL];
[player requestThumbnailImagesAtTimes:@[@1] timeOption:MPMovieTimeOptionNearestKeyFrame];
//UIImage *thumbnail = ???
Run Code Online (Sandbox Code Playgroud)
如何获得缩略图的UIImage引用?
编辑 我想出了如何为缩略图图像请求创建通知(使用此问题作为参考).但是,我意识到这个方法从主线程异步工作,所以我的通知处理程序方法似乎从未被调用过.
这就是我现在拥有的.
self.videoURL = info[UIImagePickerControllerMediaURL];
NSData *videoData = [NSData dataWithContentsOfURL:self.videoURL];
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:self.videoURL];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleThumbnailImageRequestFinishNotification:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:player];
[player requestThumbnailImagesAtTimes:@[@1] timeOption:MPMovieTimeOptionNearestKeyFrame];
Run Code Online (Sandbox Code Playgroud)
然后是我的处理程序方法:
-(void)handleThumbnailImageRequestFinishNotification:(NSNotification*)notification
{
NSDictionary *userinfo = [notification …Run Code Online (Sandbox Code Playgroud) 我正在学习 C++ 的自学课程,学习标准库的工作原理,我想了解这段代码是如何for_each工作的,特别是关于变异对象(与本机数据类型相反)。我意识到你不应该使用for_each这种方式,但这是为了学习。
我原以为这段代码会改变集合中的所有元素,但事实并非如此。
我的问题是: 1. 为什么这段代码不会改变集合?2.如何代码被修改,以便它会修改的设置?澄清一下:有没有办法保留for_each并让它操纵集合,或者这是不可能的并且transform必须使用其他一些方法(例如)?
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
class A {
int a;
public:
A(int a) : a(a) {}
int getA() const { return a; }
void setA(int a) { this->a = a; }
bool operator<(const A & b) const { return a<b.a; }
};
struct myprinter {
void operator()(const A & a) { cout << a.getA() …Run Code Online (Sandbox Code Playgroud) 所以,我不明白这部分:
echo " _________________________________________________________________ "
echo "| |"
echo "| The wall in front of you moved upwards and light shined so |"
echo "| |"
echo "| bright, but you could move. You walked towards the light. And |"
echo "| |"
echo "| from here, your adventure will start soon. We welcome you to |"
echo "| |"
echo "| Votre Monde, Franqais... |"
echo "|_________________________________________________________________|"
Run Code Online (Sandbox Code Playgroud)
所以……问题来了。如果我尝试删除双引号 ("),整个批处理文件会崩溃。我需要删除它,因为它破坏了游戏的设计。有没有办法让 echo 允许上面没有双引号的代码?我会很高兴的。谢谢...