Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >像Vine一样将视频片段拼接成一个视频

像Vine一样将视频片段拼接成一个视频
EN

Stack Overflow用户
提问于 2013-06-25 17:30:37
回答 2查看 1.6K关注 0票数 7

我想使用UIImagePickerController录制多个视频片段,然后将它们拼接成一个视频,类似于Vine应用程序的操作方式。关于如何将视频剪辑组合成一个视频,有人能给我指出正确的方向吗?

EN

回答 2

Stack Overflow用户

发布于 2013-09-03 10:11:57

Ray Wenderlich的网站上有一个教程介绍了这一点。http://www.raywenderlich.com/13418/how-to-play-record-edit-videos-in-ios

票数 1
EN

Stack Overflow用户

发布于 2015-04-03 08:14:04

这是一个如何拼接视频的例子,部分基于Ray Wenderlich的博客。

代码语言:javascript
代码运行次数:0
复制
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  [appDelegate.playerLayer removeFromSuperlayer];

  if (self.firstAsset)
  {
    self.secondAssetURL = [info objectForKey:UIImagePickerControllerMediaURL];
    self.secondAsset = [AVAsset assetWithURL:self.secondAssetURL];
  }
  else
  {
    self.firstAssetURL = [info objectForKey:UIImagePickerControllerMediaURL];
    self.firstAsset = [AVAsset assetWithURL:self.firstAssetURL];
  }

  if (self.secondAsset)
  {
    CMTime recordTime = CMTimeMakeWithSeconds(self.recordTime, NSEC_PER_SEC);
    AVMutableComposition *mixComposition = [AVMutableComposition new];

    AVMutableCompositionTrack *videoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
    [videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, self.firstAsset.duration) ofTrack:[[self.firstAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:nil];
    [videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, self.secondAsset.duration)
                        ofTrack:[[self.secondAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:recordTime error:nil];

    AVURLAsset *firstAudioAsset = [[AVURLAsset alloc] initWithURL:self.firstAssetURL options:nil];
    AVURLAsset *secondAudioAsset = [[AVURLAsset alloc] initWithURL:self.secondAssetURL options:nil];

    AVAssetTrack *firstAudioTrack =  [[firstAudioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
    AVAssetTrack *secondAudioTrack = [[secondAudioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];

    AVMutableCompositionTrack *compositionAudioTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
    [compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, firstAudioAsset.duration) ofTrack:firstAudioTrack atTime:kCMTimeZero error:nil];
    [compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, secondAudioAsset.duration) ofTrack:secondAudioTrack atTime:recordTime error:nil];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *myPathDocs =  [documentsDirectory stringByAppendingPathComponent:
                             [NSString stringWithFormat:@"mergeVideo-%d.mov",arc4random() % 1000]];
    NSURL *url = [NSURL fileURLWithPath:myPathDocs];
    // 5 - Create exporter
    AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition
                                                                      presetName:AVAssetExportPresetHighestQuality];
    exporter.outputURL=url;
    exporter.outputFileType = AVFileTypeQuickTimeMovie;
    exporter.shouldOptimizeForNetworkUse = YES;
    [exporter exportAsynchronouslyWithCompletionHandler:^{
      NSLog(@"we are now exporting");
      int exportStatus = exporter.status;
      switch (exportStatus) {
        case AVAssetExportSessionStatusFailed: {
          // log error to text view
          NSError *exportError = exporter.error;
          NSLog (@"AVAssetExportSessionStatusFailed: %@", exportError);
          break;
        }
        case AVAssetExportSessionStatusCompleted: {
          NSLog (@"AVAssetExportSessionStatusCompleted");
          self.firstAssetURL = exporter.outputURL;
          self.firstAsset = [AVAsset assetWithURL:self.firstAssetURL];
          dispatch_async(dispatch_get_main_queue(), ^{
            [self layoutVideo:exporter.outputURL];
          });
          break;
        }
        default: { NSLog (@"didn't get export status"); break;}
      }

    }];
  }
  else
  {
    [self layoutVideo:[info objectForKey:@"UIImagePickerControllerMediaURL"]];
  }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17303779

复制
相关文章
PotPlayer 无损截取视频片段
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157856.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
2.5K0
Simon Says:使视频编辑像文本编辑一样简单
本次内容来自DEMUXED,演讲者是Simon Says的首席技术官Roderick Hodgson Roderick 向我们介绍了一种工具:simon says组件,以及其中的一些技术挑战。
用户1324186
2021/04/29
8510
Simon Says:使视频编辑像文本编辑一样简单
5G催化沉浸感升级,视频将像空气和水一样无处不在
大家好,我是来自快手的于冰。首先感谢来自世界各地的音视频技术专家们来到本次大会,很多人在这个会上相识、相知,还有不少志同道合的同学走到了一起创业,一起去做一些有挑战的事情。2016年的时候我刚到快手,在那个时候还没有LiveVideoStack,大家当时都看美国的Streaming MediaEast/West的内容,后来还出现了DEMUXED大会,今年更是新出MHV大会。而LiveVideoStack是我们中国自己的音视频技术垂直社区,非常难得。我觉得LiveVideoStack成功的因素主要有两点。一个是专业的人,这里聚集了行业最好的人,包括最好的编辑团队和最好的技术人;另一个是地位中立,所有人都可以来,所有人也都愿意来,所以在我看来这是一个非常好的交流平台。
LiveVideoStack
2019/10/28
7160
5G催化沉浸感升级,视频将像空气和水一样无处不在
将 mp4 视频切片成 ts 后使用 jsDelivr 加速制作 "视频床"
将 mp4 转为 ts 后, 使用 ffmpeg 将 ts 文件切片, 然后上传到 Github 的仓库里
Rikka
2022/01/20
9590
Turtle:让NVIDIA Jetson智能视频分析开发像画圈一样简单
Lady在NVIDIA Jetson开发大赛的所有参赛作品中看到一个有意思的项目——一个团队制作了一个APP软件,这个软件可以很方便地让你在NVIDIA Jetson TX2上进行DeepStream的开发! 之前我们曾经介绍过NVIDIA 推出的这款强大的SDK:DeepStram(提供智慧城市方案的宝宝们看过来,NVIDIA居然还有这样的平台)。它可以帮助开发人员快速构建高效、高性能的视频分析应用程序。所以对于开发智能视频分析应用场景方面,DeepStream几乎是必须要用到的。那么让我们看看这个团队到
GPUS Lady
2018/04/13
1.5K0
Turtle:让NVIDIA Jetson智能视频分析开发像画圈一样简单
ffmeg将多段视频合成一个视频「建议收藏」
要处理多段视频太费劲啦,如果直接把多段小视频合成一段长视频处理起来就会方便很多,类似剪辑之后的视频合并操作!!!
全栈程序员站长
2022/11/09
4.9K0
使用ffmpeg横向拓展拼接视频
既然是处理视频,我就想到了ffmpeg。查阅文档后,发现可以利用的组合滤镜功能(filter_complex)实现,特意记录下来
TDP-苏苏
2022/06/13
3.5K3
使用ffmpeg横向拓展拼接视频
视频 | Nature 新论文:机器人可以像动物一样进化了
机器人学习的过程就像是我们人类一样,反复练习,更新知识,不断试错,快速迭代,直到最后获得新的技能。
AI科技评论
2018/07/26
2920
视频 | Nature 新论文:机器人可以像动物一样进化了
JavaScript将数组拼接成一个字符串[通俗易懂]
将数组拼接成字符串,在JavaScript中,有两种方式。一种是Array对象提供的join()方法,另一种是Array对象提供的toString()方法。下面分别来介绍: join() 定义和用法: join() 方法用于把数组中的所有元素放入一个字符串。 元素是通过指定的分隔符进行分隔的。 用法:把数组中的所有元素放入一个字符串,默认以逗号分隔
全栈程序员站长
2022/08/18
1.5K0
TSINGSEE青犀视频通道FFmpeg获取视频片段的方法介绍
TSINGSEE青犀视频流媒体平台前端不仅仅可以对接摄像头,还可以接入硬盘录像机。在现有的一个项目中,项目团队提出需要对硬盘录像机的录像进行剪切处理,实现能够从所有的录像中找到指定时间点的录像并截取出来提供给需要的单位进行观看的功能,对该功能我们进行了研发。
TSINGSEE青犀视频
2021/09/01
6300
一款好用的视频打码工具 在线视频去水印、视频拼接、视频倒放、视频换封面
【软件介绍】一款好用的视频打码工具,主打功能是视频打码,附加功能有图片打码、在线视频去水印、视频拼接、视频倒放、视频换封面、视频添加背景音乐等功能。
素颜520
2023/04/20
1.3K0
一款好用的视频打码工具 在线视频去水印、视频拼接、视频倒放、视频换封面
[开源项目]基于FPGA的视频图像拼接融合
视频流的每个单独帧将具有对应于红色、绿色和蓝色的三个通道。视频帧中的颜色信息不会增强特征检测。此外,与单通道 8 位图像相比,3 通道 8 位图像的计算需要更多时间。因此,RGB 视频帧被转换为 8 位灰度图像。生成的灰度图像噪声更小,阴影细节更多,计算效率更高,如下图所示。
碎碎思
2022/06/06
3.5K0
[开源项目]基于FPGA的视频图像拼接融合
全景视频拼接关键技术
图像拼接(Image Stitching)是一种利用实景图像组成全景空间的技术,它将多幅图像拼接成一幅大尺度图像或360度全景图,图像拼接技术涉及到计算机视觉、计算机图形学、数字图像处理以及一些数学工具等技术。图像拼接其基本步骤主要包括以下几个方面:摄相机的标定、传感器图像畸变校正、图像的投影变换、匹配点选取、全景图像拼接(融合),以及亮度与颜色的均衡处理等,以下对各个步骤进行分析。
全栈程序员站长
2022/07/31
1.7K0
全景视频拼接关键技术
CVPR 2019 Oral 论文解读 | 利用事件相机将模糊视频还原成高速清晰视频
今天首度解读一篇CVPR19 oral论文,利用事件相机将模糊视频还原成高速清晰视频。该文利用了目前火热的事件相机,巧妙的利用多传感器之间的互补特性,且具有很好的推广应用价值。过去大家做图像的去模糊,一般只会考虑普通相机采集到的图片,通过估计模糊的核函数,来为图像做去模糊,而这里引入了一个高速的事件相机,通过两个有互补特性的sensor, 为其特性和两者采集数据之间的关系进行建模,把问题formulate成一个简单的非凸优化的问题,
AI研习社
2019/06/03
1.4K0
CVPR 2019 Oral 论文解读 | 利用事件相机将模糊视频还原成高速清晰视频
镁客请讲|来画视频朴孟军:AI加码动画短视频制作,让小白用户像制作PPT一样做动画视频
2016年,微博红人papi酱获得逻辑思维、真格基金等资本共计1200万融资的新闻迅速登上了各大媒体的头条。这一刻短视频究竟是不是一个风口,答案昭然若揭。后来,尽管伴随有撤资事件,但快手、抖音、西瓜视频、秒拍等短视频APP的水涨船高已经成为了不争的事实。
镁客网
2018/12/28
7380
镁客请讲|来画视频朴孟军:AI加码动画短视频制作,让小白用户像制作PPT一样做动画视频
建模示范视频EA-027/智慧公寓系统试看片段-视频+图片版
百度网盘下载试看片段:https://pan.baidu.com/s/1AR6G2QUf4F6uNkvWCMIKNA,提取码:umlc
用户6288414
2022/10/31
2250
建模示范视频EA-027/智慧公寓系统试看片段-视频+图片版
LeetCode 1024. 视频拼接(动态规划/贪心)
你将会获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。
Michael阿明
2021/02/19
5060
建模示范视频EA023/粮食拍卖系统试看片段-视频+图片版
百度网盘下载试看片段,https://pan.baidu.com/s/1oJAhi3UGXEI51eQdEN11OA,提取码:umlc
用户6288414
2022/05/27
2600
建模示范视频EA023/粮食拍卖系统试看片段-视频+图片版
建模示范视频EA-028/高压注射器试看片段-视频+图片版
百度网盘下载试看片段:https://pan.baidu.com/s/1y8YkGeuLaZqQXMdB2ALXZA,提取码:umlc
用户6288414
2022/10/31
2400
建模示范视频EA-028/高压注射器试看片段-视频+图片版
点击加载更多

相似问题

点击并保存像Vine这样的视频

21

当我们像vine和insatagram一样滚动时,如何播放视频?

14

拼接视频

23

如何获取Vine视频url

13

Opencv视频拼接

26
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档