问题 在iOS中裁剪视频


我们可以裁剪图像。我们可以裁剪视频吗?


7229
2018-06-02 09:49


起源

嗨,你找到答案吗?我需要实现同样的目标 - SriPriya
@Priya,对不起,我没有得到任何答案。等待专家的线索或建议 - Anand
谢谢,如果我找到了,我会通知你 - SriPriya
谢谢,一旦找到它,我也会这样做。 - Anand
@Anand嗨,我来晚了。但你有没有设法找到这样做的方法?如果你这样做,请分享,因为我想学习。首先十分感谢。 - Unheilig


答案:


由于视频是一组图片,因此您可以在创建新视频后裁剪视频中的所有帧。 AVFoundation指南描述了一些任务: 全部放在一起:将视频帧捕获为UIImage对象 在此之后,您将裁剪图像并编写视频

您可以使用资产编写器生成QuickTime影片文件或   来自媒体的MPEG-4文件,例如样本缓冲区或静止图像。

有关详细信息,请参阅 AV基金会框架


7
2017-07-14 08:57



谢谢回答。你提供的链接非常好。通过使用CMSampleBuffer我得到图像,但如何将其转换为视频。 - Anand
“全部放在一起......”链接不再有效,是否有新的链接或其他人可以提供的教程 - iqueqiorio
@beryllium链接没有工作,所以downvoted。毫无疑问,你的答案是正确的。 - KDeogharkar
所有链接现在都在运行 - beryllium


[[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetLowQuality];
exportSession.outputURL = outputURL;
exportSession.shouldOptimizeForNetworkUse = YES;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;

CMTime start = CMTimeMakeWithSeconds(1.0, 600);
CMTime duration = CMTimeMakeWithSeconds(120.0, 600);
CMTimeRange range = CMTimeRangeMake(start, duration);
exportSession.timeRange = range;

[exportSession exportAsynchronouslyWithCompletionHandler:^(void){
               handler(exportSession);
               [exportSession release];}];

在这里,我们获得前2分钟的视频。


5
2017-08-30 05:48





您应该能够使用AVAssetExportSession,AVVideoComposition和AVVideoCompositionCoreAnimationTool执行此操作(并且只需使用您想要的定位设置CALayer层次结构)。不过,我不确定这是否是最有效的方法。


2
2017-07-17 03:43





它并不像图像那么简单

但它可能像视频的正确规范一样简单,但没有足够的信息。

在解码设置中,您可以按几何体操纵视频像素,即变形,挤压,拉伸以及播放器/浏览器设置,图像窗口或播放器窗口,您可以指定小玩家窗口和放大级别。如果您允许或禁止缩放/放大,您将强制进行非正确的绘制或黑条。

我会编码到正确的尺寸和平台以获得最佳质量,这些类型的修复都是'kludges',但它们可以在紧急情况下工作。我会抓住quicktime sdk并捅一下。


0
2017-07-17 03:32