1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ffmpegで動画をn倍速に一括変換するバッチ処理

Posted at

はじめに

片道2時間ほどのお出かけをしました。
ドライブレコーダーで撮影した映像を手間をかけずに編集したいのですが、
厄介なことに1分毎に1ファイルになっていて非常に扱いづらいです。

私たちの味方、ffmpegちゃんをこき使ってなんとかしましょう。

やりたい事

  • 動画は5倍速に変換したい
  • 動画は1つのファイルに結合したい
  • 100ファイル以上なのでバッチ処理したい

条件の整理

必要なファイル Path
ffmpeg.exe C:\Program Files (Freesoft)\ffmpeg\bin
inputファイル F:\temp\input\*.mp4
outputフォルダ F:\temp\output

2倍速に変換する

変換したい動画ファイル(*.mp4)をinputフォルダに入れて、下記バッチ処理を conv.bat に保存して起動します。

conv.bat
@echo off
cd /d "F:\temp\input\"
for %%a in (*.mp4) do (
  "C:\Program Files (Freesoft)\ffmpeg\bin\ffmpeg.exe" -i F:\temp\input\%%a -vf setpts=PTS/2.0 -af atempo=2.0 F:\temp\output\%%a_x2.mp4
)

cdでカレントディレクトリを変更し、そのディレクトリ内の *.mp4 というファイル全てに対してループ処理

setpts=PTS/2.0 映像を2倍速に変換
atempo=2.0  音声を2倍速に変換

5倍速に変換する

conv.bat
@echo off
cd /d "F:\temp\input\"
for %%a in (*.mp4) do (
  "C:\Program Files (Freesoft)\ffmpeg\bin\ffmpeg.exe" -i F:\temp\input\%%a -vf setpts=PTS/5.0 -af atempo=2.0, atempo=2.0, atempo=1.25 F:\temp\output\%%a_x2.mp4
)

atempoは2.0までしか処理できないので、複数重ねて5倍速に変換します(2.0×2.0×1.25=5倍)
3倍:atempo=2.0, atempo=1.5
4倍:atempo=2.0, atempo=2.0
5倍:atempo=2.0, atempo=2.0, atempo=1.25
6倍:atempo=2.0, atempo=2.0, atempo=1.5
7倍:atempo=2.0, atempo=2.0, atempo=1.75
8倍:atempo=2.0, atempo=2.0, atempo=2.0

動画を1つに結合する

さいごに

やったー!これで5倍速の1ファイルになったぞー!・・・と思って再生してたらキッチリ12秒毎にカクツク事に気付く。
つまり動画と動画を結合した所で何かが起きていると思い調べた結果がこちらです。

事実:n倍速に変換した際に、動画の末尾数フレームが欠落している
推測:変換時の剰余フレームは削除される為、動画の末尾で余りフレームを削除して調整されている
   (フレーム数は整数になる為)

なんということでしょう・・・
対策として先に結合してから5倍速に変換しました・・・
これ何とか出来るんでしょうか。力尽きたのでここまでにします。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?