Mastodonの場合、PeerTubeの動画が投稿として流れてきたり、URLでリンクを貼った場合、プレビューカードに動画再生画面が埋め込みで展開されます。
流れてきた直後はまだ取得されていないのでただのリンクにしか見えなかったりしますが、少し待って展開されれば、埋め込みと同じように扱えて便利です。
投稿に埋め込んである(添付されている)と、そこそこサイズのある動画ファイルをコピーして、エンコードして、という負荷が連合先サーバ全てにかかりますが、この方式であれば、プレビューカードで済みます。
Mastodonは40MBまでの動画が貼れますが、ギリギリを攻めるとちょっと大きいし、もっと大きな動画を貼りたくても難しい。さりとてYouTubeにアップしてそれを貼るというのも何か違う……という時に、PeerTubeを活用するといいかなと思います。
#fedimovie
PeerTube、その存在が認知されたのは早かったと思うのですが、実際に使ってみた人はすくなかったかなと思います。
あるいは、当時のPeerTubeは、まだ発展途上で機能不足だったかもしれません。
たとえば、オブジェクトストレージにきちんと対応したのはごく最近のことです。(え、今まではどうしてたかって?)
ちょうどv4.0.0が出たばかりですので、いまどうなってるんだろう? っていう確認にでも、いじってみてください。
#fedimovie
PeerTubeとサーバ負荷の話。
PeerTubeは動画がアップロードされると、ストリーミング再生に適した形式に変換をかけます。また、もとのサイズの他に、管理者がプリセットしておいたいくつかの解像度の動画を生成します。この工程をトランスコードと呼んでいます。
動画のアップロード自体は、ファイルを受け取れば終わりますが、そこからはキューにエントリーされ、順番に処理されていきます。
変換はffmpegによるものですが、これはCPUをかなりぶん回します。
トランスコードが終了すると、オブジェクトストレージに転送します。
ここまで完了すると、一般に公開され、誰でもみられるようになります(公開の場合)。
再生は、ブラウザとオブジェクトストレージの間で行われます。(正確にはそれをキャッシュしたり中継しているnginxなどもあります)
これは、既に確定したファイルを分割転送しているだけなので、負荷は高くありません。
また、同じ動画を同時再生している他のブラウザと協力して、P2Pで代理でファイルをシェアする仕組みがあります。
#fedimovie
@noellabo オブジェクトストレージからストリーミングみたいな形でダイレクトに読み込んでる感じですか?
@natsuki HTTPのrangeで分割して取得していくんですが、mp4をあらかじめ取得単位に分割してフラグメントの先頭にキーフレーム差し込んでおいたり、その位置情報一覧ファイル(m3mu)を作っておいたり仕込んでおいて、オブジェクトストレージに置いといて、順次取得したり、シークしたり、フラグメント単位でキャッシュしといたり、みたいな感じです。(ナツキさんならわかる……)
@noellabo 完全に理解した(理解した)
ありがとうございます。
PeerTubeは、サーバ同士が連合して、大きな動画プラットフォームを構成しています。
FediMovieの右上に検索窓がありますが、ローカルだけでなく、グローバルからの検索が可能です。
YouTubeのように大量のコンテンツはないですが(そしてYouTubeからのミラーやコピーコンテンツが多いですが)、いろんな動画をリストアップでき、その場で再生することが可能です。
ローカルにコンテンツがほとんどない状況でも、アカウント登録してグローバル検索して、プレイリストを作って、という使い方はすぐに実行可能です。このへんが、連合するサーバならではだなと思うところです。
いえ、9月頃から試験運用してたんで、立てたばかりではないのですがw
#fedimovie