#この記事を読もうとしている方へ
すみません、技術的に高度なことは書いてありません。
もし万一、私と同じことでハマっている人がいて、この記事が解決のヒントにでもなればいいなと思っています。
#検索よけ、ダウンロードよけ
所属する合唱団で練習動画を限定公開することになった。
プロの先生にお願いしてZoom越しに体操と発声のご指導をいただき、それを録画して参加者が見返すのに使おう、という趣旨。
少額とはいえ参加費用を徴収する関係上、普段の練習録音のようにYouTubeに上げてURLを告知、というわけにもいかない。
- 検索よけを施したサイトを新規に立ち上げる
- ダウンロードしにくいように(+ファイル全体を読み込まなくとも再生が開始できるように)動画は細かく分割してHLSで配信する
という方向性が示された。
#Elastic Transcoderじゃだめですか?
AWSのElastic Transcoderを試す。元動画を既存のs3バケットに放り込んで、ウェブ画面からトランスコード処理のこまごまとしたパラメータを入力して起動。
出力先のs3バケットを公開用に立ち上げたWebサーバーにマウントすれば、元動画のアップロード→処理の起動→video.jsを埋め込んだHTMLを修正、だけで完了するなあ。よしよし。
…え、金がかかるのはだめですかそうですか。
MediaConvertもだめですよね。どう違うかも調べずじまいでしたが。
#ffmpegにたどり着くまで
そりゃあGoogleで検索しますよね。「m3u8 ts 分割」とか、「HLS m3u8 分割」とか。
いくら検索しても逆向きのツール(ストリーミング配信されている動画を結合して.mp4とかの形に変換する)ばっかり出てくる。まったくもう!
#コマンド一発、しかし強力なコマンドほどパラメータは難しい
ffmpegのパラメータ設定は本当にややこしいので、GUIをかぶせたものをインストールすべきだったと後悔している。
そして、正しい設定の組み合わせについてはちゃんとわかっている方がたくさん投稿しているのでそちらを参照されたい。
私がここで書きたいのは一点だけ。
「-f hls で動画を細かく分割するときは -hls_list_sizeに十分に大きなサイズを指定しておくこと!」
-hls_list_sizeのデフォルト値は5です。hls_timeのデフォルト値は2秒なので、10秒を超える動画をデフォルト値のままでHLS分割してしまうと、動画のラスト5秒だけしかプレイリストには記述されないので注意。