2010-06-04 11 views
23

Estoy interesado en crear una aplicación para iPhone que pueda transmitir video desde un servidor central, el estilo de YouTube. Me preguntaba si alguien ha intentado hacer esto antes, ¿cuál es el camino de las API existentes menos resistentes, etc.? Realmente no sé nada sobre cómo esto se hace generalmente. ¿Estaría trabajando con enchufes? Solo estoy buscando alguna dirección aquí. ¡Gracias!Escribir una aplicación para transmitir video a iPhone

Respuesta

19

Si tiene el servidor de transmisión listo y listo, es bastante fácil implementar un controlador de video que aparece en el estilo de youtube.

NSString *videoURLString = @"http://path-to-iphone-compliant-video-stream"; 
NSURL *videoURL = [NSURL URLWithString:videoURLString]; 
MPMoviePlayerController moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
[moviePlayer prepareToPlay]; 
[moviePlayer play]; 
[self.view addSubview:moviePlayer.view]; 

que necesita para manejar el controlador que deben mostrarse vista del reproductor de vídeo (que es self en este caso).

En iOS 3.2+ MPMoviePlayerViewController hacer aún más fácil:

NSString *videoURLString = @"http://path-to-iphone-compliant-video-stream"; 
NSURL *videoURL = [NSURL URLWithString:videoURLString]; 
MPMoviePlayerViewController *moviePlayerView = [[[MPMoviePlayerViewController alloc] initWithContentURL:videoURL] autorelease]; 
[self presentMoviePlayerViewControllerAnimated:moviePlayerView]; 

presentMoviePlayerViewControllerAnimated es un método adicional de MediaPlayer a FWViewController que se encuentra en iOS 3.2+ y se encarga de crear un controlador de vista y empujándolo en la pila, animándola con una animación deslizante desde abajo, como en youtube.app.

+0

Esto no está funcionando para mí de ninguna manera. – Deepukjayan

+0

usa este código para transmitir? – Dilip

2

Los videos de QuickTime ya se transmiten al teléfono. La ruta de menor resistencia sería usar el controlador del reproductor de medios y dirigirlo a un archivo multimedia de transmisión en un servidor de transmisión.

7

Apple tiene un artículo detallado acerca de la configuración del lado del servidor para streaming de medios de comunicación:

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html

y Buenas Prácticas Nota:

https://developer.apple.com/library/content/technotes/tn2224/_index.html

No sólo contiene información sobre la arquitectura de servicio de streaming y herramientas utilizadas para construirlo, pero también tiene algunos requisitos para ese tipo de servicio que debe cumplirse y referencias a transmisiones de prueba en vivo.

3

Utilice este código para usar poca memoria. En la transmisión de vídeo ....

-(IBAction)playMovie:(NSURL *) theURL 
{ 
    NSURL *fileURL = theURL; 
    MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlaybackComplete:) 
               name:MPMoviePlayerPlaybackDidFinishNotification 
               object:moviePlayerController]; 

    [self.view addSubview:moviePlayerController.view]; 
    moviePlayerController.useApplicationAudioSession = NO; 
    moviePlayerController.fullscreen = YES; 
    [moviePlayerController play]; 
} 

- (void)moviePlaybackComplete:(NSNotification *)notification 
{ 
    MPMoviePlayerController *moviePlayerController = [notification object]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self 
                name:MPMoviePlayerPlaybackDidFinishNotification 
                object:moviePlayerController]; 

    [moviePlayerController.view removeFromSuperview]; 
    [moviePlayerController release]; 
} 
1

Si bien las respuestas existentes son buenas, si es necesario utilizar corrientes no HTTP (MMS o RTMP por ejemplo) o no de Apple apoyaron códecs de audio/vídeo, las cosas se ponen un poco más Complicado.

No soy un experto, pero he estado usando este VideoStreaming SDK para resolver esos problemas, y hace que personalizar al cliente sea mucho más fácil (transmisión de fondo, pausar transmisiones, etc.). Puede valer la pena si también tienes esos requisitos.

0

respuesta Puede utilizar AVPlayerViewController desde MPMoviePlayerController está obsoleta desde IOS 9

NSURL *url = [NSURL URLWithString:videoUrl]; 

    _playerViewController = [[AVPlayerViewController alloc] init]; 
    _playerViewController.player = [AVPlayer playerWithURL:url]; 
    _playerViewController.player.volume = 1; 
    _playerViewController.showsPlaybackControls = YES; 

    _playerViewController.view.frame = CGRectMake(....); 
    [self.view addSubview:_playerViewController.view]; 
Cuestiones relacionadas