我正在开发一款适用于iPad的iOS应用程序,需要在屏幕的某些部分播放视频.我有几个视频文件需要按照编译时未给出的顺序互相播放.它看起来好像只是一个视频播放.从一个视频转到另一个视频是很好的,这是两个视频的最后一帧或第一帧显示的延迟,但是没有闪烁或没有内容的白色屏幕.视频不包含音频.考虑内存使用情况非常重要.视频具有非常高的分辨率,并且可以同时彼此相邻地播放几个不同的视频序列.
为了获得这个,我已经尝试了一些解决方案.它们列在下面:
在这个解决方案中,我有一个AVPlayer,只能在AVPlayerItem上使用AVComposition制作,AVComposition包含彼此相邻的所有视频.当我去特定的视频时,我会在下一个视频开始的构图中寻找时间.这个解决方案的问题是,当寻找时,播放器将快速显示它正在寻找的一些帧,这是不可接受的.似乎没有办法直接跳到合成中的特定时间.我尝试通过制作刚完成的视频中最后一帧的图像来解决这个问题,然后在搜索时显示在AVPLayer前面,最后在搜索完成后删除它.我使用AVAssetImageGenerator制作图像,但由于某种原因,图像的质量与视频不同,因此在视频上显示和隐藏图像时会有显着的变化.另一个问题是AVPlayer使用大量内存,因为单个AVPlayerItem包含所有视频.
此解决方案为每个视频使用AVPlayerItem,并在切换到新视频时替换AVPlayer的项目.这个问题是,当切换AVPlayer的项目时,它会在加载新项目时短时间显示白色屏幕.为了解决这个问题,可以使用在加载时将图像放在最后一帧的前面的解决方案,但仍然存在图像和视频的质量不同且值得注意的问题.
我尝试的下一个解决方案是让两个AVPlayer在彼此之上,轮流播放AVPlayerItems.因此,当玩家完成播放时,它将保留在视频的最后一帧.另一个AVPlayer将被带到前面(其项目设置为nil,因此它是透明的),并且下一个AVPlayerItem将被插入到该AVPlayer中.一旦加载它就会开始播放,两个视频之间顺畅交易的错觉将完好无损.此解决方案的问题是内存使用情况.在某些情况下,我需要同时在屏幕上播放两个视频,这将导致4个AVPlayers同时加载AVPlayerItem.这只是太多的记忆,因为视频可以分辨率非常高.
有没有人有一些关于整体问题和上面发布的尝试解决方案的想法,建议,评论或其他内容.
我正在开发一个使用iPod库播放一些歌曲的iPhone应用程序.我用以下代码加载歌曲.问题是,在设备与iTunes同步后立即运行此代码时出现问题.显然iPod库需要更新,需要一些时间.如果我在同步后立即转到iPod应用程序,我看到一条消息"正在更新库..".如果我在我的应用程序中调用"[查询项目]",那么我会得到一个空数组,表明库中没有歌曲.更新结束后,一切都很完美.有什么方法可以解决这个问题吗?也许是一种检测更新何时结束的方法.我试图听听NSNotifications,但是在更新完成时没有调用.
MPMediaQuery *query = [MPMediaQuery songsQuery];
// convert all items to abstracted media item
NSArray *items = [query items];
NSMutableArray *convertedItems = [[NSMutableArray alloc] initWithCapacity:[items count]];
for (MPMediaItem *item in items) {
REMediaItem *mediaItem = [[REMediaItem alloc] initWithMediaItem:item];
[convertedItems addObject:mediaItem];
[mediaItem release];
}
Run Code Online (Sandbox Code Playgroud)
我希望有人能帮帮忙.
彼得
我有一个iPhone应用程序,每个视图都是纵向的.我有一个带有一些HTML的UIWebview.是的,有一个html5标记的视频.当我播放该视频时,它仅以纵向播放.为了使它在横向上工作,我必须在viewcontroller中为shouldAutorotateToInterfaceOrientation返回YES,但我不希望viewcontroller旋转到横向.我只希望视频支持横向.
有可能的?
谢谢!
iphone ×2
avplayer ×1
ios ×1
ipod ×1
landscape ×1
mpmediaitem ×1
mpmediaquery ×1
objective-c ×1
orientation ×1
uiwebview ×1
video ×1