1

我一直在尝试将影片剪辑添加到项目中,但它不起作用。我已确保 *.mov 文件存在于文件目录中。

但是,如果我尝试在 movieNamed:@"blahblah.mov" 处添加初始剪辑,则效果很好。

不确定问题出在代码中还是我尝试使用的影片剪辑无效(文件不是太大或任何东西)。

可以解释问题吗?

这是代码

#import "C4WorkSpace.h"

C4Movie *movie;

@implementation C4WorkSpace

-(void)setup {
    movie = [C4Movie movieNamed:@"thinkdifferent.mov"];
    movie.width = self.canvas.width;
    CGPoint centerOfScreen = CGPointMake(self.canvas.width/2, self.canvas.height/2);
    movie.center = centerOfScreen;
    [self.canvas addMovie:movie];
}

@end

这是出现错误的代码环境的图像:

在此处输入图像描述

以及图像的直接链接:错误图像

4

1 回答 1

1

我查看了您发送给我的链接,并发现有几种不同的方式可能会导致您出错。

首先,我必须从该链接下载电影......但是,当我在 Safari 中这样做时,它出现了问题,如下所示:

  1. Safari 将链接下载为 mov 文件
  2. 该文件是 433kb ......非常小
  3. 这让我相信 Safari 正在下载的实际上是一个 .mov 容器
  4. 尝试使用 Safari 开发者扩展来挖掘网站的代码
  5. 只能从 Safari 下载 .mov 容器

我下载的实际上是一个容器,而不是实际的源电影,这在 C4 中从未起作用,因为它始终只是对电影的引用,而不是对象本身。

因此,我使用 Chrome 的开发人员工具对其进行了破解,并能够将文件保存为源文件。

  1. 在 Chrome 中,文件保存为 75.6MB 的 mp4
  2. 尝试将文件直接加载到 C4 项目中并且它有效。

以下代码适用于我:

#import "C4WorkSpace.h"

@implementation C4WorkSpace {
    C4Movie *m;
}

-(void)touchesBegan {
    if(m == nil) {
        m = [C4Movie movieNamed:@"iPhone.mp4"];
        m.shouldAutoplay = YES;
       [self.canvas addMovie:m];
     }
}

@end 

我推迟了电影的开始,因为它是一个大文件。您实际上并不希望将一堆这么大的文件直接放在您的项目中,而是为了测试它是否有效。我开始在其中创建电影,touchesBegan这样应用程序就不会在应用程序打开时陷入加载电影的困境。


好的,这实际上可能无法解决您的问题。因此,我通过以下步骤测试了从大电影源文件创建一个小剪辑:

  1. 在 Quicktime 中打开电影
  2. 将影片修剪为 12 秒剪辑(通过按 cmd+t 开始修剪作业)
  3. 导出修剪后的影片(cmd+shift+s,或文件 > 导出)
  4. 选择 iPad、iPhone 4、Apple TV 选项
  5. 导出 m4v
  6. 将其拖入我原来的项目中,重命名变量以匹配新文件
  7. 有用!

所以,我怀疑这个答案的第一部分可能是你挂断电话的地方。该文件实际上不是电影文件,而是指向其他媒体的指针。我之所以想到这一点是因为我记得当我为 Web 导出 Quicktime mov 时,它实际上创建了一个包含 .mov 文件的媒体文件夹,该文件引用了另一个文件夹中的一些其他媒体。

于 2013-09-27T18:09:19.930 回答