pantalla mac duplicar descargar conectar como apple activar xcode apple-tv tvos

xcode - descargar - duplicar pantalla iphone en mac



¿Cómo reproduzco un video en tvOS para Apple TV? (6)

Acabo de pegar su código en mi proyecto de ejemplo de tvOS, reemplacé la URL y la ejecuté.

No pasó nada. Bueno, excepto por el hecho de que hay una entrada de registro que me indica que la Seguridad de transporte de aplicaciones ha bloqueado mi solicitud de URL.

Así que me dirigí a la lista de información, deshabilité ATS y en el siguiente lanzamiento el video se mostró bien.

Por lo tanto, si también está utilizando una URL no HTTPS, es muy probable que se encuentre con este problema, que se soluciona fácilmente con una URL HTTPS, deshabilitando completamente el ATS o permitiendo URL específicas que no sean HTTP en su Info.plist.

PD: utilicé este video para probar.

Comencé un proyecto de tvOS en blanco y creé el siguiente código:

- (void)viewDidLoad { [super viewDidLoad]; AVPlayer *avPlayer = [AVPlayer playerWithURL:[NSURL URLWithString:@"http://www.myurl.com/myvideo.mp4"]]; AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayer]; avPlayerLayer.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); [self.view.layer addSublayer:avPlayerLayer]; [avPlayer play]; }

No pasa nada en el simulador, una vez que se carga la aplicación. No hay video, nada, solo una pantalla translúcida en blanco en mi simulador de Apple TV.

¿Cuál es la forma correcta de reproducir un video de muestra en el lanzamiento de la aplicación para una aplicación de Apple TV desde una fuente HTTP?


Está funcionando para mí. Puede ser de ayuda para usted

-(void)playAction { AVPlayerViewController *viewController = [[AVPlayerViewController alloc] initWithNibName:nil bundle:nil]; viewController.player = player; [self addChildViewController:viewController]; [self.view addSubview:viewController.view]; [viewController didMoveToParentViewController:self]; // play the video [player play]; }


La mejor manera de reproducir el video en su aplicación en AppleTV será AVPlayerViewController de AVKit. Si usas AVKit, obtienes muchas cosas gratis.

https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVPlayerViewController_Class/index.html

Simplemente agregue ese jugador a la propiedad del jugador de viewController:

// instantiate here or in storyboard AVPlayerViewController *viewController = [[AVPlayerViewController alloc] initWithNibName:nil bundle:nil]; viewController.player = player; [self addChildViewController:viewController]; [self.view addSubview:viewController.view]; [viewController didMoveToParentViewController:self]; // setup constraints, etc. // play the video [player play];

Además, como se menciona a continuación, asegúrate de que el video que intentas reproducir provenga de una conexión HTTPS o de que hayas desactivado la Seguridad de transporte de aplicaciones estableciendo las marcas adecuadas en la lista.


No me gustaron las respuestas que se mezclaron con subvistas, etc. Para la reproducción a pantalla completa, utilizo el siguiente código (No ARC):

// Play the stream NSString *wifiStreamAddress = @"http://yourmoviefile.m3u8"; AVPlayer *player = [[AVPlayer alloc] initWithURL: [NSURL URLWithString: wifiStreamAddress] ]; AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc] init]; playerViewController.player = player; // Keep pointers to player and controller using retained properties: self.player = player; self.playerViewController = playerViewController; [player release]; [playerViewController release]; [self presentViewController: playerViewController animated: true completion: ^{ [self.player play]; }];

Esto funciona realmente bien, animando la presentación y volviendo a la vista anterior cuando toca el botón MENÚ. Además, funciona muy bien con el control remoto usando todas las funciones estándar.


También puede usar TVML y TVMLJS https://developer.apple.com/library/prerelease/tvos/documentation/TVMLJS/Reference/TVJSFrameworkReference/

Cumpla con el protocolo ''TVApplicationControllerDelegate'' y agregue algunas propiedades.

AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate, TVApplicationControllerDelegate>

...

@property (strong, nonatomic) TVApplicationController *appController; @property (strong, nonatomic) TVApplicationControllerContext *appControllerContext;

Luego agregue lo siguiente a ''didFinishLaunchingWithOptions''

AppDelegate.m

#define url @"http://localhost:8000/main.js" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.appControllerContext = [[TVApplicationControllerContext alloc] init]; NSURL *javascriptURL = [NSURL URLWithString:url]; self.appControllerContext.javaScriptApplicationURL= javascriptURL; for (id key in launchOptions) { id val=[launchOptions objectForKey:key]; NSLog(@"key=%@ value=%@", key, val); if([val isKindOfClass:[NSString class]]) [self.appControllerContext.launchOptions objectForKey:val]; self.appController = [[TVApplicationController alloc] initWithContext:self.appControllerContext window:self.window delegate:self]; } return YES; }

crear una carpeta y agregar los siguientes archivos

  • main.js
  • index.tvml

main.js

function launchPlayer() { var player = new Player(); var playlist = new Playlist(); var mediaItem = new MediaItem("video", "http://trailers.apple.com/movies/focus_features/9/9-clip_480p.mov"); player.playlist = playlist; player.playlist.push(mediaItem); player.present(); //player.play() } //in application.js App.onLaunch = function(options) { launchPlayer(); }

cuidado con esta url en el mediaItem

Configure una template de su elección.

index.tvml

<document> <alertTemplate> <title>…</title> <description>…</description> <button> <text>…</text> </button> <text>…</text> </alertTemplate> </document>

abrir el terminal y navegar a esta carpeta y luego ejecutar

python -m SimpleHTTPServer 8000

asegúrese de que el puerto aquí es el puerto en su url ObjC. Los ejemplos de Apple utilizan 9001.

Vea estos tutoriales para más información.

http://jamesonquave.com/blog/developing-tvos-apps-for-apple-tv-with-swift/ http://jamesonquave.com/blog/developing-tvos-apps-for-apple-tv-part-2/

Un problema con el que me topé era intentar reproducir un archivo de video local. No funcionaría y hubo problemas de restricciones, etc. Parece que no puedes usar python para reproducir los videos, así que prueba Apache o haz un enlace a un video en la web. Esta respuesta tan SO me señaló allí.


Versión rápida Haga un PlayViewController que herede el AVPlayerViewController. En el controlador de vista que tiene el botón de reproducción, agregue dicha función

@IBAction func onClickPlay(sender: AnyObject) { let playerVC = PlayerViewController() playerVC.playVideo(urlString) [self.presentViewController(playerVC, animated: true, completion: nil)] }

En el PlayerViewController

func playVimeoVideo(link : String) { player = AVPlayer(URL: NSURL(string: link)!) player?.play() }

Nota La pregunta y algunas respuestas pueden ser un poco engañosas, por lo que podría pensar que el Apple TV solo puede reproducir la url con ".mp4" al final. Así lo creí la primera vez que vi el post. No es verdad. De hecho, con AVPlayerViewController puedes reproducir videos de transmisión de Vimeo. El enlace al video de transmisión no es como https://vimeo.com/92655878 . Es posible obtenerlo del sitio de Vimeo extrayéndolo de un archivo json, que se puede descargar desde este enlace

let link = "https://vimeo.com/api/oembed.json?url=https%3A//vimeo.com/" + videoId

Para poder obtener la url correcta para el video, debe usar el acceso de usuario de Vimeo Pro para obtener el enlace de transmisión de un video específico.