iOS视频图片裁剪

热门标签

,

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

短视频

抖音轮播

  • 采用封装JPVideoPlayer,实现视频列表流畅滑动,上下滑动可切换视频列表
  • 监听scrollView代理方法,通过监听scrollView.contentOffset.yscrollViewWillBeginDragging的self.lastcontentOffset.y 判断上下滑动,

视频裁剪

  • 根据时长:startTime和stopTime
  • 先判断时长有没有超过设定值-超过设置值,Toast提示
  • 未超过
  • 先判断是否被裁剪
  • 没有被裁剪则直接调用代理方法导出
  • 被裁剪
  • 1.获取开始时间和结束时间
  • 2.创建AVMutableComposition实例(判断是否有声音,有的话加入声音采集 AVMutableCompositionTrack:音频通道)
  • 3.视频通道 工程文件中的轨道,有音频轨、视频轨等,里面可以插入各种对应的素材
  • 3.1 AVMutableVideoCompositionInstruction 视频轨道中的一个视频,可以缩放、旋转等
  • 3.2 AVMutableVideoCompositionLayerInstruction 一个视频轨道,包含了这个轨道上的所有视频素材
  • 4.调整视频方向根据videoAssetTrack.preferredTransform UIImageOrientation
  • 5.AVMutableVideoComposition:管理所有视频轨道,可以决定最终视频的尺寸,裁剪需要在这里进行
  • 6.视频文件输出通过AVAssetExportSession
AVMutableVideoComposition * mainCompositionInst = [AVMutableVideoComposition videoComposition];

CGSize naturalSize;
naturalSize = originVideoSize;
int64_t renderWidth = 0, renderHeight = 0;
if (videoSize.height == 0.0 || videoSize.width == 0.0) {
    renderWidth = naturalSize.width;
    renderHeight = naturalSize.height;
} else {
    renderWidth = floor(videoSize.width / 16) * 16;
    renderHeight = floor(videoSize.height / 16) * 16;
}

mainCompositionInst.renderSize = CGSizeMake(renderWidth, renderHeight);
mainCompositionInst.instructions = [NSArray arrayWithObject: mainInstruction];
mainCompositionInst.frameDuration = CMTimeMake(1, 30);

图片裁剪

  • 1.图片截取方式?
  • 拖动选取框采取pan手势动态改变选取框的centerY值
  • 生成图片通过DrawRect
// 进行生成图片
- (void)deployTrimImage{
    CGRect trimRect = [self convertRect:self.boundView.frame toView:self.showImageView];
    self.frontPageImage = [self imageFromView:self.showImageView atFrame: trimRect];
}
//获得某个范围内的屏幕图像
- (UIImage *)imageFromView: (UIView *)theView atFrame:(CGRect)r
{
    CGSize sizeR = theView.bounds.size;
    // For good UI  - 防止右侧白边
    sizeR.width += 10;

    //获取上下文范围
    UIGraphicsBeginImageContext(sizeR);
    //呈现
    [theView.layer renderInContext:UIGraphicsGetCurrentContext()];
    //根据当前上下文生成图片
    UIImage *allImage = UIGraphicsGetImageFromCurrentImageContext();
   //根据CGRect裁剪图片
    UIImage *partImage = [UIImage imageWithCGImage:CGImageCreateWithImageInRect(allImage.CGImage, r)];
    //释放
    UIGraphicsEndImageContext();
    return  partImage;
}
标签:

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《iOS视频图片裁剪》 发布于2019-11-06

分享到:
赞(0) 打赏

评论 抢沙发

4 + 3 =


iOS视频图片裁剪

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?