7
votes

Téléchargement de vidéos avec iPhone

est-il possible de télécharger une vidéo sur un serveur? Je sais que les images sont possibles. Si quelqu'un peut simplement me signaler dans la bonne direction qui serait génial.

merci


1 commentaires

cherchez-vous à télécharger une vidéo prise par le nouvel iPhone 3GS ou la vidéo stockée localement sur l'appareil? N'oubliez pas qu'il n'y a aucun moyen d'accéder au système de fichiers global de l'iPhone afin que cette dernière option ne soit pas réalisable.


4 Réponses :


2
votes

Regardez l'UIImagePickerController. À partir de 3.0, vous pouvez autoriser le choix de tirer une vidéo ou de choisir une vidéo existante. Selon les docs, vous êtes limité à 10min Max sur le film, cependant:

http://developer.apple .com / iPhone / bibliothèque / documentation / uikit / référence / uiImagePickerController_class / uiImagePickController / uiImagePickerController.html


0 commentaires

17
votes

édité août 2015

Cette réponse est maintenant sérieusement obsolète. Au moment de la rédaction, il n'y avait pas de nombreuses options et vidéos étaient de taille relativement petite. Si vous envisagez de le faire maintenant, j'utiliserais Afnetworking qui rend cela beaucoup plus simple. Il diffusera le téléchargement du fichier plutôt que de la maintenir tout en mémoire et prend également en charge la nouvelle tâche de téléchargement de fond Apple.

docs ici: https://github.com/afnetworking/afnetworking#Creatining-an-Upload-taSk

- < / P>

Oui c'est possible et c'est comme ça que je suis allé à ce sujet.

Implémentez la fonction suivante qui fonctionne lorsque le picker multimédia est terminé. xxx

pour la fonction postale que j'ai eu quelque chose comme ça que j'ai eu quelque part d'autre (désolé je ne sais pas où je l'ai trouvé): xxx

L'extrait ci-dessus construit la demande de post http et le soumet. Vous devrez le modifier si vous souhaitez une manipulation d'erreur décente et envisager d'utiliser une bibliothèque qui permet à ASYNC Télécharger (theres une sur github)

remarquez également le port: 3000 sur l'URL du serveur ci-dessus, j'ai trouvé cela facile Pour les tests de bugs pour démarrer un serveur Rails sur son port par défaut 3000 en mode de développement afin que je puisse voir les paramètres de la demande à des fins de débogage

espérons que cela aide


5 commentaires

Pas de problème. Une chose à noter est que le SDK actuel ne semble pas vous donner accès à la vidéo complète que cela serait synchronisé d'iTunes. Mes tests ont montré une taille vidéo maximale de 480x360. Si vous pouvez trouver un travail autour s'il vous plaît laissez-nous savoir. Merci


Est-ce que cette collection de déchets disparaît?


Cela signifie-t-il que vous chargez des données vidéo entières en mémoire? Bonne chance avec ça (utilisation de la mémoire). Bien sûr, cela fonctionnerait pour des vidéos relativement courtes, mais des vidéos plus longues nécessiteront une approche plus sophistiquée (streaming du fichier, etc.)


@Lukasz d'accord, nsdata * webdata = [nsdata datawithcontentsofurl: videourl]; va planter l'application immédiatement si la vidéo est assez grande.


@Raptor: Exactement, et c'est le problème crucial ici. On ne peut tout simplement pas poster de l'application pour la production avec chargement de la vidéo entière dans la mémoire. Les vidéos doivent simplement être diffusées directement à partir du fichier. J'ai posté 2 solutions intégrées disponibles à partir de IOS8 et iOS7 (pas besoin d'utiliser des bibliothèques tiers) ici: Stackoverflow.com/a / 31202471/229229



0
votes
NSURL *urlvideo = [info objectForKey:UIImagePickerControllerMediaURL];

 NSString *urlString=[urlvideo path];

NSLog(@"urlString=%@",urlString);

NSString *str = [NSString stringWithFormat:@"you url of server"];

NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];


ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

[request setFile:urlString forKey:@"key foruploadingFile"];

[request setRequestMethod:@"POST"];

[request setDelegate:self];

[request startSynchronous];

NSLog(@"responseStatusCode %i",[request responseStatusCode]);

NSLog(@"responseStatusCode %@",[request responseString]);

1 commentaires

Vous pouvez envoyer un fichier vidéo capturé par UIIMAGEPicker Controller en utilisant ce code.Et vous devez saisir CADRE ASIHTTPEST de GitHUB.



3
votes

Depuis iOS8, il n'est pas nécessaire d'utiliser des bibliothèques tiers et vous pouvez flux vidéo directement à partir du fichier fort> qui résout une erreur de mémoire cruciale hors de la mémoire lorsque vous essayez de télécharger des vidéos plus grosses lorsque vous les chargez du fichier:

NSLog(@"Background URL session needs events handled: %@", identifier);
completionHandler();


0 commentaires