FediMovieという、PeerTubeのインスタンスを公開しました。
https://fedimovie.com/
Fedibirdファミリーの一員として運営していきます。インスタンス説明をいろいろ書いたページはこれです。
https://fedimovie.com/about/instance
※ ちなみに4日前にPeerTube v4.0.0がリリースされました!
https://joinpeertube.org/ja/
いろいろ考えましたが、約束事をきちんと守って使って下さい、とお願いし、自由に登録できるサーバとして公開することにしました。
PeerTubeはActivityPubで繋がることのできるYouTubeのFediverse版のようなサービスです。
MastodonからPeerTubeのアカウントをフォローして新着動画フィードを受け取ったり、投稿した動画をMastodonの投稿として見ることができます。
それをブーストしたり、Mastodonから動画にコメントしたりできます。
Mastodonに直接貼れない・貼るにはちょっと大きい動画を共有するのにも便利です。
#fedimovie
Mastodonの場合、PeerTubeの動画が投稿として流れてきたり、URLでリンクを貼った場合、プレビューカードに動画再生画面が埋め込みで展開されます。
流れてきた直後はまだ取得されていないのでただのリンクにしか見えなかったりしますが、少し待って展開されれば、埋め込みと同じように扱えて便利です。
投稿に埋め込んである(添付されている)と、そこそこサイズのある動画ファイルをコピーして、エンコードして、という負荷が連合先サーバ全てにかかりますが、この方式であれば、プレビューカードで済みます。
Mastodonは40MBまでの動画が貼れますが、ギリギリを攻めるとちょっと大きいし、もっと大きな動画を貼りたくても難しい。さりとてYouTubeにアップしてそれを貼るというのも何か違う……という時に、PeerTubeを活用するといいかなと思います。
#fedimovie
PeerTube、その存在が認知されたのは早かったと思うのですが、実際に使ってみた人はすくなかったかなと思います。
あるいは、当時のPeerTubeは、まだ発展途上で機能不足だったかもしれません。
たとえば、オブジェクトストレージにきちんと対応したのはごく最近のことです。(え、今まではどうしてたかって?)
ちょうどv4.0.0が出たばかりですので、いまどうなってるんだろう? っていう確認にでも、いじってみてください。
#fedimovie
@noellabo オブジェクトストレージからストリーミングみたいな形でダイレクトに読み込んでる感じですか?
@natsuki HTTPのrangeで分割して取得していくんですが、mp4をあらかじめ取得単位に分割してフラグメントの先頭にキーフレーム差し込んでおいたり、その位置情報一覧ファイル(m3mu)を作っておいたり仕込んでおいて、オブジェクトストレージに置いといて、順次取得したり、シークしたり、フラグメント単位でキャッシュしといたり、みたいな感じです。(ナツキさんならわかる……)
@noellabo 完全に理解した(理解した)
ありがとうございます。
PeerTubeとサーバ負荷の話。
PeerTubeは動画がアップロードされると、ストリーミング再生に適した形式に変換をかけます。また、もとのサイズの他に、管理者がプリセットしておいたいくつかの解像度の動画を生成します。この工程をトランスコードと呼んでいます。
動画のアップロード自体は、ファイルを受け取れば終わりますが、そこからはキューにエントリーされ、順番に処理されていきます。
変換はffmpegによるものですが、これはCPUをかなりぶん回します。
トランスコードが終了すると、オブジェクトストレージに転送します。
ここまで完了すると、一般に公開され、誰でもみられるようになります(公開の場合)。
再生は、ブラウザとオブジェクトストレージの間で行われます。(正確にはそれをキャッシュしたり中継しているnginxなどもあります)
これは、既に確定したファイルを分割転送しているだけなので、負荷は高くありません。
また、同じ動画を同時再生している他のブラウザと協力して、P2Pで代理でファイルをシェアする仕組みがあります。
#fedimovie