美文网首页
如何优雅的把视频转换成LivePhoto格式

如何优雅的把视频转换成LivePhoto格式

作者: 曾柏超 | 来源:发表于2017-10-17 14:42 被阅读0次

今天因为某些原因,up打算把一个视频当做手机livePhoito锁屏壁纸
然后先感谢tako这位日本小伙伴的帮助

http://gadget.takoweb.com

up也在苹果商店上看到了很多这种软件
然鹅...
想要解锁一些高级功能是要收费的!
然后up就想既然身为高贵的iOS开发者(捂脸笑)
就自己研究了一下
其实这个livePhoto锁屏壁纸 主要是依赖一个iOS11 中一个<photos.framework>中的PHPhotoLibrary 和 PHLivePhoto 以及 <AVFoundation.framework> AVAssetExportSession 这个类

--------------------------分割线----------------------

格式转换


#pragma mark - Segue
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    
    // We don't need to check. But to make sure...
    if ([identifier isEqualToString:@"next"]) {
        
        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:@"Generating..." preferredStyle:UIAlertControllerStyleAlert];
        [self presentViewController:alertController animated:YES completion:nil];
        
        BOOL __block ret = NO;
        
        // Generate UUID
        self.genUUID = [[NSUUID UUID] UUIDString];
        NSLog(@"genUUID: %@", self.genUUID);
        
        do {
            // Generate image.
            {
                ret = [self generateStillImage:CMTimeGetSeconds([self.videoPlayer currentTime]) url:(AVURLAsset *)self.playerItem.asset];
                if (ret == NO) break;
            }
            
            // Generate movie.
            {
                // Remove temporary files
                [self removeFile:PATH_TEMP_FILE];
                [self removeFile:PATH_MOVIE_FILE];
                
                // First, save movie to app storage.
                AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:self.playerItem.asset presetName:AVAssetExportPresetPassthrough];
                exportSession.outputFileType = [[exportSession supportedFileTypes] objectAtIndex:0];
                
                // NSLog(@"%@", [[exportSession supportedFileTypes] description]);
                
                exportSession.outputURL = [NSURL fileURLWithPath:PATH_TEMP_FILE];
                
                dispatch_semaphore_t __block semaphore = dispatch_semaphore_create(0);
                [exportSession exportAsynchronouslyWithCompletionHandler:^{
                    if (exportSession.status == AVAssetExportSessionStatusCompleted) {
                        NSLog(@"export session completed");
                    } else {
                        NSLog(@"export session error: %@", exportSession.error);
                        ret = NO;
                    }
                    dispatch_semaphore_signal(semaphore);
                }];
                dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
                if (ret == NO) break;
                
                // Second. add metadata to movie.
                QuickTimeMov *qtmov = [[QuickTimeMov alloc] initWithPath:PATH_TEMP_FILE];
                [qtmov write:PATH_MOVIE_FILE assetIdentifier:self.genUUID];
                
                ret = [[NSFileManager defaultManager] fileExistsAtPath:PATH_MOVIE_FILE];
                if (ret == NO) break;
            }
            ret = YES;
            
        } while (NO);
        
        [alertController dismissViewControllerAnimated:YES completion:nil];
        
        if (ret)
        {
            // Go to next screen.
            return YES;
        }
        else
        {
            UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"" message:@"error" preferredStyle:UIAlertControllerStyleAlert];
            [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
            [self presentViewController:alertController animated:YES completion:nil];
        }
    }
    
    return NO;
}


只有成为终身学习才能走的更远~

https://github.com/tako0910/LivePhotoMaker

相关文章

  • 如何优雅的把视频转换成LivePhoto格式

    今天因为某些原因,up打算把一个视频当做手机livePhoito锁屏壁纸然后先感谢tako这位日本小伙伴的帮助 h...

  • 怎样在线把视频转gif?

    gif由于它的体积小,成像相对清晰,而大受欢迎。如何把视频转换成gif格式呢?在线如何转换?还不知道如何把视频转换...

  • 如何将视频格式转换成mp4?

    如何将视频格式转换成mp4?视频格式想要转换成mp4格式其实操作不难的,这边借助下转易侠视频格式转换器就可以...

  • 如何把mp4视频转换成avi格式?

    如何把mp4视频转换成avi格式?在日常的生活或工作中,我们最常用到的视频格式就是mp4格式,但是mp4格式...

  • 如何把RMVB格式文件转换成MP4

    如何把RMVB格式文件转换成MP4,才能将手机上的rmvb视频转换成可以在移动设备中观看的mp4视频。现在的移动设...

  • 视频的格式如何转换?

    众所周知,视频的格式都是可以相互转换的,可以把rmvb格式的视频转换成MP4格式的视频,视频格式的转换方法很简单,...

  • iOS视频推流格式转换

    视频采集会得到格式为CMSampleBufferRef的视频包,视频推流一般把视频流转换成flv格式 (1)首先将...

  • 如何迅速的转换视频格式?

    视频的格式都是可以转换的,可以转换成mp4格式,也可以转换成其它视频格式,视频格式的转换由专门的软件进行,迅捷视频...

  • 快速转换音视频格式方式

    简介 视频的格式都是可以转换的,可以转换成mp4格式,也可以转换成其它视频格式,视频格式的转换由专门的软件进行,迅...

  • 视频格式转换的方法是什么?

    视频的格式一般都是可以转换的,比如说将rmvb格式的转换成mp4格式的视频,将avi格式的视频转换成3gp的等等这...

网友评论

      本文标题:如何优雅的把视频转换成LivePhoto格式

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