我想从播放器(iOS8,iOS9)中删除音频和字幕设置按钮:
播放器的控制器初始化:
- (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应用程序上播放来自本地文件系统的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)
我是否需要更改某些设置才能播放更长的视频?谢谢.
我能够运行视频,但是我无法看到像暂停和滑块这样的控制按钮与视频交互.询问类似的查询(见这里),但我没有按照答案.
objective-c avfoundation ios avplayer avplayerviewcontroller
我必须从服务器播放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) 我AVPlayer在ios中写插件.我需要知道用户何时单击" 完成"按钮AVPlayerViewController(我想知道用户何时关闭视频)并且我无法访问AVPlayerViewController对象.我检查了事件,发现只有AVPlayer设置为0的速率属性,但在暂停情况下,速率设置为0.我怎么弄清楚这两种情况?谢谢大家.
我正在使用将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有一个将视频设置为全屏的按钮。是否可以禁用此按钮?我的问题是,如果视频设置为全屏,并且在禁用全屏后再次关闭整个视图,我不知道为什么。这就是为什么我只想禁用全屏模式的原因。
我正试图用我的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,但这是用于自定义视频控制器,而不是内置的.任何帮助将不胜感激.
我正在使用AVPlayerViewController实现一个视频播放器.它在流媒体视频时显示iOS 11设备上的快速时间徽标.如何删除?我需要使用自定义图像作为占位符.
找到我的代码:
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:self.currentPlayingURL]];
Run Code Online (Sandbox Code Playgroud) 根据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)
这样可以正常工作,并以漂亮的全屏模式启动视频。
为了使用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
我正在使用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在非多路径连接上调用
ios ×7
avplayer ×5
swift ×3
avfoundation ×2
objective-c ×2
airplay ×1
avkit ×1
avplayeritem ×1
ios11 ×1
ios9 ×1
swift3 ×1
swiftui ×1
url ×1
xcode ×1