短い答え: ID3v2 タグの場合ははい
どの ID3 タグのバージョンを読み取ろうとしていますか?
ID3v1 タグは、ファイルの最後、最後の 128 バイトにあります。Net::HTTP では、ファイルの最後に向かってシークし、最後の N バイトだけを読み取ることはできないようです。headers = {"Range" => "bytes=128-"} を使用して試してみると、常に完全なファイルがダウンロードされるようです。resp.body.size => ファイルサイズ。しかし、ID3 バージョン 1 は、固定長形式、ASCII テキストのみなどの制限により、この時点でかなり時代遅れになっているため、大きな損失はありません...)。iTunes は ID3 バージョン 2.2.0 を使用します。
ID3v2 タグはファイルの先頭にあります - ストリーミングをサポートするため - ID3v2 ヘッダーを含む MP3 ファイルの最初の部分を HTTP プロトコル >= 1.1 経由でダウンロードできます
以前、特に Ruby の実装に関する質問にほぼ同じ回答をしました。
この質問を確認してください:
Ruby/Rails でリモート MP3 ファイルの ID3 タグを読みますか?
続き..
私が言及した他の質問の Ruby コードは、完全に機能する例です。
完全なID3タグが含まれていると想定するのに十分な大きさの、フェッチするバイトの事前定義されたサイズを設定できます。たとえば、1000バイトです。
次に、使用する言語に関係なく、お気に入りの HTTP ライブラリを使用して HTTP 接続を開きますが、HTTP プロトコルのバージョンが >= 1.1 であることを確認し、HTTP オプション "Range" を使用して最初の 1000 バイトを読み取ります。 HTTP 経由でアクセスしようとしているファイルから指定された範囲のバイトをダウンロードします。
iOS での具体的な実装は、使用するライブラリによって異なります。
Objective-C での GET リクエストの例を次に示します。
シンプルな Objective-C GET リクエスト
必要なのは、範囲を指定する Range-header をリクエストに渡すことだけです。
API を参照してください: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableURLRequest_Class/Reference/Reference.html
また、Range ヘッダー フィールドをどのようにフォーマットする必要があるかについては、例を確認してください。
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
たとえば、これは Range ヘッダーの構文です。
Range: bytes=0-1000
addValue:forHTTPHeaderField インスタンス メソッドを使用して、このヘッダーを設定する必要があります。