コンポジションにオーディオを追加すると、avplayer がビデオ アセットを表示しないという問題に苦労しています。
現在のコードは次のとおりです。
- (void)viewDidLoad
{
[super viewDidLoad];
AVMutableComposition *composition = [[AVMutableComposition alloc] init];
AVURLAsset *videoAsset = [[AVURLAsset alloc]initWithURL:[NSURL URLWithString:@"http://xxx.xxx.xxx/xxx.mp4"] options:nil];
AVURLAsset *audioAsset = [[AVURLAsset alloc]initWithURL:[NSURL URLWithString:@"http://xxx.xxx.xxx/xxx.mp3"] options:nil];
AVMutableCompositionTrack *cmpTrackVideo = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVMutableCompositionTrack *cmpTrackAudio = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetTrack *clipVideo = [[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
AVAssetTrack *clipAudio = [[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
[cmpTrackVideo insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:clipVideo atTime:kCMTimeZero error:nil];
[cmpTrackAudio insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioAsset.duration) ofTrack:clipAudio atTime:kCMTimeZero error:nil];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:composition];
self.player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
[playerLayer setFrame:self.view.bounds];
[self.view.layer addSublayer:playerLayer];
[self.player play];
}
私もplayerItem.videoComposition
やavmutablevideocompositioninstruction
などの方法を試しました...運が悪いです。
何がこれを引き起こしているのか、誰にも手がかりがありますか?
入力、ヒント、例などをいただければ幸いです。
宜しくお願いします、ネノ