2013年1月31日木曜日

youtubeのデータについて調べる。

youtubeをBGMにして流したい。でもiOS6.1でできなくなった・・・

というわけで、どうやればいいか調べます。

まず、youtubeでつかっているデータについて調べます。
とりあえず、iPhoneとiMacのsafariを接続して、データアクセスについて調べました。


http://r11---sn-3pm7en7k.c.youtube.com/videoplayback?id=01e3e19fd.....
というURLであることがわかりました。
以前の調査から、youtubeのアドレスは一度アクセス可になった場合、同じIPアドレスからのアクセスは許可されることになるみたいです。

というわけで、同じLANネットワークにあるところからこのURLをたたいてみます。
手持ちのiMacにはwgetコマンドがはいっていないみたいだったので、ぱぱっとjavaのプログラムを書いてみました。

ものすごい乱暴ですが、こんなコード

String url = "http://r11---sn-3pm7en7k.c.youtube.com/videoplayback?id=01e3e19fd......youtube_mobile";
URL urlObj;
HttpURLConnection urlCon;
urlObj = new URL(url);
urlCon = (HttpURLConnection)urlObj.openConnection();
urlCon.setRequestMethod("GET");
ReadableByteChannel rbc = Channels.newChannel(urlCon.getInputStream());
FileChannel fc = new FileOutputStream("test.mp4").getChannel();
while(true) {
  ByteBuffer buffer = ByteBuffer.allocate(65536);
  rbc.read(buffer);
  buffer.flip();
  if(buffer.remaining() == 0) {
    break;
  }
  fc.write(buffer);
}
fc.close();
rbc.close();
urlCon.disconnect();

これでとりいそぎ、test.mp4が取得でき、vlcで再生してみたところ、問題なく再生できました。

内容を確認してみたところ、やっぱりmp4でしたね。
Video: mpeg4 (Simple Profile) 映像データがh.264じゃなかったのが少々気になりますが・・・

一応、万一httpLiveStreamingでiPhoneがやりとりしていたら困るので(そっちをとった方が音声のみにできる公算がたかかった)、wiresharkで確認してみましたが、やっぱりmp4のようでした。

ここまでで、youtubeのデータはmp4であることがほぼ決定的になりました。


0 件のコメント:

コメントを投稿