标签: avplayer

相当于AVPlayer中的MPMovieScalingMode?

使用MPMoviePlayerControllers,通过设置MPMovieScalingMode可以轻松缩放电影.(如MPMovieScalingModeFill,MPMovieScalingModeAspectFill)

使用AVPlayer/AVPlayerLayer,我似乎无法找到类似的东西.我自己必须这样做吗?如果是这样,我该如何开始呢?

mpmovieplayercontroller avfoundation ios avplayer

12
推荐指数
2
解决办法
3346
查看次数

AVAudioSessionDelegate在endInterruption处调用,但未调用beginInterruption

当应用程序启动并将委托设置为appDelegate时,我正在设置AVAudioSession.一切似乎都在工作(播放等),除了当电话接到电话时没有调用委托上的beginInterruption.当呼叫结束时,会调用endInterruption.

我唯一的想法是我以前使用的音频播放器代码基于AVAudioPlayer,但现在使用的是AVPlayer.用于处理中断的AVAudioPlayer委托的回调仍在那里,但它们以任何方式发生冲突似乎很奇怪.

ios avaudiosession avplayer ios6.0

12
推荐指数
1
解决办法
7016
查看次数

使用AVPlayer进行UI测试

我正在寻找一种方法来测试使用AVPlayer的应用程序.

如何加载视频文件?我试图记录操作,但在调用NSOpenPanel.runModal()时记录停止.

任何的想法?

cocoa avplayer xcode-ui-testing

12
推荐指数
0
解决办法
209
查看次数

使用AVPlayer实现流畅的视频清理

我试图AVPlayer通过UISlider搜索来实现流畅的视频清理,似乎Apple有技术问答并解释了如何实现这一点,但我的问题是如何使用此方法并使用UISlider更改播放器当前时间: stopPlayingAndSeekSmoothlyToTime(newChaseTime:CMTime)

这是我的代码:

//Play Intro Movie
let videoURL = Bundle.main.url(forResource: "intro", withExtension: "mp4")
player = AVPlayer(url:videoURL!)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.frame
view.layer.addSublayer(playerLayer)
//videoPlayer.play()


view.addSubview(slider)
slider.maximumValue = 0
slider.maximumValue = Float(CMTimeGetSeconds((player.currentItem?.asset.duration)!))
Run Code Online (Sandbox Code Playgroud)

这是Apple示例代码:

func stopPlayingAndSeekSmoothlyToTime(newChaseTime:CMTime)
    {
        player.pause()

        if CMTimeCompare(newChaseTime, chaseTime) != 0
        {
            chaseTime = newChaseTime;

            if !isSeekInProgress
            {
                trySeekToChaseTime()
            }
        }
    }




    func trySeekToChaseTime()
    {
        if playerCurrentItemStatus == .unknown
        {
            // wait until item becomes ready (KVO player.currentItem.status)
        }
        else if playerCurrentItemStatus …
Run Code Online (Sandbox Code Playgroud)

iphone xcode ios avplayer swift

12
推荐指数
2
解决办法
1976
查看次数

点击表格视图单元格中的视频以在视图控制器中打开它

tl;dr 我试图在 Twitter 应用程序中重新创建这个:https : //i.imgur.com/173CVyM.mp4

如您所见,Twitter 在提要(表格视图单元格)中播放视频,当视频被点击时,视频会平滑地过渡到它自己的视图控制器,而不会停止或缓冲视频。

我已经完成了在提要部分中播放的视频(在表格视图单元格中),但现在我被困在如何实际将视频平滑地转换为点击的视图控制器上。

在高层次上,我需要在这里做什么?

我当前的设置有一个AVPlayer实例作为每个表视图单元格的一部分。我会将AVPlayer实例传递给视图控制器并从那里继续播放视频吗?内存管理呢?我觉得AVPlayer每个表格视图单元格都有一个实例会导致一些问题,但我不完全确定。

作为第二个问题,如果我想忽略花哨的动画/过渡,当在表格视图单元格中点击视频时,我如何继续在视图控制器中无缝播放视频?

ios avplayer swift swift4

12
推荐指数
1
解决办法
193
查看次数

使用AVURLAssets进行AVPlayer和逐行视频下载

我们正在开发一款需要通过AVPlayer播放视频文件的应用.文件需要存储在用户的设备上,但也必须在下载时播放.

目前我们已经构建了一个下载模块,该模块使用ASIHTTPRequest库通过PHP获取视频文件(我们不希望媒体可以通过公共URL链接)并将它们异步写入磁盘.

然后我们根据AV Foundation Programming Guide设置AVPlayer ,使用AVURLAsset获取文件,使用资产制作AVPlayerItem,使用项目构建AVPlayer,然后将播放器设置为AVPlayerLayer.播放器在完全下载的视频文件中运行正常,并且还可以在模拟器中完美地运行逐步下载的文件.

不幸的是,在实际设备上,播放器的行为发生了变化,相反,它似乎只加载了一次视频而不会尝试从磁盘中获取新的数据包.结果是播放器将视频和音频播放到视频中的点,该点标记了资源加载时下载进度的位置(例如,如果缓冲了2MB的数据,则创建播放器,播放器将仅播放2MB的数据).因为它有视频的标题,播放器会很高兴地继续认为它在视频的整个持续时间内播放,但没有其他视频呈现在屏幕上.

最后一个问题是,如果将视频插入AVComposition并使用该视频创建AVPlayer,则渐进式视频将正常播放.这将是一个很好的解决方案(无论如何我们的应用程序都是必需的),除了我们的应用程序的客户端要求视频可以通过AirPlay在Apple TV上播放,AVCompositions无法播放.

有没有人知道是否有办法使用AVURLAssets构建的AVPlayer逐步下载视频文件?有没有办法强制播放器/ playerItem使用AVURLAsset从磁盘读取,就像它看起来像AVComposition一样,而不是看似在内存中缓存视频?

谢谢!

progressive-download ios avplayer avcomposition avurlasset

11
推荐指数
1
解决办法
5393
查看次数

应用程序激活后恢复AVPlayer视频播放

我从AVPlayer编写自定义播放器进行视频播放.根据Apple docs设置的视频层:

    self.player = [IPLPlayer new];
    self.player.playerLayer = (AVPlayerLayer *)self.playerView.layer;
Run Code Online (Sandbox Code Playgroud)

self.playerView是那些文档的常用类:

    @implementation PlayerView

+ (Class) layerClass {
    return [AVPlayerLayer class];
}

- (AVPlayer *)player {
    return [(AVPlayerLayer *)[self layer] player];
}

- (void)setPlayer:(AVPlayer *) player {
    [(AVPlayerLayer *) [self layer] setPlayer:player];
}
Run Code Online (Sandbox Code Playgroud)

问题是:当关闭应用程序(主页按钮)或阻止屏幕时,视频播放停止,当恢复仅恢复音频播放时,屏幕上的图像仍然是块屏幕之前的图像 - 它是完全静态的并且记录更改帧.

如何在屏幕被阻止后恢复视频播放?

似乎我必须注册通知,并在应用程序变为活动后恢复视频层:

    -(void)registerNotification
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(willEnterBackground)
                                                 name:UIApplicationWillResignActiveNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(didEnterForeground)
                                                 name:UIApplicationDidBecomeActiveNotification object:nil];
}

-(void)unregisterNotification
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}


-(void)willEnterBackground
{
    NSLog(@"willEnterBackground");
    [self.playerView willEnterBackground];
}

-(void)didEnterForeground
{
    NSLog(@"didEnterForeground");
    [self.playerView didEnterForeground];
}
Run Code Online (Sandbox Code Playgroud)

iphone ios avplayer avplayerlayer

11
推荐指数
2
解决办法
1万
查看次数

如何预加载AVPlayerItem

我知道当使用a AVQueuePlayer来播放AVPlayerItem对象列表时,播放器会预先加载队列中的下一个项目,以便在用户到达此项目时更快地重新加载.

问题是我需要更多地控制哪些项目预加载,例如我希望预先加载3首下一首歌曲和2首前一首歌曲并准备快速加载.

所以我想自己管理这些AVPlayerItem对象,我只是不确定如何预加载AVPlayerItem
例如,我如何预加载前30秒?

objective-c avfoundation ios avplayer

11
推荐指数
1
解决办法
5505
查看次数

如何在Swift AVPlayer中获取特定的视频区域?

我正在研究Swift基础MAC OS-X应用程序.用户将选择一个视频文件,NSView Controller将使用AVPlayerView播放视频.用户可以在AVPlayerView上绘制一个矩形,我已经实现了这个功能.如何将矩形中的选定区域视频显示到摄像机右下方的预览图层?

这是输出: 输出图片

这是代码:

var videoURL = NSURL() // The video file URL by the file chooser
var videoSize = NSSize() // Here the video resolution size will be kept i.e. 720*480
var player:AVPlayerView! // The AVPlayerView to play video

var cameraPreviewLayer:AVPlayerLayer! //The right bottom camera Preview Layer
var rectangleLayer:AVPlayerLayer! // The rectangle that will draw over AVPlayer while mouse dragging

var isClicked = false
var startPoint = NSPoint() // holds the starting point location …
Run Code Online (Sandbox Code Playgroud)

macos ios avplayer avplayerlayer swift

11
推荐指数
0
解决办法
2099
查看次数

在热点时全屏调整窗口大小时AVPlayer崩溃

我在一个应用程序上编码,用户可以观看各种各样的视频.我在按钮点击时全屏打开视频,用户可以使用播放控件来调整窗口大小.我遇到的问题是当用户通过热点共享他的互联网时,应用程序顶部有一个蓝色条.此时调整窗口大小会导致AVKit框架崩溃(我相信).使用Swift 2.3,Xcode 7.3.1.我的手机,iPhone 6s,使用iOS 10,我也尝试过iOS 9 iPhone 6 Plus,同样的问题.

碰撞:

Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<AVFullScreenPlaybackControlsViewController: 0x102933000> should have parent view controller:<AVPlayerViewController: 0x10212d800> but actual parent is:<AVFullScreenViewController: 0x10884d900>'
Run Code Online (Sandbox Code Playgroud)

我的代码:

private let playerController = AVPlayerViewController()
private var player: AVPlayer!

private func playVideo(media: Media) {

        player = AVPlayer(URL: NSURL(string: media.url)!)
        playerController.player = player

        presentViewController(playerController, animated: true, completion: {
            self.playerController.player?.play()
            self.playerController.delegate = self
        })

    }
Run Code Online (Sandbox Code Playgroud)

如果我不在我的手机上共享我的互联网(因此没有蓝色条),那么它工作正常,没有任何问题.有人设法隐藏这个蓝色条,或遇到类似的问题?

ios avplayer swift avplayerviewcontroller hotspot

11
推荐指数
1
解决办法
1109
查看次数