web-dev-qa-db-fra.com

Comment télécharger des fichiers audio / vidéo depuis Internet et les stocker dans l'application iPhone?

Je développe une application iPhone pour la musique. Je veux donner quelques options à l'utilisateur afin qu'il puisse écouter le chanson/musique en streaming ou qu'il puisse télécharger la musique dans l'application. Je sais comment diffuser les fichiers audio dans l'application par programme. Mais, je ne sais pas comment télécharger les fichiers audio dans l'application et jouer l'audio après le téléchargement. Et l'utilisateur peut également mettre le téléchargement en pause pendant le téléchargement. Est-il possible de faire? Quelqu'un peut-il me guider et partager un exemple de code ou un tutoriel pour moi? J'ai encore un doute: pouvez-vous m'aider à créer un dossier à l'intérieur de l'application? Aidez-moi, s'il vous plaît. Merci d'avance.

19
Gopinath

Création d'un dossier

Pour chaque application, vous disposez d'un Documents Folder. Tous les fichiers que vous utilisez dans votre application sont stockés ici. Si vous souhaitez créer plus de répertoires ici, vous feriez quelque chose comme ceci:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"MyNewFolder"];

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder if it doesn't already exist

Téléchargement

Si vous souhaitez télécharger des fichiers audio à partir d'Internet, vous devez rechercher une méthode asynchrone pour le faire. Cela signifie que l'application peut continuer à faire des choses pendant que votre téléchargement se déroule en arrière-plan.

Pour cela, je vous recommande d'utiliser ASIHTTPREQUEST . Il est idéal pour effectuer toutes les demandes de téléchargement, vous offrant de nombreuses options telles que pause un téléchargement (comme vous l'avez demandé).

Le site Web fournit une grande quantité de documentation sur le téléchargement et le stockage d'un fichier. Jetez un œil à la section Téléchargement d'un fichier sur la page this .

Vous feriez juste quelque chose comme:

NSURL *url = [NSURL URLWithString:@"http://www.fileurl.com/example.mp3"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadDestinationPath:[NSString stringWithFormat:@"%@",dataPath]]; //use the path from earlier
[request setDelegate:self];
[request startAsynchronous];

Ensuite, gérez simplement la progression et l'achèvement via les méthodes déléguées proposées par ASIHTTPRequest.

Lecture

La lecture du fichier est très simple. Une fois qu'il est sur l'appareil et que vous savez où il se trouve, chargez-le simplement dans le lecteur audio.

Il y a un excellent tutoriel sur l'utilisation de AVAudioPlayer pour jouer des sons. Un exemple très simple de l'utiliser dans votre cas serait:

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audiofile.mp3",dataPath];

NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];

if (audioPlayer == nil)
    NSLog([error description]);
else
    [audioPlayer play];
52

Oui, vous pouvez télécharger des fichiers audio et lire des fichiers téléchargés via AVAudioPlayer. Je ne sais pas exactement comment faire une pause lors du téléchargement, mais j'ai téléchargé des fichiers audio et joué. Vous pouvez télécharger à partir de la demande ASIHTTP ou autre.

Vous pouvez suivre ces liens.

  1. http://allseeing-i.com/ASIHTTPRequest/How-to-use#tracking_progress
  2. À propos du fichier de téléchargement à l'aide de ASIHttpRequest
0
Khalid Usman