読者です 読者をやめる 読者になる 読者になる

uzullaがブログ

uzullaがブログです。

カンファレンスなどの長回しの動画を良い感じに分割するffmpegの話

ちょうど一月前に開催されたヤパチーエイジアハチオウジというカンファレンスでは、がんばって動画を録画しておりました。

主要な動画はアップロードが完了しており、絶賛公開中でございます!是非みなさんみてください!!

www.youtube.com

皆さんは忙しいので最初にオチ

タイトルの事をさっさと話せという感じですね。オチから言えば、長回し派の人はこれをつかえ!!(ババーン)

ffmpeg -ss 2035 -i raw/croom-7_2.mov -t 2475 -c:v copy -filter_complex highpass=f=500 ./C_1_hisaichi.mov

わかる方はもうOKでございます。

この後は蛇足的にこれの意味や意義を説明していきます。

動画の公開は大変である

様々なカンファレンスや勉強会が開かれる昨今ですが、録画が後日公開される事は少ないです。これは単純に大変なのです。

  • 機材を買うなり借りるなりして
  • 現地によっこらともっていって
  • 良い撮影ポイントに三脚をたて
  • けられないように囲って
  • 結構遠くから電源ケーブルをひっぱって、それもけられないようにして…
  • ビデオカメラの使い方をおぼえて(おぼえてる人を用意して)
  • 色々な映像設定を調整して(あるいは設定をオートにもどして)
  • 色々な音声設定を調整して(あるいは設定をオートにもどして)
  • トーク開始前にちゃんと録画を開始して
  • (場合によってはトーク毎に停止して)
  • 終わったら機材を丁寧に撤収して
  • (ここらへんでイベントの打ち上げがある)
  • 機材をもってかえったり、発送して
  • PCに動画を転送して
  • めっちゃやる気をだして
  • 編集して
  • エンコードして
  • Youtubeにアップロードして
  • メタデータを付与して
  • 宣伝する

といった大変さがある。ほんとうに大変よ!

この中で一番怖いのが「録画ミス」ですね。録画をミスるとすべてがなかったことになる。なお、今回初日の頭2トーク分でやらかしております、大変申し訳ございません。

事故原因は単純で、録画開始忘れです。セッティングがおわったあとに「まだ開始時刻ではないから…」と停止してしまった*1模様。ミスを防ぐには、カメラを立てた後は無駄でも録画しっぱなしにするしかないと思う。

まあ、本来見回るオペレータをちゃんとつけられるといいのだけれど、なかなかカンファレンスで人をアサインしていくのはむずかしい…*2。そうなると、ヒューマンエラーを防ぐために、録画のボタンを出来るだけ押さない、みたいな運用をした方が良い(と、私は信じている)。

つまり長回し(朝に録画ボタンをおして、その後は触らない)になる。

本題!長回しの動画をどうやってチョップしていくか

と、いうことで、あなたの手元には長回しの動画、20GBくらいの8時間くらいの動画ができました!(実際にはそれがトラック数x日数)

さあ、これを切っていくぞ!という事になるのですが…。

ビデオ編集ソフトといえば何をつかいますか?いまでこそMacならiMovieや、Adobe CCでPremiereとかのソフトは気軽に使えるようになりましたね。でも、実際にこれで8時間*4トラックとかやると大分大変。

なんというか、こういったソフトはバッチ処理ができないんですよね(俺がしらないだけかも知れない)、なのでつきっきりになる必要がある。

  • 「1本分設定したぞ!(これはそんなに時間かからない)」
  • レンダリング!」
  • 「終わらない…(エンコードはすごいCPU使う)」
  • 「(ちらっ)終わったかな?…おわってない。飯でも食いに行くか…」
  • 「(5時間後)忘れてたけどおわってた!」
  • 「さっきやったことと同じことをまたマウスポチポチでござる…」

こんな感じで「普通のお仕事をしながら隙間時間にやろうとすると」、精々1日に数本しかつくれない。それが何日も(何ヶ月も?!)続く…。

苦行!!

20160802 追記

Premiereはレンダリングをまとめておこなう事が可能とのことです(試してはいません)。

ということで!

当初の通りですが、これが使える!!(ババーン)

ffmpeg -ss 2035 -i raw/croom-7_2.mov -t 2475 -c:v copy -filter_complex highpass=f=500 ./C_1_hisaichi.mov

説明していきましょう。

その前に、ffmpegのすばらしいところ

ffmpegはリアルタイムな編集プレビューこそできないが、バッチ処理が出来るので最高。

手元のPCでシェルスクリプトをつくっておけば、別のPCで全く同じ動作をしてくれるのも最高です。*3私はメインマシンを占有されたくなかったので、動画をUSBHDDに保存しておいてあまってるMacbookで回しました(アップロードも同様)。

今回は単なるカット編集なので、「開始時刻(ss)」「開始時刻から何秒で終わらせるか(t)」がパラメーターになります。

開始時刻をどうやって計るか?

普通にメディアプレイヤーで「…このトークは1:34:09から開始だ(メモメモ)、で、2:05:10に終わりと…(メモメモ)」とやっていきました。

大体8時間の動画をチェックするのに(内容を精査しないのであれば)15〜30分くらいですかね。そして、この作業はスケールします!何人かで手分けすればすぐにおわるでしょう。

難点として、ffmpegのオプションでは「すべてを秒」で表現するのですが*4Macで再生時間を秒で表示できるプレイヤーをみつけられなかったので、H:i:s -> s の変換は適当にやり*5ました。

20160802追記

カンファレンスなどの長回しの動画を良い感じに分割するffmpegの話 - uzullaがブログ

ffmpegのオプションは秒じゃなくても-ss h:m:s -t h:m:sと指定できます

2016/08/02 22:03
b.hatena.ne.jp

とのことです。すごい!ちゃんとドキュメントみればよかった!

-c:v copy のつよさ

これを指定することで、動画のエンコードを変換しません。動画のトランスコードが発生しなければ5〜40倍速くらいで変換できるので非常に高速です。(ffmpegの都合ですが、拡張子はソースとそろえないとエラーになるとおもいます)

-filter_complex highpass=f=500 について

この指定は音声フィルタです、ここではハイパスフィルタで低音を消しています。

今回はカメラの設置場所の都合で、ソース映像が反響音でこもった音になってしまい、相当に聞き取りづらかったのでそれを解消しています。

私がつかっているメディアプレイヤーのMovistには音声EQがついていましたので、それをつかって何Hzあたりをおとせば聞こえやすくなるか確認し、500hz以下を切り飛ばせば聞こえやすくなることがわかりました。(これは会場や機材にもよるでしょうが)

本来、音声クオリティは録音時にがんばらないとどうしようもない。

  • 環境音をへらす、ひらたくいえば観客からマイクを離す
  • 良い機材(ガンマイクなど)をつかう、LINEからひろう、ワイヤレスで登壇者につける
  • 機材由来のホワイトノイズなどをへらす
  • 壁からの反響をへらす

どれもこれも大変です。しかし「美しい音」は目指さずに「なにいってるかわかる」というレベルにするだけならバンドパスフィルタ(なり、ハイパスなり、ローパスなり)を通すだけで大分よくなりますね。

動画にはポッドキャストとちがって画面がありますからね、そんなに音をパーフェクトにしなくとも(私的には)気にならない。

YoutubeへのULについて

あとは、バッチで生成された何十個ものファイルをガッとつかんで、とりあえず限定公開モードでブラウザ内にドラッグアンドドロップでイナフ!

…といいたいところなんですけど、ブラウザによってはFile APIDnDだと2GB以上のファイルをアップロードできないことがあります(ファイル選択ダイアログから、1ファイルだけ選んでのアップロードは大丈夫だった)*6

これ、タチが悪い事にエラー表示が発生しないので後で気付きます、アップロードしたらかならず数を数えましょう。

アップロードできたら…

あとはちまちまとなおして公開にしていきましょう。

大変ですが(やるき的な意味で)ここも多人数でやっつけられるタスクです。

以上です

結局一ヶ月くらいかけて60本弱の動画を公開したのですが、ほとんどが

  • ちまちましたテキスト入力が大変
  • これをやって給料がでるわけではない^^
  • つらいご意見で心にダメージ

といった感じの「やるき」の問題でした。なので、やる気さえあれば、このスキームで一週間で100本位いけるんじゃないでしょうか。

逆に、いまさらではありますが、10本くらいなら根性でiMovieでやったっていいとはおもいます。

ということで、以上です。

以下はあるあるネタ(愚痴っぽい)なので、本当にカンファレンスで動画を公開する羽目になった方以外は、平和の為に速やかにタブを閉じるなりをお願いいたします。

むずかしいところ

ネット上にアップロードしたコンテンツは挨拶代わりに「クソ」ってすぐに言われます。とにかく「画面がちいさい、バカなの?」「動画の音がクソすぎる」って本当に、必ず、すぐにいわれます。*7

彼らには本当に(本当に!)悪気とかはなくて、指でネットと電脳結線された皆さまは(良い悪いではなく)率直に脳内を高速シェアしているだけです。しかし、公開する側からすればそんな視聴者側の事情はそれはそれでしったこっちゃないわけで、なにかと布団にはいりたくなります*8

とはいえ、どんなにつらい気分になっても公開しないと情報は後世にはのこらないのです。完璧はめざさず、辛い意見から目をそらしましょう。なお、相当に金と手間をかけても「この動画の最前列にすわってるやつが咳をしてて最悪、どうにかできなかったのか」といわれて結局つらいだけです*9。なんとかやっていきましょう(私は誰に言っているのだろうか)。

しかも、あまり見てもらえるワケでもない…

身もフタもないんですけど、皆さんにきいてみると「動画を公開してくれ!」と言われる割には、割と皆さん見ないwウケる〜w

~モチベーションになるからみてくれ!!~

Youtubeは非情にも再生数を公開しているので皆さん確認してみましょう、多くて三桁、大体二桁でございます。この人数(PVなので、UUはさらに減るよね…)の為に機材を用意して、後日編集して…というのは完全に厳しい判断に迫られる。

みなさんに見ていただけない理由は色々想像できますが、Youtubeって隙間時間で見づらいんですよね。Youtubeのダウンロード再生は規約で禁止されているし…。これがポッドキャストならもっと見られるのかな…って思うんですが…。

(ところでビデオポッドキャストというものがあるらしいが、詳しい人いらっしゃいますかね?)

それよりもスタッフ救済の意義

話がかわるようですが、カンファレンスの現場ボランティアスタッフ(特に部屋担当)は、当日担当箇所に張り付いている必要があります。そうなると自由に見たいトークを聴講できない。勿論主催である私もみれない。

スタッフはカンファレンスが好きだからこそ協力してくれているのに、その人達がみれないのでは寂しいですよね、そのためにも録画して後で共有してあげたいですよね。ということで、公開前提ではない録画というものが結構あります。

(これはNG動画のチェックなども不要だし、メタデータを付ける必要もないので大分楽だったりします)

ということで、やはり公開しないにせよ録画はしていきたいですね。

以上です

カンファレンスのトーク「録画」の情報は余りシェアされません。事例がそんなにないからね、しかたないね。結果として属人性がかなり高いタスクになっています。

「どこのカメラがいいのか」(10万以下ならSONYを買っておけと私は思います)、「録画の画質設定はどうすべきか」(長回しではMP4は罠、AVCHDでないとギャップが途切れる&720Pの低ビットレートで十分)みたいな情報を一つとっても、詳しい人にきかないとよくわからない。

ということで、本エントリを書いたのでした。

なんか竜頭蛇尾になってますが、愚痴の箇所をかいたらつかれてしまった。

繰り返しになりますが、Youtube以外の、お金をあまりかけずに、スマホで通勤中オフライン再生できるいい感じのメソッドをご存じの方がいらっしゃれば、是非教えて下さい。

しかし、もう開催から一ヶ月経ったのか…時間が経つのは早いですね!

以上です。

*1:まわしっぱなし前提だったので、丁寧に止める人がいるとはおもっていなかった、そしてその周知が徹底されていなかった

*2:「慣れている人」ならいいけどボランティアスタッフは大抵素人の人が多いので

*3:ただ、ffmpegのバージョンはそろえておきましょう

*4:多分それしかない

*5:PHPでコードをかき

*6:なお、個人的にはSafariが一番安定してアップロードできると思います。

*7:言われない場合、多分見られていない

*8:剤などもありますが、個人的にはつらいことがあったら一旦寝るのが一番だとおもっています!

*9:たんなる実話ですが、りろんじょう出来る事でも、そこまでやるわけないやろ…

「PHP勉強会@東京〜番外編〜」で、composer/monologの作者の方の話をきいてきました

eventdots.jp

composer、monologの作者であり、そしてPSR-3の起草者でもある Jordi Boggiano さんをお迎えし、PHP勉強会@東京の番外編を開催します!

すごい、昨今のPHPerならどちらも普段からよく使うものだ!私も毎日使うし、是非直接お話を聞きたい!

ということで行ってきました。会場は渋谷のdotsです。

#

Jordi with me. ミーハーっぽい。

ということで、

日頃の感謝と勢いで、jordiさんにジャパニーズウイスキーをWishlistからおくろうとしたのだけれど、ダメだった。

f:id:uzulla:20160723022052p:plain

しかたないので懇親会できいたら、その内直すよ!とのことでした。直ったら是非贈りたい。

なお、日本のピートの効いたウイスキーをおしえてくれとのこと、残念ながら俺はしらんかった。

最後に

来日してくださったJordi Boggianoさん、そして、このような機会をつくってくださったPHP勉強会@東京の方々と会場のdots様に感謝いたします!

やはりお会いして懇親会などで直接お話できると、くだらない事でも有無をいわさず納得ができてよいし、感謝も伝えられる(感謝が伝わったかはわからん)。

くだらないこと is…

私「いい話有り難うございました(略)ところで、なんでComposerをインストールするコマンドラインはサイトのトップに掲載しないの?一番よく見に行く情報なんだけど」

Jordi-san「えっ、そんなにComposerを入れる事ってないでしょ…」

私「月に1〜2回はググるんだけど…」

Jordi-san「それは工夫してください、自分のシェルスクリプトを書くとか」

私「はい」

この頻度は通常ではないそうです、こちらからは異常です。

PHPBLT #5に参加しました!

phpblt.connpass.com

今回はGMOペパボ様主催の回でした!GMOペパボ様、良い会を大変ありがとうございました!

発表資料

t.co

httpoxyの話をしました(?)*1

拝聴した話で心にのこった事いくつか

(すみません、トークタイトルとお名前が正確に記憶できていないので…。後で直すかも)

  • Phalcon、PHP7対応のGA近いのかな〜
  • Snidelおもしろそう!
  • Phar、webPharがつかわれれば、さらにジャバい感じがしてたのしそう
  • ばーちーさんの司会力良い
  • 俺もポモドーロで生産性上げていきたい

最後に、お伝えしたいことは一つ

最後のsotarokさんの「PHPBLTの心得」で発表されていましたが、PHP BLTはPHPやその周辺について発表するのに、とても良い発表の場だと思いますので、ぜひとも皆さんは登壇者として参加しましょう!

もっとPHP BLTが知られ、色々なPHP企業様で持ち回りされ、盛り上がっていくと良いですね!*2

短いですが、こちらからは以上です!ありがとうございました!*3

#phpblt 5 終わり

*1:イムリーネタですが、タイムリーすぎて全員が「当然知ってる」ってレスポンスをいただきました…

*2:余談なんですけど、サイトとかできてもよいのでは?

*3:そしてすいませんでした…