美文网首页
iOS视频编辑笔记

iOS视频编辑笔记

作者: 林鹏_dev | 来源:发表于2021-03-04 09:46 被阅读0次

术语类

AVAsset:素材库里的素材; 
AVAssetTrack:素材的轨道; 
AVMutableComposition :一个用来合成视频的工程文件; 
AVMutableCompositionTrack :工程文件中的轨道,有音频轨、视频轨等,里面可以插入各种对应的素材; 
AVMutableVideoCompositionLayerInstruction:视频轨道中的一个视频,可以缩放、旋转等; 
AVMutableVideoCompositionInstruction:一个视频轨道,包含了这个轨道上的所有视频素材; 
AVMutableVideoComposition:管理所有视频轨道,可以决定最终视频的尺寸,裁剪需要在这里进行; 
AVAssetExportSession:配置渲染参数并渲染。

接下来就用这种类比的方式裁剪一个视频:

1.将素材拖入到素材库中
AVAsset *asset = [AVAsset assetWithURL:outputFileURL];
//素材的视频轨
AVAssetTrack *videoAssetTrack = [[asset tracksWithMediaType:AVMediaTypeVideo]objectAtIndex:0];
//素材的音频轨
AVAssetTrack *audioAssertTrack = [[asset tracksWithMediaType:AVMediaTypeAudio]objectAtIndex:0];

2.将素材的视频插入视频轨,音频插入音频轨

//这是工程文件
AVMutableComposition *composition = [AVMutableComposition composition];
 //视频轨道
AVMutableCompositionTrack *videoCompositionTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
 //在视频轨道插入一个时间段的视频
[videoCompositionTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAssetTrack.timeRange.duration) ofTrack:videoAssetTrack atTime:kCMTimeZero error:nil];
//音频轨道
AVMutableCompositionTrack *audioCompositionTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
 //插入音频数据,否则没有声音
[audioCompositionTrack insertTimeRange: CMTimeRangeMake(kCMTimeZero, videoAssetTrack.timeRange.duration) ofTrack:audioAssertTrack atTime:kCMTimeZero error:nil];

3.裁剪视频,就是要将所有视频轨进行裁剪,就需要得到所有的视频轨,而得到一个视频轨就需要得到它上面所有的视频素材

AVMutableVideoCompositionLayerInstruction *videoCompositionLayerIns = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:videoAssetTrack];[videoCompositionLayerIns setTransform:videoAssetTrack.preferredTransform atTime:kCMTimeZero];
//得到视频素材(这个例子中只有一个视频)
AVMutableVideoCompositionInstruction *videoCompositionIns = [AVMutableVideoCompositionInstruction videoCompositionInstruction];[videoCompositionIns setTimeRange:CMTimeRangeMake(kCMTimeZero, videoAssetTrack.timeRange.duration)];
//得到视频轨道(这个例子中只有一个轨道)
AVMutableVideoComposition *videoComposition = [AVMutableVideoComposition videoComposition];videoComposition.instructions = @[videoCompositionIns];videoComposition.renderSize = CGSizeMake(...);
//裁剪出对应的大小
videoComposition.frameDuration = CMTimeMake(1, 30);

4.导出

AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetMediumQuality];
exporter.videoComposition = videoComposition;exporter.outputURL = [NSURL fileURLWithPath:_outputFilePath isDirectory:YES];
exporter.outputFileType = AVFileTypeMPEG4;
exporter.shouldOptimizeForNetworkUse = YES;
[exporter exportAsynchronouslyWithCompletionHandler:^{     
          if (exporter.error) {       
              //...    
           }else{        
              //...         
          }   
 }];

相关文章

  • 『ios』视频编辑入门【画中画实现】改变视频尺寸与图片并排放置

    视频相关入门『ios』视频编辑入门 【视频背景音乐合成】『ios』视频编辑入门【添加水印】『ios』视频编辑入门【...

  • iOS视频编辑笔记

    术语类 接下来就用这种类比的方式裁剪一个视频: 2.将素材的视频插入视频轨,音频插入音频轨 3.裁剪视频,就是要将...

  • 『ios』视频编辑入门 【视频背景音乐合成】

    最近项目要搞视频编辑相关的东西。于是就有了这些文章。 视频相关入门『ios』视频编辑入门 【视频背景音乐合成】[h...

  • IOS视频编辑SDK

    iOS视频编辑SDK集视频拍摄和视频剪辑功能于一体,同时包含视频配音配乐、字幕特效、滤镜、转场等各种功能,全方位满...

  • iOS 视频编辑核心

    iOS 视频编辑核心架构 移动端视频音视频领域已经是一片红海,前一两年还能经常看到有新的短视频 app 冒出,在 ...

  • iOS音视频及相机相关

    IOS视频编辑功能详解上篇-添加水印 - http://www.hudongdong.com/ios/546.html

  • iOS 视频编辑之视频拼接

    原理及步骤: 1、新建一个视频的框架 2、往框架里面添加一条音频轨道和视频轨道 3、把需要拼接的视频片段循环读取出...

  • IOS音视频:视频编辑

    原创:知识点总结性文章创作不易,请珍惜,之后会持续更新,不断完善个人比较喜欢做笔记和写总结,毕竟好记性不如烂笔头哈...

  • 『ios』视频编辑入门【添加水印】

    视频相关入门『ios』视频编辑入门 【视频背景音乐合成】[https://www.jianshu.com/p/4e...

  • 锐动IOS带UI视频编辑SDK

    1编写目的 预期读者: 有视频编辑开发经验或者无经验的,打算或者正在使用“锐动iOS带UI视频编辑SDK”的相关工...

网友评论

      本文标题:iOS视频编辑笔记

      本文链接:https://www.haomeiwen.com/subject/owbhqltx.html