合成视频

// 合成 我的视频大小都是一样的 所以没有对他们进行缩放裁剪等操作

- (void)mergeAndExportVideos {

if (videoArray.count==0) {

return;

}

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

AVMutableComposition *mixComposition = [[AVMutableComposition alloc] init];

  /// 从mixComposition取出音视频 轨道

AVMutableCompositionTrack *audioTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];

AVMutableCompositionTrack *videoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];

CMTime totalDuration = kCMTimeZero;

NSError *error = nil;

for (int i = 0; i < [videoArray count]; i++) {

AVAsset *asset = [AVAsset assetWithURL:[[NSURL alloc] initFileURLWithPath:videoArray[i]]];

[audioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,asset.duration)

ofTrack:[[asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]

atTime:totalDuration

error:nil];

[videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,asset.duration)

ofTrack:[[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]

atTime:totalDuration

error:&error];

totalDuration = CMTimeAdd(totalDuration, asset.duration);

}

  /// 合成视频文件存储的路径

NSString *path = [self getVideoMergeFilePathString];

NSURL *mergeFileURL = [NSURL fileURLWithPath:path];

AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPreset640x480];

exporter.outputURL = mergeFileURL;

exporter.outputFileType = AVFileTypeQuickTimeMovie;

exporter.shouldOptimizeForNetworkUse = YES;

[exporter exportAsynchronouslyWithCompletionHandler:^{

for (NSString *path in videoArray) {

[self delFromLocal:path];

}

[videoArray removeAllObjects];

//            [self savePhotoCmare:path];//写入相册

}];

});

}

时间: 2024-08-29 19:48:20

合成视频的相关文章

IOS 视频分解图片、图片合成视频

在IOS视频处理中,视频分解图片和图片合成视频是IOS视频处理中经常遇到的问题,这篇博客就这两个部分对IOS视频图像的相互转换做一下分析. (1)视频分解图片 这里视频分解图片使用的是AVAssetImageGenerator,利用这个class可以很方便的实现不同时间戳下,视频帧的抓取.注意一般这种视频分解图片帧的方法都是放在子线程中的,而UI更新操作都是放在主线程中的.下面来看看核心代码: _imageGenerator = [[AVAssetImageGenerator alloc] in

mencoder把图片和音频文件合成视频

Mencoder可以轻松把图片合成视频文件,也可以图片和音频文件合成视频文件. 文件如下: Jpg文件:1.jpg,2.jpg..10.jpg Mp3文件:audio.mp3 时间为03:33 合成的文件名为OK.avi mencoder mf://*jpg -mf fps=1/22:type=jpg -ovc lavc -oac copy -audiofile audio.mp3 -o OK.avi 上面的fps是非常有意义的参数,可以让图片和音频的时长大约合上,感谢mencoder技术这种样

用MATLAB将照片合成视频或者GIF图片、以及Photoshop制作GIF图片

用MATLAB将照片合成视频或者GIF图片.以及Photoshop制作GIF图片 一.用MATLAB将照片合成视频(我使用的MATLAB是2015版本的) (1).你需要需要合成视频的图片. 所有照片放在一个文件夹里面因为是使用Matlab的dir函数读取照片,所以读取时,你要先设置好文件名:图片名称按照"001.002.003..."排列.否则图片显示顺序就会出错. 如果图片是用matlab在循环里使用saveas(gca,[Path,num2str(i)],'jpg');自动保存的

视频分解图片,图片合成视频

转载自: http://blog.csdn.net/ioswyl88219/article/details/18152419 视频视频分解视频合成AVAssetImageGenerato 工作当中用到了相关的技术,现在特别记录一下 分解视频 [objc] view plaincopyprint? <span style="font-size:18px;"> //分解视频 - (void)resolveMovWithUrl:(NSURL *)movUrl{ //得到url的资

ios 视频编辑,添加文字、图片(CA动画)水印,合成视频

参考link: 1,http://stackoverflow.com/questions/15932041/how-can-i-add-a-watermark-in-a-captured-video-on-ios(添加水印) 2,https://abdulazeem.wordpress.com/2012/04/02/video-manipulation-in-ios-resizingmerging-and-overlapping-videos-in-ios(合成视频) 3,http://www.

OpenCV学习 —— 图片集合成视频

这个很简单,没什么好说的...这里给出学习手册: 1.官方教程:https://docs.opencv.org 2.这个是一些video相关的API参考:https://docs.opencv.org/trunk/dd/d9e/classcv_1_1VideoWriter.html 3.一个简单的例子实现将图片集合成视频:https://docs.opencv.org/trunk/d5/d57/videowriter_basic_8cpp-example.html#a5 我的测试代码: #inc

【人脸识别0】视频分解图片与图片合成视频

一,引言 目标:这小节主要通过两个demo熟悉视频分解图片与图片合成视频的OpenCV的应用 环境:python3.6+OpenCV3.3.1 二,示例 Demo1:视频分解图片 目标: 1.指定文件夹中读取视频文件 2.将视频文件分解为图片 3.将图片保存在指定文件夹中 # -*-coding:utf-8-*- #author: lyp time: 2018/8/8 # 视频分解图片 import cv2 cap = cv2.VideoCapture('E:/Envs/opencvdemo/o

c/c++_渐变动画制作_合成视频

1.渐变动画制作原理: 两幅图像加权相加,img = a*img1 + (1-a)img2,效果从img1变到img2,取值从1到0,取值间隔可以随意,间隔越小,视觉上越自然. 2.代码 (c/c++_渐变动画制作_合成视频) opencv版本是:3.4.5 #include <opencv2/opencv.hpp>#include <opencv2/opencv.hpp> using namespace cv; void gradient(cv::Mat& im1_src

C# 调用FFmpeg 根据图片合成视频

1.项目结构: 2.代码: using System; using System.Collections.Generic; using System.Diagnostics; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebFFmpeg { public partial class _Default : System.Web.UI.Page { protected void