Tweet


* ffmpeg で動画の速度変換 [#w78eb5f7]

ニコニコ動画に試しに動画を上げてみようか,という気分になった.
昔撮影した,林道を走るビデオがあったので,こいつをネタにしようとする.
が,走っているところを延々と見せられてもだれるだけである.
それじゃ早回しにしてみよう,と思いつく.

で,手元にあるビデオ編集ソフト(ULEAD VIDEOSTUDIO 6)でそういう変換をさせてみようとするが…そんな機能はないようである.

** というわけで,ffmpeg なんだけど [#yf705f8f]

というわけで,ffmpeg でそういう機能が無いか,とオプションを探してみる.
一番近そうなのは

:-r fps|Set frame rate (Hz value, fraction or abbreviation), (default = 25).

というやつである.
というわけで,やってみる.

 ffmpeg -r 48 -i imag0003.avi -vcodec copy -an foo.avi

が,これではうまくいかない.
フレームレートの設定をいろいろ変えてみて試してみた結果,この -r オプションは入力をリサンプルするだけのもののようである.
つまり

       → t
 元     A   B   C   D   E   …
 変換後   AAAABBBBCCCCDDDDEEEE…
 欲しいもの ABCDE…

時間方向に対しての伸縮はせずに,その間の刻みを増減するだけのもののようである.

話は脱線するが,-r の値を元ビデオより小さな値にすると「コマ落とし」効果をかけることができる.

 元   ABCDEF…
 変換後 AACCEE…

ビデオカメラで撮影した動画を 8 ミリフィルム風のちょっとカクカクした感じにする,というようなことに使えるでしょう.

** yuv 形式 [#s2ad288e]

で,ffmpeg のマニュアルを読むと「yuv 形式」なんてのがあるようである.
とりあえず,画像部だけを yuv 形式で出力させる.

 $ ffmpeg -i imag0003.avi imag0003.yuv

で,ファイル型式を調べてみると…

 $ ffmpeg -i imag0003.yuv
 …(略)…
 picture size invalid (0x0)
 [rawvideo @ 0x4226f0e0]Could not find codec parameters (Video: rawvideo, yuv420p)
 imag0003.yuv: could not find codec parameters

ホントに生画像列データのみのようで,画面サイズやフレームレート情報も入っていないようである.
ということは,

> 元動画と違うフレームレートを指定して形式変換すれば,速度変換ができる

ということになる.
というわけで,試してみる.

 $ ffmpeg -s 320x240 -r 26.608 -i imag0003.yuv -vcodec copy -an imag0003x2.avi

(元の imag0003.avi は 13.304 fps という中途半端なフレームレート)

で,生成された imag0003x2.avi を再生してみると…

> 見事2倍速になっている

というわけで,動画像はおっけー.

** 音声の速度変換 [#peb82f0e]

動画像のほうが2倍速になったのに音声がそのままでは「音ずれ」どころの騒ぎではない.
というわけで,音声の方も早回しの速度変換をかけてみる.

まず,元動画から音声だけを抜き取る.

 $ ffmpeg -i imag0003.avi imag0003.wav

ここでの変換ログを見ると,imag0003.wav は
- サンプリング周波数 8000 Hz
- モノラル
- linear PCM

という形式になってます.

Linux での場合は

 $ sox -r 16000 imag0003.wav imag0003x2.wav

と,sox コマンドで -r オプションで入力ファイルのサンプリング周波数をオーバライドさせることで速度変換をすることができます.

Windows 上では,OS 標準添付のサウンドレコーダが使えます.
+ imag0003.wav を読み込ませる
+「エフェクタ」−「再生速度を上げる」
+「ファイル」−「名前を付けて保存」

で2倍速には変換できるようです.

*** 動画像と音声のマージ [#e5748d11]
** 動画像と音声のマージ [#e5748d11]

動画像と音声の2倍速変換ができたので,マージしてみます.

 $ ffmpeg -i imag0003x2.avi -i imag0003x2.wav -vcodec copy -acodec copy imag0003x2av.avi

ここでは,この後編集ソフトでいじることを考えて,動画像も音声も無圧縮のままマージしています.
ここで直に flv ファイルにしてしまいたい場合は

 $ ffmpeg -i imag0003x2.avi -i imag0003x2.wav imag0003x2.flv

でできます.

また,慣れてきたら2倍速動画像ファイル (imag0002x2.avi) の生成を省略することもできるでしょう.
 $ ffmpeg -r 26.608 -s 320x240 imag0003.yuv -i imag0003x2.wav \
 -vcodec copy -acodec copy imag0003x2av.avi

** というわけで [#e35f9d2d]
この後編集ソフトで文字を入れて,できた動画がこれ. 

http://www.nicovideo.jp/watch/sm1476071

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS