自宅LAN内のみで利用できる動画サイトを作ってみた話

みなさんもPCに大量の動画を保存していることかと思います. そんな動画をPCではなくスマホで簡単に見たいなぁと思ったわけですよ

例えば,布団でゴロゴロしながら見たいなぁとか,ちょっとソファでみたいなぁとか...  まあ,ホントの目的はそんなことじゃないんですけどね.男子なら分かってくれれうと思う..

ただ,実際やってみると,

  • わざわざPCからスマホにコピーするのダルいなぁ
  • DropboxとかGoogle Driveとかに置くのもなぁ(個人情報だし)(趣味バレ怖い)
  • youtubeの限定公開なんて論外だしなぁ

と感じていたわけですよ. そしたら,「あっサーバ立てればええやん」という考えになったので作りました.

どのくらいの規模の物作ったの?

サーバ立てればええやんと言っても,動画配信サービスなんて作ったことないわけですよね. そんで,「動画配信サービス 自作」とかって調べてみると,

  • ストリーミングサーバ用意しますよ~
  • RTMP使いますよ~
  • 動画ファイルエンコードしますよ~

とか書かれてるわけですよね.ただ,個人的には

いやいや,そこまでしなくいいんですよ~ ただ見れればいいんですよ~~

って気持ちなんですよ.

そんなこんなでいろいろ考えてみたら,

ん? これってhtml5のvideoで十分じゃね?

と思ったわけですね. なんせ1人しか使わないし,回線についても自宅内のLANだからまあまあ早いし.

というわけで適当に作ってみました.

作ったもの

ソースはこちら

github.com

f:id:motya1121:20190624150308p:plain
作った動画サイト

機能的には,とりあえず左側になけなしの検索と並び順の設定欄,右側にサムネイルをずらっと並べてあります. そんで,画像 or タイトルをクリックすると,

f:id:motya1121:20190624151143p:plain
再生画面

こんな感じで動画が見れるといった仕組みになってます.

(デザインセンスが皆無なのはご了承ください)

環境

WSLのubuntuを使用.

そんで動画本体,ソースコードはCドライブとかに保存しておいて,apachepythonとかはubuntuで動かす. これめっちゃ楽 (シンボリックリンク張りまくりだけどね.)

仕組み

動画の管理

動画が入っているディレクトリを指定して,pythonで永遠とmp4を探しまくってます. (僕のPCに保存されている動画の殆どがmp4なのでこれで問題ない) そんで,サムネイルに関しては,OpenCVを使ってそれっぽいものを作ってます. そして,動画ファイルの名前を変えても何も問題が無いように,取得した動画についてはハッシュ値で同一ファイルかどうかを確認.

これをjson形式でwebサーバに渡してる.

動画の再生

動画の再生についてはhtml5のvideoタグを使用. こいつ意外と優秀で,スマホとかで,画面の両側を2回タップするだけで,10秒スキップできたりする. そのままでも結構使える.

さっきのpythonから吐き出されるjsonファイルをPHPで読み取って,一覧に並べたり,検索したりしてる.

まとめ

適当に作るだけで,結構使えるものができてしまった. これで面倒なことがかなり減りそう.

大人数では使えなさそうだなぁ