静止画+音声=動画(Twitter 投稿可能 MP4)作成方法
画像ファイル+音声ファイルで、静止画音声動画(Twitter に投稿可能な MP4)をつくる方法を記す。
必要なもの
- 使用するソフト: FFmpeg
- 画像ファイル:
src.png
- 音声ファイル:
src.m4a
方法
src.png
と src.m4a
を同じディレクトリに置き、そこで以下のコマンドを実行する。
ffmpeg -y -loop 1 -i src.png -i src.m4a -shortest -tune stillimage src.mpg ffmpeg -y -i src.mpg -an src2.mpg ffmpeg -y -i src2.mpg -i src.m4a -acodec copy out.mp4
上記の通り、3 つのコマンドを上から順に実行していくと、どれかが失敗しない限り、目的の out.mp4
が生成される。
解説
3 つのコマンドを日本語で表現すると、
- 画像と音声から mpg を作成し、
- その mpg から音声を抜いた新 mpg を作成し、
- 新 mpg と音声から mp4 を作成せよ。
となる。
どうして、このような回りくどい方法なのだろうか。1 の段階でいきなり mp4 をつくればいいのではないか。これには理由がある。いきなり mp4 をつくってしまうと、VLC メディアプレイヤーでは一応再生できるものの、シークバーが効かなかったり、Twitter に投稿できなかったりと、不完全な mp4 が出来上がってしまうからだ。FFmpeg やファイルフォーマットの知識には疎い。原因不明である。
さて、以下に、コマンドの内容を一つ一つ解説する。
コマンド 1
ffmpeg -y -loop 1 -i src.png -i src.m4a -shortest -tune stillimage src.mpg
このコマンドにより、src.png
と src.m4a
から src.mpg
を作成する。src.mpg
は静止画+音声=動画である。
-y
: 出力ファイル強制上書き(必ずしも必要ではないオプション)-loop
: 静止画を動画にする際に必要らしい?-i src.png
: 画像を入力-i src.m4a
: 音声を入力-shortest
: 音声の尺と同じ尺の動画を作成?-tune stillimage
: 静止画を動画にする際に必要らしい?src.mpg
: 動画を出力
コマンド 2
ffmpeg -y -i src.mpg -an src2.mpg
このコマンドにより、src.mpg
から src2.mpg
を作成する。src2.mpg
は静止画だけの動画であり、音声はない。
-an
: 音声を無効にする
コマンド 3
ffmpeg -y -i src2.mpg -i src.m4a -acodec copy out.mp4
このコマンドにより、src2.mpg
と src.m4a
から out.mp4
を作成する。完成だ。
-acodec copy
: 音声をエンコードせず、そのまま動画の音声として使用する。(音質が劣化してもいいなら不要なオプション)