google tag

My Soundcloud Channel --- Testing :D

Friday, November 16, 2007

今日の LinuxでのWebcam撮影/ビデオ編集 メモ

Webcamでちょっとしたデモを撮影したり、ちょっとビデオ編集してみたり、という事をLinuxでどうやっているか、というメモ... Debian etch を基本とする。 なお vloopbackはソースからコンパイル。Lives と mencoderは 非公式マルチメディアリポジトリ http://www.debian-multimedia.org/ を利用してインストール。

ニコニコ,YouTube, flvだの ffmpegなどのキーワードで本サイトに飛んで来られる方が多いので需要があるかな、ということで ヒントになれば...
---

撮影デバイス --------------

ビデオカメラ持っていれば、コンポジット出力をビデオキャプチャーカードに入力するという方法もあるしその方が画質はよいだろう。 でも持ってないので安いWebcamを使わざるを得ない...

Qcam messenger (Logitec)



比較的安価だが、画質はそれなり。低速なのでQVGAで15fpsも怪しい感じ。
デジタルカメラの動画の方が余程綺麗に映るが、手持ちのIXY500は3分という撮影時間制限があるので、画質は悪いが時間や容量の制限のないWebcamの利用は、それなりのメリットはある。

Qcamドライバーの導入は以前の記事を参照の事


録画ツール ---------------

xawtv ...


元々はTV視聴用のアプリケーションだがビデオ録画も可能、という事でWebcamの動画はこれで撮影している。 メニューから比較的簡単な設定、操作でaviファイルとして録画可能...

とは言Webcamとの相性が悪いのか、後述する vloopbackとeffectvを通さないとうまく avi として録画できない...xawtvだとwebcamの画面サイズの制御がうまく出来ない? ようなのだ... effectv+vloopbackだと素直に録画できるのだが...

webcamの速度が遅いのでフレームレートは15fps程度で撮影、フォーマットはaviで映像はmjpeg、音声は16bit Stereo 48000 PCMの設定が無難かな。ただしカメラが低速なせいか映像と音声がちょっとずれるので撮影後なんらかの形での補正が必要。

Effectv で エフェクトをかける -------

ビデオデバイスの映像に直接エフェクトをかけるEffectvを経由して録画するには

vloopbackのインストールと読み込み

ソースをダウンロードしてmakeする... debパッケージ作るのがDebianとしては本筋なのだけどよくわからないから make , make install している。カーネルモジュールになる。カーネルupdateの場合は再コンパイル等必要になるのかな... よくわからないけど使えてるからこれでよし...
vloopbackの読み込みは

modprobe vloopback

Effectvの起動

effectvとして公式パッケージ化されているのでaptでインストールして、

effectv -device /dev/video1 -vloopback /dev/video2 (Webcamが/dev/video1の場合の例)



これで video1の映像にeffectvのエフェクトがかかり、それがvloopbackの入力デバイスvideo2 となる。さらにvideo2の映像がvloopbackの出力デバイスvideo3として現れ、これが他のアプリケーションで利用可能となる。

xawtvの起動

xawtv -c /dev/video3 (vloopback の出力デバイスを指定)

と起動して、xawtvで録画する。

↓ こんな風に、撮影映像に直接エフェクトがかかる↓





ビデオ編集, エンコードツール ---------

avidemux



非常にシンプルなビデオエディター。軽量、高速でちょっとした編集に向いている。複雑な編集には向かない。 リサイズ、画質調整等、長さ調整、部分カット、などに向いている。
音声タイミングにオフセットを持たせられるので、撮影時の映像とのずれの修正が出来る。いくつかコーデックが選択できるが,映像はmpeg4やx264音声lame(mp3)、コンテナはaviが無難か。

lives




avidemuxと比べると遥かに高機能な本格派エディター。ただし編集するビデオクリップは読み込み時に全フレームを画像データに展開するためデータ読み込みに時間がかかる。またエンコードも遅い。先のEffectvのエフェクター他各種エフェクター装備。 動作はやや不安定? な所がある。 高機能は魅力的ではあるが読み書きがとても遅いのがネックでWebcamの動画程度の編集ならavidemuxで十分という感じ。

エンコーダー ---------

ffmpeg

非常に高速に動作するし、コマンドも比較的覚えやすい、使いやすいツールであると言える。
例えばニコニコ用に音と画をあわせてflvにエンコする場合はこんな感じ

ffmpeg -i oto.mp3 -i .eizo.avi -vcodec flv -r 15 -b 500k -s 512x384 -acodec copy nikoniko.flv

ただ xawtv撮影avidemux編集ファイルをflvなどに再エンコすると変な(壊れた?)フレームが出来て映像/音声が大きく乱れる、遅れるという事が... たぶん元ふぁいるのエンコ具合が悪いのだろうが...

今のところ、avidemuxのVideoのFilterをかけると乱れが出ない、という経験的な結果が出ている、ので、avidemux のビデオフィルター ( Video > Filters > Colors ) の MPlayer eq2をデフォルト値でかける(画質は変わらない) という処置で回避している。

mencoder

非常に多機能、多フォーマット対応なエンコーダーであるが、manを見てもらうとわかる通りオプションの多さ、書式の複雑さにめまいを覚える。いつもmanページを見て探すのだけれどたどり着けずに挫折... 普段使う分にはffmpegで十分であるし、ffmpegの方が速いのであまり出番はない....





その他のツール ----------

audacity



音声の修正、エフェクト等を行いたい場合は、撮影後、音ずれを修正して保存したaviファイルから音声トラックを抜きだし、audacityで各種エフェクト、修正を加える。修正後の音声はwavやmp3で吐き出し、avidemuxで再度映像と合わせるか ffmpegで再エンコする事になる。

mplayer

メインで利用してるメディアプレーヤー。 コマンド一発で再生出来るので、撮影後、エンコ後の結果を見るのに便利。 既存ファイルから映像のみ、音声のみのファイルに分離する機能もある。例えば 音声ファイルのみ抜き出したい場合は

mplayer hoge.avi -dumpaudio

とすると、 stream.dump という名前で音声部分だけが抜き出せる。
あるいは既存映像に、別に用意した音声を合わせて再生確認したい場合には

mplayer eizou.avi -audiofile oto.wav

とすると -audiofileで指定した音声トラックで再生できる。音声を一度抜き出してaudacityなどで編集した場合、一度これでタイミング等の確認をしてから ffmpegなどで最終ファイルに再エンコすればよい。

---
とまぁ、こんなツール類を使っている次第である。Linuxでのビデオ編集環境は あまり恵まれているとは言えないかもしれないが、それなりに道はある様だ...