Tag: avplayer

iOS:AVPlayervideo预加载

我正在使用AVPlayer播放video。 他们的长度是短的,2-5秒。 他们以随机顺序播放。 问题是,当改变video,并开始播放一个新的video,设备滞后很短的时间,但我不想stream动的变化。 有没有办法用AVPlayer预载video?

AVPlayer不能在渐进式下载和stream媒体之间切换

我有一个处理stream式video的应用程序。 从.m3u8播放列表开始,它将创build一个AVAsset数组,并通过它翻转 [player replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithAsset:[assetItems objectAtIndex:index]]] 这工作正常,但在此之前,我想播放一个简短的MP4video使用渐进式下载。 我使用AVPlayer加载 AVAsset *prerollAsset = [AVAsset assetWithURL:prerollURL]; [player replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithAsset:prerollAsset]]; 它播放,但是当我像以前一样继续streamvideo时,我得到一个AVPlayerStatusFailed的状态,与AVPlayerItem中的错误The operation could not be completed 为了工作,我需要为(渐进式下载)预卷创build一个AVPlayer对象,然后创build一个全新的AVPlayer对象来开始播放streamvideo。 单个AVPlayer实例是否有可能无法播放渐进式下载video,然后是stream式video? 或者可能还有别的我做错了?

m3u8文件AVAssetImageGenerator错误

我正在使用AVPlayer播放.m3u8文件。 使用AVAssetImageGenerator使用以下代码从中提取图像: AVURLAsset *asset1 = [[AVURLAsset alloc] initWithURL:mp.contentURL options:nil]; AVAssetImageGenerator *generate1 = [[AVAssetImageGenerator alloc] initWithAsset:asset1]; generate1.appliesPreferredTrackTransform = YES; NSError *err = NULL; CMTime time = CMTimeMake(1, 2); CGImageRef oneRef = [generate1 copyCGImageAtTime:time actualTime:NULL error:&err]; img = [[UIImage alloc] initWithCGImage:oneRef]; 它总是给我错误: 错误域= AVFoundationErrorDomain代码= -11800“操作无法完成”UserInfo = 0x7fb4e30cbfa0 {NSUnderlyingError = 0x7fb4e0e28530“操作无法完成(OSStatus错误-12782。)”,NSLocalizedFailureReason =发生未知错误(-12782 ),NSLocalizedDescription =操作无法完成} 它适用于mp4,mov和所有主要的video扩展URL,但不适用于m3u8。 任何想法??

如何加载NSData到AVPlayerItem?

这是我的post关于如何在iOS中encryptionmp3文件的后续问题。 我将如何使用NSData而不是文件path/ URL加载到AVPlayerItem轨道? 谢谢

在其他video正在播放时录制video

我正在使用UIImagePickerController来录制video。 并使用AVPlayer播放video。 并添加AVPlayerLayer到UIImagePickerController's cameraOverlayView以便我可以在录制时看到video。 我的要求是 我需要在使用UIImagePickerController录制video的同时观看video 使用耳机,我需要从播放video听audio 需要录制我的声音录制video 只有我的声音应该被logging,但不能播放video的audio。 所有的东西都在工作,但是4.播放video的audio也与我的声音混合 如何处理这种情况? 我的最终目标是 出场的video是耳机 录音的input是耳麦的麦克风 请帮我完成这件事。

avplayer不玩url

我使用avplayer播放audio的url,但它不工作,我不知道我在哪里错了 NSString *radioURL = @"https://www.example.com"; radioPlayer = [AVPlayer playerWithURL:[NSURL URLWithString:radioURL]] ; // [radioPlayer seekToTime:kCMTimeZero]; NSLog(@"radio player %@",radioPlayer.currentItem); [radioPlayer play]; 任何帮助,将不胜感激。

使用AVPlayer自定义字幕

我能够在iOS 6上使用AVPlayer显示字幕轨道,但是我无法自定义它。 它只是显示相同的风格(小字体,白色)。 以下是我如何select字幕: AVMediaSelectionGroup *subtitle = [asset mediaSelectionGroupForMediaCharacteristic: AVMediaCharacteristicLegible]; [self.videoPlayer.currentItem selectMediaOption:subtitle.options[0] inMediaSelectionGroup: subtitle]; 而我正在试图自定义字幕: AVTextStyleRule *rule = [[AVTextStyleRule alloc] initWithTextMarkupAttributes:@{ (id)kCMTextMarkupAttribute_ForegroundColorARGB : @[ @1, @1, @0, @0 ], (id) kCMTextMarkupAttribute_ItalicStyle : @(YES)}]; self.videoPlayer.currentItem.textStyleRules = @[rule]; 无论是在select字幕之前还是之后放入此片段,结果都是一样的。 AVPlayer是用本地(文件)URL(mp4文件)创build的。 任何想法如何做到这一点?

AVPlayer不同步

我真的没有想法,所以我不得不再次问你们 我正在构build一个使用三个AVPlayer实例的iPhone应用程序。 他们都在同一时间玩,这是非常重要的。 我曾经运行这个代码: CMClockRef syncTime = CMClockGetHostTimeClock(); CMTime hostTime = CMClockGetTime(hostTime); [self.playerOne setRate:1.0f time:kCMTimeInvalid atHostTime:hostTime]; [self.playerTwo setRate:1.0f time:kCMTimeInvalid atHostTime:hostTime]; [self.playerThree setRate:1.0f time:kCMTimeInvalid atHostTime:hostTime]; 这工作完美。 但是前几天刚刚停止工作,三名选手被推迟了大概300-400毫秒(这是很大的方法,100毫秒以内的任何事情都可以)。 其中两个AVPlayer有一些audio处理,比“正常的”AVPlayer花费的时间要多一些,但之前使用过,以及currentTime属性告诉我,这些播放器被延迟,所以同步似乎失败。 我不知道为什么它停止工作,我没有真正改变的东西,但我使用的是一个观察者,我可以问self.playerX.currentTime属性,这让我延迟了大约.3 – .4秒。 ..我已经尝试重新同步播放器,如果延迟> .1f但延迟仍然存在。 所以我认为player1和2的audio处理不能对延迟做出响应,因为currentTime属性确实知道它们被延迟了(我希望你知道我的意思)。 也许你们中的一些人知道我为什么会有这么可怕的拖延,或者能够提供给我另外一个想法。 提前致谢!

AVPlayerItemVideoOutput.hasNewPixelBufferForItemTime无法正常工作

这是我第一个问题,所以不要太严厉。 我使用AVPlayer从网上播放video。 我使用附加在AVPlayer播放的AVPlayerItem上的AVPlayerItemVideoOutput输出当前帧。 要检查新的帧是否准备就绪,我调用[AVPlayerItemVideoOutput hasNewPixelBufferForItemTime] ,然后使用OpenGL ES输出。 所有的作品完美的,如果我读mp4,但如果我尝试读m3u8,它的作品约1秒(约30帧),但在这段时间后[AVPlayerItemVideoOutput hasNewPixelBufferForItemTime]开始只返回FALSE,所以当前帧不更新。 如果我在第一次出现问题之前使用[AVPlayer seekToTime]查找当前帧,则一切正常。 testingm3u8video我在这里使用生命: http://195.16.112.71/adaptive/3006a26a-9154-4b38-a327-4fa2a2381ae6.video/3006a26a-9154-4b38-a327-4fa2a2381ae6.m3u8 为了重现这个问题,我修改了Apple的示例AVPlayerDemo,这里是: https : //yadi.sk/d/T2aVGoKnWmf5Z 主要的变化是我调用[AVPlayerDemoPlaybackViewController更新]调用提及[AVPlayerItemVideoOutput hasNewPixelBufferForItemTime] 。 这个函数有静态variables计数器 ,它存储了成功的[AVPlayerItemVideoOutput copyPixelBufferForItemTime]调用的数量。 Video Url在[AVPlayerDemoPlaybackViewController setURL]中设置 ,它在函数的开头被硬编码。 默认情况下,它的值指向m3u8video,这再现了问题,在这种情况下, 计数器的平均值大约为30,在具有该索引的帧之后[AVPlayerItemVideoOutput hasNewPixelBufferForItemTime]仅返回FALSE。 在使用其他videoUrl的情况下(见[AVPlayerDemoPlaybackViewController setURL]的开头 – 有一个可以取消注释的替代Url),所有的帧都被成功读取。 任何帮助将不胜感激!

使用AVPlayer播放时如何将audio连接到蓝牙

我正在使用AVPlayer从url播放audio,但是当iPhone连接到蓝牙设备,它不是通过蓝牙播放,如何通过蓝牙播放,如果它连接,我看到在SO中的一些职位,但没有一个是明确解释。 以下是我的代码。 -(void)playselectedsong{ AVPlayer *player = [[AVPlayer alloc]initWithURL:[NSURL URLWithString:urlString]]; self.songPlayer = player; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:[songPlayer currentItem]]; [self.songPlayer addObserver:self forKeyPath:@"status" options:0 context:nil]; [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateProgress:) userInfo:nil repeats:YES]; [self.songPlayer play]; } – (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if (object == songPlayer && [keyPath isEqualToString:@"status"]) { if (songPlayer.status == AVPlayerStatusFailed) { […]