【问题标题】: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];
你能帮帮我吗?
还有一件事可以做吗?
提前致谢。
【问题讨论】:
标签:
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,您需要在本地添加视频。