首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在后台使用Avplayer播放视频吗?

可以在后台使用Avplayer播放视频吗?
EN

Stack Overflow用户
提问于 2013-03-18 13:47:18
回答 8查看 13.3K关注 0票数 18

我正在使用Avplayer显示视频剪辑,当我返回(后台的应用程序)视频停止。怎样才能继续播放视频?

我已经搜索了后台任务和后台线程,IOS只支持背景音乐(不支持视频) http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

下面是一些关于在后台播放视频的讨论

1) https://discussions.apple.com/thread/2799090?start=0&tstart=0

2) http://www.cocoawithlove.com/2011/04/background-audio-through-ios-movie.html

但是在AppStore中有很多应用程序可以在后台播放视频,比如

Swift播放器:https://itunes.apple.com/us/app/swift-player-speed-up-video/id545216639?mt=8&ign-mpt=uo%3D2

SpeedUpTV:https://itunes.apple.com/ua/app/speeduptv/id386986953?mt=8

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-03-22 14:53:16

此方法支持所有可能性:

  • 屏幕被用户锁定;
  • List item
  • Home按钮被按下;

只要您有一个运行iOS的AVPlayer实例,就可以防止设备自动锁定。

首先,您需要将应用程序配置为支持来自音频文件的音频背景,并在UIBackgroundModes数组中添加Info.plist元素。

然后把你的AppDelegate.m放入

- (BOOL)应用程序:(UIApplication*)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions:

这些方法

代码语言:javascript
复制
[[AVAudioSession sharedInstance] setDelegate: self];    
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

#导入< AVFoundation/AVFoundation.h >

然后在控制AVPlayer的视图控制器中

代码语言:javascript
复制
-(void)viewDidAppear:(BOOL)animated
{
  [super viewDidAppear:animated];
  [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
  [self becomeFirstResponder];
}

代码语言:javascript
复制
- (void)viewWillDisappear:(BOOL)animated
{
    [mPlayer pause];    
    [super viewWillDisappear:animated];
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
    [self resignFirstResponder];
}

然后响应

代码语言:javascript
复制
 - (void)remoteControlReceivedWithEvent:(UIEvent *)event {
        switch (event.subtype) {
            case UIEventSubtypeRemoteControlTogglePlayPause:
                if([mPlayer rate] == 0){
                    [mPlayer play];
                } else {
                    [mPlayer pause];
                }
                break;
            case UIEventSubtypeRemoteControlPlay:
                [mPlayer play];
                break;
            case UIEventSubtypeRemoteControlPause:
                [mPlayer pause];
                break;
            default:
                break;
        }
    }

如果用户按下home按钮,则需要另一个技巧来恢复再现(在这种情况下,再现以淡出暂停)。

当你控制视频的再现时(我有播放方法)设置

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];

以及要调用的将启动计时器并恢复再现的相应方法。

代码语言:javascript
复制
- (void)applicationDidEnterBackground:(NSNotification *)notification
{
    [mPlayer performSelector:@selector(play) withObject:nil afterDelay:0.01];
}

在Backgorund中播放视频对我来说很有效。感谢所有人。

票数 13
EN

Stack Overflow用户

发布于 2013-03-18 13:56:07

如果您尝试更改后台模式:对不起,应用商店不会批准。MPMoviePlayerViewController playback video after going to background for youtube

在我的研究中,当视频进入后台时,会有人拿出音轨在后台播放,因为视频会暂停,当进入前台时,会获得重新播放的回放时间

票数 3
EN

Stack Overflow用户

发布于 2013-03-22 13:42:47

无法使用Avplayer播放背景音乐/视频。但也可以使用

MPMoviePlayerViewController。我已经在我的一个应用程序中使用这个播放器&这个应用程序做到了这一点

已成功运行到appstore。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15470452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档