【问题标题】:Copy video from Resource to UIPasteboard将视频从资源复制到 UIPasteboard
【发布时间】:2016-02-18 11:27:52
【问题描述】:

我正在开发带有键盘扩展的自定义键盘。

我想将视频从我的资源文件夹复制到 UIPasteboard。为此我使用下面的代码,但没有运气

NSBundle *bundle = [NSBundle mainBundle];
NSString *moviePath = [bundle pathForResource:@"SampleVideo_1280x720_1mb" ofType:@"mp4"];
NSURL *movieURL = [NSURL fileURLWithPath:moviePath];
NSData *data = [NSData dataWithContentsOfURL:movieURL];
[[UIPasteboard generalPasteboard]setPersistent:YES];
[[UIPasteboard generalPasteboard] setData:data forPasteboardType:(NSString *)kUTTypeVideo];

你能帮帮我吗?

还有一件事可以做吗?

提前致谢。

【问题讨论】:

  • 不,我已经用 NSLog 检查了它不是 nil
  • @Maul 你用断点检查过吗?

标签: ios objective-c iphone keyboard uipasteboard


【解决方案1】:

您使用的 pasteboardType (kUTTypeVideo) 是针对一种没有声音的电影。这行不通。如果您使用该 pasteboardType 将 mp4 文件复制到粘贴板,然后将其粘贴到 iMessage 聊天字段中,则会显示它是一种未知且无法播放的格式。

改为使用 kUTTypeQuickTimeMovie 或 kUTTypeMPEG4。这将起作用。

另外,不需要将setPersistent设置为Yes;这是通用粘贴板,它是一种超越任何应用程序时空的系统粘贴板,因此您无需这样做。 :)

【讨论】:

    【解决方案2】:

    试试这个代码。它对我有用。

        let pb = UIPasteboard.generalPasteboard()
        let url: NSURL = NSBundle.mainBundle().URLForResource("\(tempArray[indexPath.row])", withExtension: "mp4")!
        let data1: NSData = try! NSData(contentsOfURL: url, options: NSDataReadingOptions.DataReadingMappedIfSafe)
    
        let data: NSData = NSData(contentsOfURL: url)!
        print(data)
        pb.persistent = true
        pb.setData(data1, forPasteboardType: "public.mpeg-4")
    

    如果您想从NSBundle 获取视频的 URL,您需要在本地添加视频。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 2012-03-26
      • 2017-08-22
      相关资源
      最近更新 更多