« 干し野菜を干すためのグッズ? | トップページ | マンナンライフがキレた? »

2011年2月11日 (金)

ffmpegとsoxを使って、2倍速動画を作る方法

録画した番組をささっと見てしまいたいとき、N倍速再生って便利ですよね。

パソコンだとプレイヤーソフト側で簡単にできるんですが、ポータブルメディアプレイヤーや携帯電話やスマートフォンの場合はそうはいかないみたいです。ハードの性能的な問題でしょうか、対応していないものが多いですよね。

再生時にN倍速にするのが無理なら、動画自体をN倍速に変換してしまえばいいじゃないかというのが、今回の試み。

検索してみると、その方法を紹介しているページってけっこうあります。でも、条件が微妙に違ったりするので、わたくし的環境(iriverのSPINNというPMPで再生したい)に適用してみたのが、下記。

必要なものは、ffmpeg(動画を変換するフリーツール)と、sox(音声を変換するフリーツール)。検索すれば簡単に入手できます。ググれよ、さらば与えられん。

インストールしたら、PATHも通しておいてね。

【1】yuv形式に変換(映像のみ)
ffmpeg -i test.mp4  -an test.yuv

オプション解説
-i: 入力ファイル
-an: 音声不要

【2】フレームレートを倍にして、2倍速再生に
ffmpeg -s 640x360 -r 59.94 -i test.yuv -vb 800k test2.mp4

-s: フレームサイズ
-r: フレームレート
-vb: 映像ビットレート

【3】音声のみ抽出
ffmpeg -i test.mp4 test.wav

【4】 音声を2倍速に
sox test.wav test2.wav tempo 2.0 29.97

【5】映像と音声をマージ
ffmpeg -vb 800k -i test2.mp4 -i test2.wav -r 29.97 test3.mp4

5ステップもあるなんて、なんだか面倒くさいというあなた、こんなものはバッチファイルにしてしまえば楽ちん。寝ている間に完了。

こんな感じでバッチファイルを書いて、.batファイルで保存して、動画ファイルをドラッグ&ドロップするもよし。

rem ******** %1を処理します ********
rem (1/5) 映像抽出(yuv)
@echo off
ffmpeg -y -i %1 -an %1.yuv >log.txt 2>&1

@echo on
rem (2/5) 映像速度変更
@echo off
ffmpeg -y -s 640x360 -r 59.94 -i %1.yuv -vb 800k %1.tmp.mp4 >log.txt 2>&1
del %1.yuv

@echo on
rem (3/5) 音声抽出
@echo off
ffmpeg -y -i %1 %1.wav >log.txt 2>&1

@echo on
rem (4/5) 音声速度変更
@echo off
sox %1.wav %1.wav.tmp.wav tempo 2.0 29.97 >log.txt 2>&1
del %1.wav

@echo on
rem (5/5) 映像と音声をマージ
@echo off
ffmpeg -y -vb 800k -i %1.tmp.mp4 -i %1.wav.tmp.wav -r 29.97 %1.x2.mp4 >log.txt 2>&1
del %1.tmp.mp4
del %1.wav.tmp.wav


以下、備考そして蛇足。

■フレームレート29.97の場合の例です。元の動画に合わせて適宜変えてください。
【例】
  30fpsの場合
    29.97の箇所 → 30
    59.94の箇所 → 60
  24fpsの場合
    29.97の箇所 → 24
    59.94の箇所 → 48

■2倍速の例です。他の速さにしたい場合は適宜変えてください
  3倍速の場合
    59.94の箇所 → 89.91 (=29.97×3)
    tempo 2.0の箇所 → tempo 3.0

■フレームサイズ(-s 640x360と指定しているところ)は適宜変えてください。

■yuvにするのは、いったんフレームレートの情報をなくすためみたい。(なんだか無理やり感はあるけれど)

■【2】と【5】で二度エンコードしていて無駄っぽいけど、最終的にフレームレートを29.97にしたいので、こうなってしまった。

■私の持っているPMP(SPINN)で見るのが目的なので、画質とかの詳細には一切こだわっておりません。ビットレートやコーデックは適宜変えてください。

■フレームサイズを間違うと、映像がグチャグチャになったりするから要注意。

そのうち、携帯機器のハードが進化して、こんなことせずに済むようになるとは思いますが。

FFmpegで作る動画共有サイト
FFmpegで作る動画共有サイト

« 干し野菜を干すためのグッズ? | トップページ | マンナンライフがキレた? »

パソコン・インターネット」カテゴリの記事

映画・テレビ」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: ffmpegとsoxを使って、2倍速動画を作る方法:

« 干し野菜を干すためのグッズ? | トップページ | マンナンライフがキレた? »

スポンサーリンク


スポンサーリンク


無料ブログはココログ