【问题标题】:how to merge video file one by one [duplicate]如何一一合并视频文件[重复]
【发布时间】:2012-09-10 11:45:28
【问题描述】:

可能重复:
Merge Two Video files in iPhone Application

我已经从服务器上下载了 40mb 的视频文件,分为多个拆分(2mb)。我正在使用NSURLConnection 我想将这 20 个拆分为单个视频文件。如何做到这一点在 iphone 框架中有任何 API 可以有人用代码解释我。 这是我的 connectionDidFinishLoading 方法

 - (void)connectionDidFinishLoading:(NSURLConnection *)connection {

NSString *fileName = [NSString stringWithFormat:@"%@",
                                      filePath];
[contentData writeToFile:fileName atomically:YES];

}

如果我这样写,我只会得到最后一个拆分文件。我的意思是 2mb 数据只有一些指导我如何做到这一点?

【问题讨论】:

  • @Abizern 他们已经使用了 AVAsset,但是这个用户正在尝试使用 File 处理程序进行合并,所以两个不同的场景
  • @KingofBliss 不管他在这里展示的方法 - 解决方案都在另一个 SO 帖子中。
  • @Abizern 我尝试了文件处理程序。文件将完全下载,但显示“电影的文件格式无法识别”
  • 我觉得这可能对你有用stackoverflow.com/questions/4002979/…

标签: iphone objective-c ios avfoundation


【解决方案1】:

我不确定 writeToFile 在这种情况下是否有效,

但要以附加模式添加文件,请使用以下代码,

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *documentTXTPath = [documentsDirectory stringByAppendingPathComponent:@"Notes.txt"];
NSString *savedString = textview.text;
NSFileHandle *myHandle = [NSFileHandle fileHandleForWritingAtPath:logPath];
[myHandle seekToEndOfFile];
[myHandle writeData:[savedString dataUsingEncoding:NSUTF8StringEncoding]];

删除代码,

[contentData writeToFile:fileName atomically:YES];

【讨论】:

  • 这不是一个字符串文件兄弟
  • 这就是我提到的,我不确定它是否适用于这种视频场景
  • 我的代码用于以附加模式创建文本文件。
【解决方案2】:
- (void) mergeVideos{
///... after getting hold or your assets....firstAsset, secondAsset

AVMutableComposition* mixComposition = [AVMutableComposition composition];

AVMutableCompositionTrack *firstTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo 
                                                                  preferredTracfirst:kCMPersistentTracfirst_Invalid];
[firstTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, firstAsset.duration) 
                    ofTrack:[[firstAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
                     atTime:kCMTimeZero error:nil];

AVMutableCompositionTrack *secondTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo 
                                                                   preferredTracfirst:kCMPersistentTracfirst_Invalid];

[secondTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, secondAsset.duration)
                     ofTrack:[[secondAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
                      atTime:kCMTimeZero error:nil];    

[secondTrack setPreferredTransform:CGAffineTransformMakeScale(0.25f,0.25f)]; 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 2019-12-18
    • 2015-04-03
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    相关资源
    最近更新 更多