我想在iPad上播放iOS 4.3中的电影.当文件名具有文件扩展名时,我已成功使用MPMoviePlayerController和AVPlayer从远程URL加载文件.但是,当我使用不返回文件名的CDN(只是一个不可猜测的随机名称)时,MPMoviePlayerController或AVPlayer似乎都无法应对.
有没有办法告诉任何一个玩家它真的是一个x型电影,它应该继续播放它?
MPMoviePlayerController将从其更改的状态通知返回以下错误:
{
MPMoviePlayerPlaybackDidFinishReasonUserInfoKey = 1;
error = "Error Domain=MediaPlayerErrorDomain Code=-12847 \"This movie format is not supported.\" UserInfo=0x5b60030 {NSLocalizedDescription=This movie format is not supported.}";
}
Run Code Online (Sandbox Code Playgroud)
我知道该文件是一个有效的m4v文件,因为当我重命名它时一切都很好.
什么是东方方式跟踪歌曲在Swift中播放AVPlayer的时候?
是否有任何在avplayer完成播放时调用的函数,或者我应该将计时器与avplayer类引用结合起来?
我在Google和StackOverflow上做了很多研究.我发现的所有答案在iOS 7中都不起作用.我开始在iOS 7 SDK中使用Xcode 5编写新的应用程序.
我所要做的就是从应用程序包中存储的文件(而不是音乐库)中播放应用程序中的音频.我希望在后台播放音频并在屏幕锁定时控制(除控制中心外).
我将APPNAME-Info.plist密钥设置UIBackgroundModes为音频.它不处理app委托中的内容; 一切都在ViewController中完成
@interface ViewController : UIViewController <AVAudioPlayerDelegate>
Run Code Online (Sandbox Code Playgroud)
在实现的viewDidAppear:方法中,我调用super,然后是以下代码:
// Once the view has loaded then we can register to begin receiving controls and we can become the first responder
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)
在我的实现viewWillDisappear:方法中,我有以下代码:
// End receiving events
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
Run Code Online (Sandbox Code Playgroud)
我还实现了canBecomeFirstResponder方法,返回YES.接下来,我实现了该remoteControlReceivedWithEvent:方法:
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
// If it is a remote control …Run Code Online (Sandbox Code Playgroud) 所以我在我的项目中使用ARC,当我添加一个AVPlayerLayer时,它工作得很好,但是当我从UINavigationItem弹出UIViewController时,视频继续在后台播放.有谁知道你会如何处理这个?这似乎很简单,我只是俯瞰.这是我最初实例化的代码.
self.currentItem = [[AVPlayerItem alloc] initWithURL:url];
self.player = [[AVPlayer alloc]initWithPlayerItem:self.currentItem];
self.avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
self.avPlayerLayer.bounds = self.view.bounds;
self.avPlayerLayer.frame = CGRectMake(0,55, 1024, 670);
self.view.backgroundColor = [UIColor clearColor];
[self.view.layer addSublayer:avPlayerLayer];
Run Code Online (Sandbox Code Playgroud)
这也是我如何确定属性的方式.
@property (strong) AVPlayer *player;
@property (strong) AVPlayerLayer *avPlayerLayer;
@property (strong) AVPlayerItem *currentItem;
Run Code Online (Sandbox Code Playgroud)
也许这完全错了.我不确定何时使用(强)vs(弱).任何情况下都要提前感谢您的帮助.
使用AVPlayer时,是否可以将带有http请求的标头发送到音频文件?我需要能够在服务器收到时检查标头的内容,以限制对所请求文件的访问.
我目前正在使用Swift测试AVPlayer与音频流网址的使用.有play()和pause()方法,但问题是,仅暂停,流仍然缓存在设备中.
这是我的测试代码:
import UIKit
import AVFoundation
class ViewController: UIViewController {
let player = AVPlayer(URL: NSURL(string: "http://streaming.radio.rtl.fr/rtl-1-48-192")!)
@IBOutlet weak var btnPlay: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnPress(sender: AnyObject) {
if (btnPlay.titleLabel?.text == "Play") {
initPlayer()
btnPlay.setTitle("Stop", forState: UIControlState.Normal)
} else {
stopPlayer()
btnPlay.setTitle("Play", forState: UIControlState.Normal)
}
}
func initPlayer() {
player.play()
}
func stopPlayer() {
// player.currentItem = nil // Last thing I tried, but generate an error
player.pause()
}
} …Run Code Online (Sandbox Code Playgroud) AVPlayer是完全可定制的,遗憾的是有方便的方法AVPlayer来显示时间线进度条.
AVPlayer *player = [AVPlayer playerWithURL:URL];
AVPlayerLayer *playerLayer = [[AVPlayerLayer playerLayerWithPlayer:avPlayer] retain];[self.view.layer addSubLayer:playerLayer];
Run Code Online (Sandbox Code Playgroud)
我有一个进度条,指示视频的播放方式,以及剩余的数量MPMoviePlayer.
那么如何获取视频的时间轴AVPlayer以及如何更新进度条
建议我.
您好我已将UISlider最小值设置为0.00.然后我以这种方式设置它的最大值.
self.viewPlayer.layer.addSublayer(playerLayer)
let duration : CMTime = avPlayer.avPlayer.currentItem!.asset.duration
let seconds : Float64 = CMTimeGetSeconds(duration)
sliderBar.maximumValue=Float(seconds)
sliderBar!.isContinuous = false
sliderBar!.tintColor = UIColor.green
Run Code Online (Sandbox Code Playgroud)
但我得到了这个例外
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempting to set a slider's minimumValue (0.000000) to be larger than the maximumValue (nan)'
enter code here
Run Code Online (Sandbox Code Playgroud)
我知道在prepareForPlay()实际播放之后需要一些时间来真正播放视频.那么如何才能检测到播放器何时真正开始播放视频?请帮我.谢谢
我在AVPlayer中播放视频,现在我需要在播放时单独静音.请建议如何做到客观C.
谢谢,Suresh
我正在使用此代码使用avplayer播放视频文件如何停止它
[videoView setHidden:NO];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path2 = [documentsDirectory stringByAppendingPathComponent:saveFileName];
NSURL *url1 = [[NSURL alloc] initFileURLWithPath: path2];
videoPlayer = [AVPlayer playerWithURL:url1] ;
self.avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:videoPlayer];
//[self willAnimateRotationToInterfaceOrientation];
avPlayerLayer.frame = videoView.bounds;
[self.videoView.layer addSublayer: avPlayerLayer];
[self.videoPlayer play];
Run Code Online (Sandbox Code Playgroud)
我试过这个不起作用
//[self.videoPlayer release];
Run Code Online (Sandbox Code Playgroud) avplayer ×10
ios ×7
avfoundation ×3
objective-c ×3
iphone ×2
swift ×2
cocoa-touch ×1
core-audio ×1
ios7 ×1
swift3 ×1
uislider ×1