我想在流缓冲区为空时重新连接到服务器.
我怎样才能触发的方法时,AVPlayer或AVPlayerItem缓冲区是空的?
我知道有playbackLikelyToKeepUp,playbackBufferEmpty以及playbackBufferFull检查缓冲区状态的方法,但那些不是回调.
是否有任何回调函数,或者我应该添加的任何观察者?
我有一些与之相关的问题AVPlayer:
当我们暂停AVPlayer通过时[player pause],AVPlayer保持从网络缓冲视频还是停止?我无法在apple的文档中获得与此相关的任何信息.此外,是否可以强制AVPlayer在暂停时保持缓冲,这样如果我们暂停的视频正在等待第一个视频结束,那么我们不会发现视频之间有任何差距?
在暂停AVPlayer我们可以有任何事件[player pause].
我们可以在AVPlayer几秒钟内显示静止图像吗?
谢谢
我正在开发一个Podcast应用程序.这会使用AVAudioSessionCategoryPlayback会话类型播放音频.这几乎可以完成我想要它做的所有事情.它会暂停其他播放的音乐,当有来电时它会被打断并且通常可以按照我想要的方式工作.
有一个例外.当播放更高优先级的音频时(例如,当运行逐向导航应用程序时),我的应用程序中的音频会在音量上下降,但会继续运行.这造成了两种不希望的声音的可怕混合.我宁愿选择我的应用程序中的音频在过度播放的声音中暂停,然后在完成后再次继续.
我尝试过更改不同的AVAudioSession属性AVAudioSessionCategoryOptionMixWithOthers,但这些只会改变低优先级声音与我的应用程序混合的方式.它们不会改变我的如何与更高优先级的声音混合.我也试过观察它的otherAudioPlaying属性,sharedSession但是当我将这些短片重叠时,这并没有引发变化.
有没有办法检测我的应用程序中的音频何时被躲避,以便我可以暂停它?或者,为了防止我的应用程序的音频被躲避,以便将这些其他声音视为中断?
谢谢.
我正在使用swift构建我的第一个IOS应用程序,我遇到了问题:如何在流式传输时获取音乐文件的长度(持续时间)?
我做了很多研究,并编写了一些代码来解决这个问题,但似乎我的代码还不够好.
func prepareAudio() {
audioLength = CMTimeGetSeconds(self.player.currentItem.asset.duration)
playerProgressSlider.maximumValue = CFloat(CMTimeGetSeconds(player.currentItem.duration))
playerProgressSlider.minimumValue = 0.0
playerProgressSlider.value = 0.0
showTotalSurahLength()
} // i prepare for get the duration and apply to UISlider here
func showTotalSurahLength(){
calculateSurahLength()
totalLengthOfAudioLabel.text = totalLengthOfAudio
} // get the right total length of audio file
func calculateSurahLength(){
var hour_ = abs(Int(audioLength/3600))
var minute_ = abs(Int((audioLength/60) % 60))
var second_ = abs(Int(audioLength % 60))
var hour = hour_ > 9 ? "\(hour_)" : "0\(hour_)"
var minute = minute_ > …Run Code Online (Sandbox Code Playgroud) 有没有办法从AVPlayer类获得音频测量级别?
我知道AVAudioPlayer会这样做,但它不像AVPlayer那样播放流式http .m3u8网址.
我正在切换MPMoviePlayerController到AVPlayer我需要对视频交换进行更细粒度的控制..mov我正在播放的文件MPMoviePlayerController播放得很好,但在切换到AVPlayer我听到视频中的音频后,视频只显示我添加AVPlayerLayer到的视图背景.这是我如何初始化AVPlayer.
self.player = [[AVPlayer alloc] initWithURL:video];
AVPlayerLayer* playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
playerLayer.frame = self.playerContainer.bounds;
[self.playerContainer.layer addSublayer:playerLayer];
Run Code Online (Sandbox Code Playgroud)
后来我发了一个.
[self.player play];
Run Code Online (Sandbox Code Playgroud)
播放视频时,我会听到音频,但看不到视频.我也尝试将zPosition设置为没有运气.
playerLayer.zPosition = 1;
Run Code Online (Sandbox Code Playgroud) 我能够成功创建一个播放器,但对最初的黑屏感到恼火.我决定覆盖UIImageView并在播放器启动后隐藏它.这很有用,但我不想为我的所有视频创建和维护图像的麻烦.
我能够通过播放获得我想要的确切结果,并在实例化之后立即暂停播放器.唯一的问题是,有时玩家的状态记录不正确,所以当我再次启动玩家时,状态被列为已经"正在播放",即使播放器已暂停.
我开始研究使用AVPlayerItem seekToTime但没有找到任何可行的解决方案.是否有"非hacky"方式实现这一目标?
我正在使用这种方法来保存AVPlayer的缓冲区数据以用于视频文件.找到这个问题的答案保存AVPlayer的缓冲区数据.
iPhone和iPad - iOS 8.1.3
我做了必要的更改来播放视频,它工作得非常好,除非我尝试播放一段很长的视频(长11-12分钟,大小约为85mb),视频将在连接完成加载后大约4分钟停止.我收到了playbackBufferEmpty事件和播放器项目停止通知.
这是代码的要点
viewController.m
@property (nonatomic, strong) NSMutableData *videoData;
@property (nonatomic, strong) NSURLConnection *connection;
@property (nonatomic, strong) AVURLAsset *vidAsset;
@property (nonatomic, strong) AVPlayerItem *playerItem;
@property (nonatomic, strong) AVPlayerLayer *avlayer;
@property (nonatomic, strong) NSHTTPURLResponse *response;
@property (nonatomic, strong) NSMutableArray *pendingRequests;
/**
Startup a Video
*/
- (void)startVideo
{
self.vidAsset = [AVURLAsset URLAssetWithURL:[self videoURLWithCustomScheme:@"streaming"] options:nil];
[self.vidAsset.resourceLoader setDelegate:self queue:dispatch_get_main_queue()];
self.pendingRequests = [NSMutableArray array];
// Init Player Item
self.playerItem = [AVPlayerItem playerItemWithAsset:self.vidAsset];
[self.playerItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我正在捕获10秒的视频并通过FTP上传到服务器,而其他用户可以通过Web服务响应中的URL观看此视频.
根据我的问题,我希望以小尺寸捕获质量好的视频,以便通过FTP上传视频.现在我正在使用.mp4 video formate上传视频,如果有人知道最好的视频形成,可以提高上传速度,然后指导我.
其次,我将所有上传的视频作为URL在Web服务的响应中获取.作为回应,有许多URL,所以我需要在队列中逐个播放视频,最终用户可以向左滑动以在NEXT视频上移动并向右滑动到之前的视频.你可以在这里看到我的代码.
每件事情都很好,但问题需要花费很多时间来上传和播放 (缓冲时间)视频.
请指导我这一点.
评论:在20 MB到1.6 MB的压缩视频中获得成功,因此上传速度位增加,现在正在处理
AVQueuePlayer队列中的播放视频,但有时会将视频卡在播放中.
在swift中处理一个项目,我正在尝试启动AVPlayer,由于某种原因,我告诉我一个例外说法
AudioHardware.cpp:1200:AudioObjectRemovePropertyListener:AudioObjectRemovePropertyListener:没有给定ID为0的对象.
我想问题出在我的网址上.这是我的代码
func initPlayer() {
let url:NSURL = NSURL(string:"https://purelight1-163000.appspot.com/api/user/v2/media/track/60/sample")!
self.playerItem = AVPlayerItem(url: url as URL)
self.player=AVPlayer(playerItem: self.playerItem!)
let playerLayer=AVPlayerLayer(player: self.player!)
playerLayer.frame = CGRect(x: 0, y: 0, width: 10, height: 50) // actually this player layer is not visible
self.view.layer.addSublayer(playerLayer)
}
Run Code Online (Sandbox Code Playgroud) avplayer ×10
ios ×10
iphone ×4
objective-c ×3
avfoundation ×2
swift ×2
avplayeritem ×1
ftp ×1
swift4 ×1