标签: avplayerviewcontroller

如何在AVPlayerViewController中禁用音频和字幕设置

我想从播放器(iOS8,iOS9)中删除音频和字幕设置按钮:

AVPlayerViewController播放器的控件

播放器的控制器初始化:

            - (void) configureMoviePlayer {


                if(self.moviePlayerController == nil) {

                    self.moviePlayerController = [[AVPlayerViewController alloc] init];

                    [self.view setTranslatesAutoresizingMaskIntoConstraints:NO];
                    [self.moviePlayerController.view setTranslatesAutoresizingMaskIntoConstraints:NO];

                    [self.view addSubview: [self.moviePlayerController view]];

                    NSDictionary *views = @{ @"selfview" : self.view, @"movieControllerView" : [self moviePlayerController].view};

                    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[movieControllerView]|"
                                                                                      options:0
                                                                                      metrics:nil
                                                                                        views:views]];
                    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[movieControllerView]|"
                                                                                      options:0
                                                                                      metrics:nil
                                                                                        views:views]];
                }

            }
Run Code Online (Sandbox Code Playgroud)

收到流URL时,它将被传递到新的播放器实例:

 self.moviePlayerController.player = [AVPlayer playerWithURL:self.contentUrl];
 //self.moviePlayerController.showsPlaybackControls = YES;
 if([self.moviePlayerController respondsToSelector:@selector(allowsPictureInPicturePlayback)]) {                             

    self.moviePlayerController.allowsPictureInPicturePlayback = YES;
}
Run Code Online (Sandbox Code Playgroud)

WWDC视频中的示例不包含该按钮。有没有一种方法可以仅禁用单个按钮,或者获取默认工具栏按钮的数组并禁用特定按钮。

ios avplayerviewcontroller

5
推荐指数
1
解决办法
1051
查看次数

Swift AVPlayer不会播放器MP4:通过它播放按钮

在此输入图像描述

我试图在ios应用程序上播放来自本地文件系统的mp4视频.视频大约一个小时,可以快速播放.如果是来自网络,我可以播放mp4(NSURL(字符串:"http:domain.com/vid.mp4")).我正在播放如下视频:

    let steamingURL:NSURL = NSURL(string: video.filePath)! //valid path
    let player = AVPlayer(URL: steamingURL)
    player.allowsExternalPlayback = false

    PlayWorkoutViewController.playerController = AVPlayerViewController()
    PlayWorkoutViewController.playerController.player = player
    self.addChildViewController(PlayWorkoutViewController.playerController)
    self.view.addSubview(PlayWorkoutViewController.playerController.view)
    PlayWorkoutViewController.playerController.view.frame = videoContainerView.frame
    PlayWorkoutViewController.playerController.showsPlaybackControls = false
    player.play()
Run Code Online (Sandbox Code Playgroud)

我是否需要更改某些设置才能播放更长的视频?谢谢.

avfoundation ios avplayer avplayerviewcontroller

5
推荐指数
1
解决办法
2792
查看次数

在AVPlayer中显示播放控件

我能够运行视频,但是我无法看到像暂停和滑块这样的控制按钮与视频交互.询问类似的查询(见这里),但我没有按照答案.

objective-c avfoundation ios avplayer avplayerviewcontroller

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

如何使用AVPlayer进行基本身份验证从服务器播放视频文件?

我必须从服务器播放AVPlayer中的视频文件,但我还必须使用基本身份验证来播放此文件.这是我的代码

    NSMutableDictionary * headers = [NSMutableDictionary dictionary];
NSData *basicAuthCredentials = [[NSString stringWithFormat:@"username:password"] dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64AuthCredentials = [basicAuthCredentials base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)0];
[headers setValue:[NSString stringWithFormat:@"Basic %@", base64AuthCredentials] forKey:@"Authorization"];
NSURL *videoURL = [NSURL URLWithString:fileUrlString];
AVURLAsset * asset = [AVURLAsset URLAssetWithURL:videoURL options:headers];
AVPlayerItem * item = [AVPlayerItem playerItemWithAsset:asset];


AVPlayer *player = [AVPlayer playerWithPlayerItem:item];
AVPlayerViewController *playerViewController = [AVPlayerViewController new];
playerViewController.player = player;
playerViewController.delegate = (id)self;
[player play];
[self presentViewController:playerViewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

basic-authentication avplayer ios9 avplayerviewcontroller

5
推荐指数
1
解决办法
1733
查看次数

检测AVPlayerViewController完成按钮点击?

AVPlayer在ios中写插件.我需要知道用户何时单击" 完成"按钮AVPlayerViewController(我想知道用户何时关闭视频)并且我无法访问AVPlayerViewController对象.我检查了事件,发现只有AVPlayer设置为0的速率属性,但在暂停情况下,速率设置为0.我怎么弄清楚这两种情况?谢谢大家.

objective-c ios avplayer avplayerviewcontroller

5
推荐指数
1
解决办法
2785
查看次数

禁用AVPlayerViewController的全屏按钮

我正在使用将AVPlayerViewController视频嵌入到我的视频中UIView

class MyView : PopupContentView {
    var player : AVPlayer!;
    var playerViewController: AVPlayerViewController!;

    override func awakeFromNib() {

    }

    override func setupView() {
        super.setupView();

        self.setupVideo();
    }

    deinit {
        self.player.pause();
        self.player = nil;
    }

    func setupVideo() {
        let path = Bundle.main.path(forResource: "Lebensqualitaet", ofType:"mp4")
        let url = URL(fileURLWithPath: path!)

        self.player = AVPlayer(url: url);

        self.playerViewController = AVPlayerViewController();
        self.playerViewController.player = self.player;

        self.callbacks.getAVCallbacks()?.setAVPlayerReference(player: self.playerViewController.player!);
        self.callbacks.getViewControllerToPresent().addChildViewController(self.playerViewController);

        self.addSubview(self.playerViewController.view);

        self.playerViewController.view.frame = self.frame;
    }
}
Run Code Online (Sandbox Code Playgroud)

在此AVPlayerViewController有一个将视频设置为全屏的按钮。是否可以禁用此按钮?我的问题是,如果视频设置为全屏,并且在禁用全屏后再次关闭整个视图,我不知道为什么。这就是为什么我只想禁用全屏模式的原因。

ios swift avplayerviewcontroller swift3

5
推荐指数
0
解决办法
1366
查看次数

Swift AVPlayerViewController添加AirPlay

我正试图用我的AirPlay启用AVPlayerViewController.在文件中:

https://developer.apple.com/reference/avkit/avplayerviewcontroller

它指出

AVPlayerViewController自动支持AirPlay,但您需要先执行一些项目和音频会话配置,然后才能在应用程序中启用它.

Capabilities选项卡下,我确实启用了音频,AirPlay和画中画的背景模式.我创建了AVPlayerViewController如下:

// Create the view controller and player
let moviePlayerViewController: AVPlayerViewController = AVPlayerViewController()
let moviePlayer = AVPlayer(url: videoUrl!)

moviePlayer.allowsExternalPlayback = true
moviePlayer.usesExternalPlaybackWhileExternalScreenIsActive = true

// Initialize the AVPlayer
moviePlayerViewController.player = moviePlayer

// Present movie player and play when completion
self.present(moviePlayerViewController, animated: false, completion: {
    moviePlayerViewController.player?.play()
})
Run Code Online (Sandbox Code Playgroud)

我想到了两条线

moviePlayer.allowsExternalPlayback = true
moviePlayer.usesExternalPlaybackWhileExternalScreenIsActive = true
Run Code Online (Sandbox Code Playgroud)

会添加AirPlay支持,但我错了.我已经读过AirPlay可以通过添加来使用MPVolumeView,但这是用于自定义视频控制器,而不是内置的.任何帮助将不胜感激.

ios avplayer airplay swift avplayerviewcontroller

5
推荐指数
1
解决办法
3005
查看次数

从AVPlayerViewController中删除Quicktime徽标

我正在使用AVPlayerViewController实现一个视频播放器.它在流媒体视频时显示iOS 11设备上的快速时间徽标.如何删除?我需要使用自定义图像作为占位符.在此输入图像描述 找到我的代码:

AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:self.currentPlayingURL]];
Run Code Online (Sandbox Code Playgroud)

ios avplayeritem avplayerviewcontroller ios11

5
推荐指数
1
解决办法
302
查看次数

SwiftUI:如何以模态正确显示AVPlayerViewController?

正确的UIKit方法:

根据Apple在WWDC 2019上有关此主题的演讲AVPlayerViewController应以模态呈现,以利用API的所有最新全屏功能。这是建议的示例代码,可从当前的UIKit视图控制器调用该代码:

// Create the player
let player = AVPlayer(url: videoURL)

// Create the player view controller and associate the player
let playerViewController = AVPlayerViewController()
playerViewController.player = player

// Present the player view controller modally
present(playerViewController, animated: true)
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,并以漂亮的全屏模式启动视频。

使用SwiftUI获得相同的效果?:

为了使用AVPlayerViewController来自SwiftUI的代码,我创建了UIViewControllerRepresentable实现:

struct AVPlayerView: UIViewControllerRepresentable {

    @Binding var videoURL: URL

    private var player: AVPlayer {
        return AVPlayer(url: videoURL)
    }

    func updateUIViewController(_ playerController: AVPlayerViewController, context: Context) {
        playerController.player = player
        playerController.player?.play()
    }

    func …
Run Code Online (Sandbox Code Playgroud)

presentmodalviewcontroller avkit avplayerviewcontroller swiftui

5
推荐指数
3
解决办法
323
查看次数

使用AVPlayer会返回“非多路径连接”错误

我正在使用AVKit播放youtube URL。

我在按钮动作中包含以下代码:

 @IBAction func trailerButtonAction(_ sender: Any) {
    guard let youtubeUrl = youtubeURL else { return }
    let player = AVPlayer(url: youtubeUrl)
    let playerViewController = AVPlayerViewController()
    playerViewController.player = player

    present(playerViewController, animated: true) {
        player.play()
    }
}
Run Code Online (Sandbox Code Playgroud)

该URL有效,但是当我按下按钮时,视频不会停止加载,并且在Debug区域收到此消息:

nw_endpoint_flow_copy_multipath_subflow_counts在非多路径连接上调用

url xcode swift avplayerviewcontroller

5
推荐指数
1
解决办法
1014
查看次数