【问题标题】:Split Video in Multiple Partition在多个分区中分割视频
【发布时间】:2014-06-16 12:06:07
【问题描述】:

我正在开发目标 C 中的 iOS 应用程序。

根据我的要求,我想将视频分成多个部分。

假设我有一个 50 秒的视频,我想将它分成 5 个部分,每个部分 10 秒。

如果你们有任何想法,请给我建议。

【问题讨论】:

标签: ios objective-c video avassetwriter avasset


【解决方案1】:

很好的问题。解决方案在这里...

-(void)splitSecondVideo
{
if (did<splitdivide){

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:_videourl options:nil];

AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *myPathDocs;
CMTime starttime;
CMTime duration;

    myPathDocs =  [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"SplitFinalVideo%d.mov",did]];
    double endt=CMTimeGetSeconds([asset duration]);
    NSLog(@"All Duration : %f",endt);
    double divide=CMTimeGetSeconds([asset duration])/splitdivide;
    NSLog(@"All Duration : %f",divide);

    starttime = CMTimeMakeWithSeconds(divide*did, 1);
    duration = CMTimeMakeWithSeconds(divide, 1);

NSFileManager *fileManager=[[NSFileManager alloc]init];
NSError *error;
if ([fileManager fileExistsAtPath:myPathDocs] == YES) {
    [fileManager removeItemAtPath:myPathDocs error:&error];
}

exportSession.outputURL = [NSURL fileURLWithPath:myPathDocs];
exportSession.shouldOptimizeForNetworkUse = YES;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
// Trim to half duration

CMTimeRange secondrange = CMTimeRangeMake(starttime, duration);

exportSession.timeRange = secondrange;
[exportSession exportAsynchronouslyWithCompletionHandler:^(void)
 {
     [self exportDidFinish:exportSession];
     did++;

     [self splitSecondVideo];

 }];

}} 

- (void)exportDidFinish:(AVAssetExportSession*)session {
if (session.status == AVAssetExportSessionStatusCompleted) {
    NSURL *outputURL = session.outputURL;
    NSLog(@"Before Exported");
    [self SaveVideoAtPathWithURL:outputURL];
}} 

其中 did=0.0 在 vi​​ewDidLoad 方法中。& splitdivide 是您要创建视频部分的值。在您的问题中 splitdivide=5 ; 注意:did和split的划分都是整数值

希望这有帮助....享受...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2016-09-08
    相关资源
    最近更新 更多