web-dev-qa-db-ja.com

インターネットからオーディオ/ビデオファイルをダウンロードし、iPhoneアプリに保存する方法

音楽用のiPhoneアプリを開発しています。ユーザーにストリーミングによる曲/音楽を聞くことができるように、またはアプリで音楽をダウンロードするを聞くことができるように、ユーザーにいくつかのオプションを提供したいと思います。プログラムでアプリ内のオーディオファイルをストリーミングする方法を知っています。しかし、私はアプリで音声ファイルをダウンロードして再生するダウンロード後の音声の方法がわかりません。また、ユーザーはダウンロード中にダウンロードを一時停止できます。することは可能ですか?誰かが私を案内してくれて、サンプルコードやチュートリアルを教えてくれますか?もう1つ疑問があります。アプリ内にフォルダーを作成するのを手伝ってもらえますか?私を助けてください。前もって感謝します。

20
Gopinath

フォルダの作成

すべてのアプリについて、Documents Folder。アプリで使用するファイルはすべてここに保存されます。ここにさらにディレクトリを作成する場合は、次のようにします。

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

ダウンロード中

インターネットからオーディオファイルをダウンロードする場合は、非同期の方法を検討する必要があります。これは、ダウンロードがバックグラウンドで実行されている間、アプリケーションが処理を続行できることを意味します。

このため、 [〜#〜] asihttprequest [〜#〜] を使用することをお勧めします。 pauseダウンロード(要求どおり)などの多くのオプションを提供して、ダウンロード要求を実行するのに最適です。

Webサイトでは、ファイルのダウンロードと保存に関する多くのドキュメントを提供しています。 this ページのDownloading a Fileセクションをご覧ください。

あなたは次のようなことをするだけです:

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];

次に、ASIHTTPRequestが提供するデリゲートメソッドを使用して、進行状況と完了を処理します。

再生中

ファイルの再生は非常に簡単です。それがデバイス上にあり、どこにあるかがわかったら、オーディオプレーヤーにロードするだけです。

AVAudioPlayer を使用してサウンドを再生するための素晴らしいチュートリアルがここにあります。あなたのケースでそれを使用する非常に簡単な例は次のとおりです。

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

はい、AVAudioPlayerを使用してオーディオファイルをダウンロードし、ダウンロードしたファイルを再生できます。ダウンロード時に一時停止する方法が正確にはわかりませんが、オーディオをダウンロードして再生しました。 ASIHTTPリクエストまたはその他からダウンロードできます。

これらのリンクをたどることができます。

  1. http://allseeing-i.com/ASIHTTPRequest/How-to-use#tracking_progress
  2. ASIHttpRequestを使用したダウンロードファイルについて
0
Khalid Usman