AVFoundation - 视频没有在 AVplayer 的 AVMutablecomposition 中播放
Posted
技术标签:
【中文标题】AVFoundation - 视频没有在 AVplayer 的 AVMutablecomposition 中播放【英文标题】:AVFoundation - Video didn't play in AVMutablecomposition with AVplayer 【发布时间】:2012-01-12 11:46:28 【问题描述】:我正在使用 AVMutablecomposition 使用 AVplayer 播放在线视频文件。当我在浏览器上播放视频时,视频播放非常好,但我无法在我的 iPad 上播放。
代码如下:
self.composition = [AVMutableComposition composition];
NSURL *urlVideo = [NSURL URLWithString:@"video location"];
AVURLAsset *videoAsset = [[AVURLAsset alloc]initWithURL:urlVideo options:nil];
AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
NSError *error = NULL;
AVAssetTrack *videoTrack = [[videoAsset tracksWithMediaType:AVMediaTypeVideo]objectAtIndex:0];
CMTimeRange x = CMTimeRangeMake(kCMTimeZero, [videoAsset duration]);
[compositionVideoTrack insertTimeRange:x ofTrack:videoTrack atTime:kCMTimeZero error:nil];
以及设置AVPlayer的代码:
AVPlayerItem *playerItem = [[AVPlayerItem alloc]initWithAsset:composition];
self.player = [[AVPlayer alloc]initWithPlayerItem:playerItem];
AVPlayerLayer *layerVideo = [AVPlayerLayer playerLayerWithPlayer:self.player];
layerVideo.frame = self.view.layer.bounds;
layerVideo.backgroundColor = [UIColor orangeColor].CGColor;
layerVideo.position = CGPointMake(1024/2, 768/2-10);
[self.view.layer addSublayer:layerVideo];
[self.player play];
如果我使用“AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:videoAsset];”而不是“AVPlayerItem *playerItem = [[AVPlayerItem alloc]initWithAsset:composition];”然后我可以看到视频正在播放。
有人知道如何使用带有 AVMutablecomposition 的 AVplayer 播放视频吗?
【问题讨论】:
【参考方案1】:您的代码缺少一些错误检查,但可以按原样运行。
除非您使用的是 iPad,否则此行将使播放器离开屏幕:
layerVideo.position = CGPointMake(1024/2, 768/2-10);
如果是这种情况,请尝试正确的位置。
【讨论】:
谢谢,但实际上在我的部署中,我为 layerVideo 添加了 bg 颜色,我可以看到该图层已添加到屏幕(没有播放视频) 您可以看到背景颜色,但视频仍然可能不在屏幕上。尝试使用带音频的视频或向图层添加边框(以检查整个图层是否在屏幕上)。您发布的代码在 ios 5 中运行良好。以上是关于AVFoundation - 视频没有在 AVplayer 的 AVMutablecomposition 中播放的主要内容,如果未能解决你的问题,请参考以下文章
音量控制 - 使用 AVFoundation、MPMovieController 的 http straming 文件的 UI 滑块
iOS - AVFoundation - 是不是可以将整个视频设置为慢动作?