2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FFmpegで png 画像から mp4 動画を作成

Posted at

FFmpeg とは?

FFmpeg は、マルチメディアデータの処理に特化したオープンソースのソフトウェアフレームワークで、音声、動画、画像などの変換、編集、ストリーミング、エンコーディングなど、さまざまな機能を提供されています。編集をガチしないでいい人には、簡単に動画がつくれていいと思います。

FFmpeg は多くのコーデックとフォーマットに対応しており、例えば MP4 や MKV といった動画形式の変換、MP3 や AAC などの音声形式の変換が可能です。さらに、解像度の変更、音量の調整、字幕の追加など、映像編集やエフェクト適用もコマンドラインから行えます。

FFmpeg を使用して、複数の png 画像から mp4 動画を作る機会があったので、PowerShellスクリプトを残しておきます。

PowerShell スクリプト

imgs2mov.ps1
# ディレクトリのパスを指定
$directoryImage = "D:\PowerShell\img\*.png"
$directoryMovie = "D:\PowerShell\mov\"

# ディレクトリ内の png ファイルを取得し、変数に代入
$directoryItems = Get-ChildItem -Path $directoryImage | Sort-Object Name

# 画像ファイルから動画を作成
$outputList = @()
foreach ($file in $directoryItems) {
    $mp4filename = $file.BaseName + ".mp4"
    $output = $directoryMovie + $mp4filename
    $outputList += $output
    $fullpath = $file.FullName
    ffmpeg.exe -framerate 5 -i $fullpath -vcodec libx264 -pix_fmt yuv420p -crf 20 -r 30 $output -y
}

# ffmpegで指定する動画リストを作成
$mp4ListupFile = $directoryMovie + "list.txt"
$outputList | ForEach-Object {"file '$_'"} | Out-File -FilePath $mp4ListupFile -Encoding ascii

# 個々の動画をつなげて1つの動画にする
$output = $directoryMovie + "output.mp4"
ffmpeg.exe -f concat -safe 0 -i $mp4ListupFile -c copy $output -y

-framerate オプションの値を変更することで、画像あたりの動画の長さを変更できます。

framerate 動画の長さ
10 0.1s
5 0.2s
2 0.5s
1 1.0s
0.5 2.0s
0.25 4.0s
0.2 5.0s
0.1 10.0s

動画作成例

スマホのスクリーンショットから作成したデモ動画です。(200万~800万)

output800.gif

さいごに

今回は、単純に動画をつなげましたが、ffmpeg には、フェードイン・フェードアウトといったように動画間にエフェクトを付けることができます。やり方はまた投稿しようと思います。

Xfade – FFmpeg
https://trac.ffmpeg.org/wiki/Xfade

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?