小编pla*_*nic的帖子

从视频生成缩略图 - ios7

我使用它作为参考:从视频网址获取缩略图或在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)

video objective-c thumbnails mpmovieplayercontroller ios7

5
推荐指数
2
解决办法
1万
查看次数

使用 for_each 修改 std 容器(即使你不应该)

我正在学习 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)

c++ stl

5
推荐指数
1
解决办法
4719
查看次数

批处理文件 - 不带双引号的 echo 语句

所以,我不明白这部分:

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 允许上面没有双引号的代码?我会很高兴的。谢谢...

batch-file

2
推荐指数
1
解决办法
1941
查看次数