トップページ

2007年01月11日

heywatch.comどうでしょう

Hey! Watchは、各種の動画変換(再エンコード)を行う、マルセイユ発のウェブサービスでございます。
動画変換のウェブサービスなんてえものは既に多々あるわけですが、TechClunchの記事に、メインの機能はREST APIでディベロッパー向けに公開し、サービスに直接に構築できるよう配慮している(ちなみにヘンな日本語は原文のママ、とゆうかTechClunchの日本語はしばしばヘン)と書かれてたので触ってみますた。

Hey! Watchは、現在は本サービスに移行していますが、つい先日までは「invitation only beta」でした。以下のハナシは原則、その頃のものです。始まったばかりのサービスなので内容はどんどん変更されていく筈で、現状は違ってる可能性がたぶんにあることにご留意ください。

基本的な使い方はいたってシンプル。

  1. 変換したいビデオを、ローカルからアップロードするか、URLで指定する。
    指定できるURLは:
    • ビデオファイルのURL。
    • ビデオファイルのURLが書かれたウェブページのURL(複数ある場合はあらためて選択する)。
    • YouTubeやGoogleビデオなど、対応している動画配信サービスのウェブページのURL。
  2. ビデオがいったんHey! Watchに転送されるので、完了するのを待つ(転送状況は随時確認できる)。
  3. 転送が完了したら、変換したいフォーマットを選んでエンコードする。
    ただし、Hey! Watch全体で、同時に行えるエンコード数には制限がある。これは「スロット」という単位で表現されており、「空きスロット」があれば直ちにエンコードが行われるけれど、そうでなければ待たされる(エンコードの状況も随時確認できる)。

アカウントには、無料の「Free」と有料の「Watcher」(なんでそういう名前なのかは不明)があり、Watcherアカウントは$4.99/月で、「まとめて払えばお得」なプランもあり。ちなみに支払い方法は、現時点ではPayPalのみ(イケてないところ、その1)。
ふたつのアカウントの違いが具体的に書かれたページはログインしないと見れないので、以下にサクっとまとめてみた。

制限Free(無料)Watcher($4.99/月)
1ヶ月間に可能なエンコード回数10回100回
エンコードフォーマットのカスタマイズNGOK
転送した(オリジナルの)ビデオの保存期間6時間12時間
エンコードしたビデオの保存期間12時間24時間
同時に可能な転送数13
同時に可能なエンコード数13
ビデオあたりの再生時間の制限10分25分
ビデオあたりのデータサイズの制限なしなし
転送量の制限なしなし

ちなみに、このページに限らず、ヘルプですらログインしないと見れません(イケてないところ、その2)。

APIどうでしょう

ウェブインタフェースは非常にクールで直感的だが、REST APIも同様に直感的なものだ。ただし、現在のAPIドキュメントは、必要最低限の内容しか用意されていないので、APIドキュメントの解読は直感的というわけにはいかない(笑)。そして、ご多分に漏れずこのドキュメントも、やはりログインしないと見れません。見たければユーザ登録するアルよ。

Hey! Watchのサービスはユーザ認証が前提なので、APIアクセスもユーザ認証が必須ですが、その認証方式は、To use our API, you must be authenticated via Basic Auth.ということで、ベーシック認証でございます。HTTPSでもないので、パケットでIDとパスワードが丸見えなんだな、これが(イケてないところ、その3)。

基本的な仕様はごく普通の(素直な)REST API。
POSTでリソースを作成し、GETで情報取得、PUTで変更、DELETEで削除。

例えば、YouTubeのFLVを変換するなら、/discoverにページのURLをPOSTしてFLVのURLを検出させる。

POST /discover.xml HTTP/1.0
Authorization: Basic hoge
Host: heywatch.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 58

url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DBPsfbV9t8Vw

POSTのレスポンスではまだ検出が完了しているわけではないので、同じURLを適宜GETして検出の完了を確認する。

GET /discover.xml HTTP/1.0
Authorization: Basic hoge
Host: heywatch.com

で、検出が完了したXMLレスポンスはこんなんで、RESULT要素の中身がFLVのURL。
どうでもいんだけど、CREATED-AT要素のタイムゾーンがお国柄を匂わせてたりします。

<?xml version="1.0" encoding="UTF-8"?>
<discovers>
  <discover>
    <id>12345678</id>
    <status>ok</status>
    <download>false</download>
    <result>
      http://www.youtube.com/get_video?video_id=BPsfbV9t8Vw&l=61&t=OEgsToPDskI5F9Jp4wgYUqAzjmkPJN7D
    </result>
    <url>
      http://www.youtube.com/watch?v=BPsfbV9t8Vw
    </url>
    <title>
      YouTube - YouTube Happy New Year
    </title>
    <created-at>
      Mon Jan 01 00:00:00 +0100 2007
    </created-at>
  </discover>
</discovers>

で、検出が完了したらそのURLを、今度は/downloadにPOSTして、Hey! WatchにFLVを転送開始。同様に適宜GETして転送の完了を待ち、完了したら今度は/jobに、そのビデオのIDとエンコードフォーマットのIDをPOSTしてエンコード開始…。

まあ、そんな感じ。

レスポンスの形式は、XMLの他にJSONとYAML。この指定は、APIのリクエストURLに対応する拡張子を付けて行います。例えば、エンコード済みのビデオの一覧を取得する場合、XMLなら「GET /encoded_video.xml」、JSONなら「GET /encoded_video.js」という感じ。
なお、リクエストによっては特殊なレスポンスが用意されていて、例えば「GET /encoded_video.rss」とすると、エンコード済みのビデオの一覧のRSSフィード(Podcastコンパチ)が出てきたり、「GET /encoded_video/video_id.jpg」とすると、エンコード済みのビデオのサムネイル画像が出てきたりします。

リクエスト結果は、まずはHTTPステータスコードで判断するわけですが、ドキュメントにあるのは、200 OK、201 Created、204 No Content、400 Bad Request、404 Not Found、406 Not Acceptable。
どうでもいんだけど204は、means that the resource has been updated or deleted successfullyと書かれていて、おそらくPUT/DELETEの成功を示すのだろうけど、ステータスコードの本来の意味からするとヘン。
一方406は、the format you asked is not availableと書かれていて、この「format」はおそらくエンコードフォーマットのことなのだと思うけど、だとしたら、ステータスコードの本来の意味の履き違え。

携帯どうでしょう

Hey! Watchのエンコードフォーマットには「Mobile 3GP」や「Mobile 3GPP2」、「Mobile MP4」といった選択肢があり、また、Watcherアカウントであればフォーマットのカスタマイズも可能で、例えば「Mobile 3GP」のビデオコーデックはH.263なのだけど、これをMPEG4に変更したりできる。

これらのフォーマットに変換したビデオは、日本の携帯電話でも再生できる場合もある。ただし、Hey! Watchはおそらく、LinuxプラットフォームでFFmpegを使ってエンコーディングを行っており、FFmpegでのエンコード時の問題がそのまま残される(例えばドコモ端末でストリーミング再生できないとかいう類)。

これについてHey! Watchの中のひととメールでやり取りしてみますた(ちなみにレスポンスはめちゃめちゃ迅速でした)。
指定のデータサイズでビデオを分割できるようにして欲しいなあという要望は、やんわりと、しかし即座に却下。3GP_Converter(aka 携帯動画変換君)のQT3GPPFlattenの例を挙げて、Atomフィールドの書き換えとかやって欲しいなあという要望を出してみたら、こっちはうやむやのうちに却下(笑)。
唯一、指定のデータサイズになったらエンコード糸冬了という機能だけ検討してくれることになりますた。って、それってFFmpegに-fsパラメータ渡すだけじゃん。

Category: ウェブ制作
Posted 2007年01月11日 19:10

トラックバック

このエントリーのトラックバックURL:
http://www.rcdtokyo.com/mt/mt-rcdtokyo5428-tb.cgi/803

コメント

コメントをどうぞ



保存しますか?


Aoaka Style Valid Aoaka