【发布时间】:2017-02-28 00:35:05
【问题描述】:
是否可以使用 两个 url 创建一个 AVAsset 对象,一个用于音频,另一个用于视频轨道?
我已经用AVMutableComposition 进行了尝试,但它似乎首先加载了整个内容并将其缓冲在某个地方,然后才能开始视频+音频播放。在AVComposition的文档中,它说基于文件的资产可以组合,但我需要一种方法来组合基于url的资产。
或者是否可以为AVComposition 设置一个选项,以便在加载整个内容之前开始播放?
编辑
我是这样尝试的:
NSDictionary *urlAssetOptions = @{AVURLAssetPreferPreciseDurationAndTimingKey: [NSNumber numberWithBool:NO]};
AVMutableComposition *composition = [AVMutableComposition composition];
NSURL *audioUrl = [NSURL URLWithString:@"http://..."];
AVURLAsset *audioAsset = [AVURLAsset URLAssetWithURL:audioUrl options:urlAssetOptions];
AVMutableCompositionTrack *audioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[audioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioAsset.duration) ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:kCMTimeZero error:nil];
NSURL *videoUrl = [NSURL URLWithString:@"http://..."];
AVURLAsset *videoAsset = [AVURLAsset URLAssetWithURL:videoUrl options:urlAssetOptions];
AVMutableCompositionTrack *videoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
[videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:nil];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:composition];
【问题讨论】:
-
最简单的方法..创建两个 AVAsset。\
-
@Gagan_iOS 那么我该如何使用这两个 AVAsset 创建 AVPlayerItem 对象?
标签: ios objective-c avplayeritem avurlasset avcomposition