descargar iphone ios ios5 video avplayer

iphone - descargar - avplayer windows



¿Es posible reproducir video usando Avplayer en fondo? (8)

Además de la respuesta de fattomhk, esto es lo que puede hacer para lograr el reenvío de video hasta el momento en que debería ser después de que su aplicación aparezca en primer plano:

  • Obtenga currentPlaybackTime de reproducción de video cuando vaya al fondo y guárdelo en lastPlayBackTime
  • Almacena el tiempo cuando la aplicación pasa al fondo (probablemente en userDefault )
  • De nuevo consigue el momento en que la aplicación entra en primer plano.
  • Calcular la duration entre el fondo y el tiempo de primer plano
  • Establezca el tiempo de reproducción actual del video en lastPlayBackTime + duration

Estoy usando Avplayer para mostrar clips de video y cuando vuelvo (aplicación en segundo plano) el video se detiene. ¿Cómo puedo seguir reproduciendo el video?

He buscado sobre la tarea de fondo y el subproceso de fondo, IOS solo admite música de fondo (no video) http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

Aquí hay una discusión sobre el video de reproducción en el fondo

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

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

Pero hay muchas aplicaciones en AppStore, que reproducen videos en fondo como

Swift Player: 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


Este método soporta todas las posibilidades:

  • Pantalla bloqueada por el usuario;
  • Elemento de lista
  • Botón de inicio presionado;

Siempre que tenga una instancia de AVPlayer ejecutando iOS, evitará el bloqueo automático del dispositivo.

Primero debe configurar la aplicación para que sea compatible con el fondo de audio del archivo Info.plist que agrega en la matriz UIBackgroundModes el elemento de audio.

Luego ponga en su AppDelegate.m en

- Aplicación (BOOL): (UIApplication *) aplicación didFinishLaunchingWithOptions: (NSDictionary *) launchOptions:

estos métodos

[[AVAudioSession sharedInstance] setDelegate: self]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

y #import <AVFoundation / AVFoundation.h>

Luego en tu vista el controlador que controla AVPlayer

-(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; [self becomeFirstResponder]; }

y

- (void)viewWillDisappear:(BOOL)animated { [mPlayer pause]; [super viewWillDisappear:animated]; [[UIApplication sharedApplication] endReceivingRemoteControlEvents]; [self resignFirstResponder]; }

entonces responde a la

- (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; } }

Se necesita otro truco para reanudar la reproducción si el usuario presiona el botón de inicio (en cuyo caso la reproducción se suspende con un desvanecimiento).

Cuando controlas la reproducción del video (tengo métodos de reproducción) establecido

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];

y el método correspondiente a ser invocado que lanzará un temporizador y reanudará la reproducción.

- (void)applicationDidEnterBackground:(NSNotification *)notification { [mPlayer performSelector:@selector(play) withObject:nil afterDelay:0.01]; }

Su trabajo para mí para reproducir vídeo en Backgorund. Gracias a todos.


Me gustaría agregar algo que por alguna razón terminó siendo el culpable para mí. Había usado AVPlayer y el juego de fondo durante mucho tiempo sin problemas, pero esta vez simplemente no pude hacerlo funcionar.

Descubrí que cuando pasa a segundo plano, la propiedad de rate de AVPlayer veces parece AVPlayer a 0.0 (es decir, en pausa), y por esa razón simplemente necesitamos verificar la propiedad de tasa en KVO en todo momento, o al menos cuando vamos a fondo. Si la tasa cae por debajo de 0.0 y podemos suponer que el usuario quiere jugar (es decir, el usuario no .play() deliberadamente la pausa en los controles remotos, la película finalizó, etc.) debemos volver a llamar a .play() en el AVPlayer.

AFAIK no hay ninguna otra opción en AVPlayer para evitar que se detenga automáticamente cuando la aplicación pasa al fondo.


No es posible reproducir música / video de fondo usando Avplayer. Pero es posible usar

MPMoviePlayerViewController. He hecho esto en una de mis aplicaciones usando este reproductor y esta aplicación

se ejecuta con éxito a appstore.


Prueba con este fragmento de código, ya lo he integrado con mi aplicación y me está resultando útil ... ¡espero que esto te funcione!

Siga los pasos que se indican a continuación:

  • Agregue UIBackgroundModes en la APPNAME-Info.plist, con la aplicación de selección reproduce audio
  • Luego agregue el marco AudioToolBox a los marcos de carpetas.
  • En el APPNAMEAppDelegate.h agregue:

    - #import < AVFoundation/AVFoundation.h>

    - #import < AudioToolbox/AudioToolbox.h>

  • En el APPNAMEAppDelegate.m agregue lo siguiente:

    // Set AudioSession

    NSError *sessionError = nil; [[AVAudioSession sharedInstance] setDelegate:self]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

  • / * Elige cualquiera de ellos * /

  • // 1. Anulando la ruta de salida de audio

// UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; // AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof (audioRouteOverride), & audioRouteOverride);

================================================== ======================

// 2. Cambiando la ruta de salida de audio por defecto

UInt32 doChangeDefaultRoute = 1; AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);

en el

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  • Pero antes de las dos líneas:

    [self.window addSubview: viewController.view];

    [self.window makeKeyAndVisible];

Disfruta de la programación !!


Si está reproduciendo video usando WebView, puede manejar el uso de javascript para reproducir video en el fondo.

strVideoHTML = @"<html><head><style>body.........</style></head> <body><div id=/"overlay/"><div id=/"youtubelogo1/"></div></div><div id=/"player/"></div> <script> var tag = document.createElement(''script''); tag.src = /"http://www.youtube.com/player_api/"; var firstScriptTag = document.getElementsByTagName(''script'')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; events: { ''onReady'': onPlayerReady, } }); } function onPlayerReady(event) { event.target.playVideo(); } function changeBG(url){ document.getElementById(''overlay'').style.backgroundImage=url;} function manualPlay() { player.playVideo(); } function manualPause() { player.pauseVideo(); } </script></body> </html>"; NSString *html = [NSString stringWithFormat:strVideoHTML,url, width, height,videoid; webvideoView.delegate = self; [webvideoView loadHTMLString:html baseURL:[NSURL URLWithString:@"http://www.your-url.com"]];

En vista diappear llamada

strscript = @"manualPlay(); [webvideoView stringByEvaluatingJavaScriptFromString:strscript];



Versión rápida para la respuesta aceptada.

En el delegado:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) AVAudioSession.sharedInstance().setActive(true, error: nil)

En el controlador de vista que controla AVPlayer.

override func viewDidAppear(animated: Bool) { UIApplication.sharedApplication().beginReceivingRemoteControlEvents() self.becomeFirstResponder() } override func viewWillDisappear(animated: Bool) { mPlayer.pause() UIApplication.sharedApplication().endReceivingRemoteControlEvents() self.resignFirstResponder() }

No te olvides de "importar AVFoundation"