2021/06/26(土) [n年前の日記]
#1 [love2d][windows] ffmpegでogvに変換
2Dゲームフレームワーク love2d は、Ogg Theora フォーマット(Theora and Vorbis, 拡張子は .ogv)の動画ファイルを再生できるらしいのだけど。どうやって ogv ファイルを作成したらいいのか分からなかったので調べてみたり。
_love.graphics.newVideo - LOVE
Windows10 x64 20H2上で、XMedia Recode 3.5.3.8 64bit版や Moo0 動画変換器 1.28 をインストールして ogv に変換できるか試してみたけれど。 *1
_「XMedia Recode」無料の動画一括変換ソフト - 窓の杜
_XMedia Recode のダウンロードと使い方 - k本的に無料ソフト・フリーソフト
自分の環境の場合、どうやら ffmpeg を使って変換するのが妥当かなと…。
_TheoraVorbisEncodingGuide - FFmpeg
動作確認環境は Windows10 x64 20H2 + ffmpeg 4.3.2-2021-02-27-full_build-www.gyan.dev。
連番画像から ogv を作成する例。
input.avi から ogv を作成する例。
映像関係のオプション指定の意味は以下。
音声関係のオプション指定の意味は以下。
ちなみに、Ubuntu Linux 20.04 LTS 上では、ffmpeg2theora というコマンドラインツールをインストールすることができて、ソレを使っても ogv に変換できるという話も見かけたけど…。
VMware Player + Ubuntu 20.04 LTS 上では ffmpeg2theora 0.29 がインストールされたので試してみたけど、変換途中で Segmentation fault (コアダンプ) と出てしまった。
まあ、ffmpeg で ogv に変換できるようだから、あえて ffmpeg2theora を使わなくてもいいのかなと…。
_love.graphics.newVideo - LOVE
Windows10 x64 20H2上で、XMedia Recode 3.5.3.8 64bit版や Moo0 動画変換器 1.28 をインストールして ogv に変換できるか試してみたけれど。 *1
_「XMedia Recode」無料の動画一括変換ソフト - 窓の杜
_XMedia Recode のダウンロードと使い方 - k本的に無料ソフト・フリーソフト
自分の環境の場合、どうやら ffmpeg を使って変換するのが妥当かなと…。
_TheoraVorbisEncodingGuide - FFmpeg
動作確認環境は Windows10 x64 20H2 + ffmpeg 4.3.2-2021-02-27-full_build-www.gyan.dev。
連番画像から ogv を作成する例。
ffmpeg -framerate 60 -i ..\render\%04d.png -c:v libtheora -q:v 10 output.ogv
input.avi から ogv を作成する例。
ffmpeg -i input.avi -c:v libtheora -q:v 7 -c:a libvorbis -q:a 5 output.ogv ffmpeg -i input.avi -c:v libtheora -b:v 1000k -c:a libvorbis -q:a 5 output.ogv
映像関係のオプション指定の意味は以下。
- -c:v libtheora で Theora video format を指定。
- -q:v N で映像品質を指定。0 - 10 が指定できる。10が最高品質。
- -q:v は -qscale:v のエイリアス。
- -q:v を指定しないと、-b:v 200k が使われる。ビットレートが低過ぎて酷い画質になる、というか、なった。
音声関係のオプション指定の意味は以下。
- -c:a libvorbis で Vorbis audio format を指定。
- -q:a Q で音声品質を指定。-1.0 - 10.0 を指定できる。10が最高品質。
- デフォルトは -q:a 3 で、112kbps になる。
- Q=4以下の場合は (16 x (Q + 4)) kbps になる。(例 : Q=3 : 16x(3+4) = 112 kbps)
- Q=8未満の場合は (32 x Q) kbps になる。(例1 : Q=5 : 32x5 = 160 kbps) (例2 : Q=6.25 : 32x6.25 = 200 kbps)
- それ以上は (64 x (Q - 4)) kbps になる。(例 : Q=10 : 64x(10-4) = 384 kbps)
ちなみに、Ubuntu Linux 20.04 LTS 上では、ffmpeg2theora というコマンドラインツールをインストールすることができて、ソレを使っても ogv に変換できるという話も見かけたけど…。
sudo apt install ffmpeg2theora
ffmpeg2theora input.mp4
VMware Player + Ubuntu 20.04 LTS 上では ffmpeg2theora 0.29 がインストールされたので試してみたけど、変換途中で Segmentation fault (コアダンプ) と出てしまった。
まあ、ffmpeg で ogv に変換できるようだから、あえて ffmpeg2theora を使わなくてもいいのかなと…。
◎ ffmpegを使って連番画像から動画ファイルを作成。 :
ffmpeg を使えば連番画像から動画ファイルを作成することもできる。
..\render\0000.png - xxxx.png を変換する場合は、以下のような感じ。
_ffmpeg 可逆圧縮コーデックのエンコード速度 - ニコニコ動画研究所
今回調べていて今頃知ったのだけど、ffmpeg は可逆圧縮codec UtVideo に対応していたらしい。素晴らしい。可逆圧縮なので元の連番画像と比べても劣化しないわけで、中間作業用の動画ファイルとしてはイイ感じ。もちろんファイルサイズは不可逆圧縮フォーマットと比べて大きくなるけど。
余談。以前の自分は、VirtualDubMod 1.5.10.2 build 2542 を使って連番画像から動画にしていたらしい…。
_mieki256's diary - 連番画像から動画を作る操作手順をメモ
..\render\0000.png - xxxx.png を変換する場合は、以下のような感じ。
ffmpeg -framerate 60 -i ..\render\%04d.png -vcodec utvideo output.avi
- 連番画像から動画を作る場合のフレームレートは -framerate N で指定するのが正確らしい。
- ffmpeg は、可逆圧縮codecの UtVideo codec に対応している。
- 他に使える可逆圧縮codecとして、-vcodec ffvhuff や -vcodec huffyuv があるらしい。
_ffmpeg 可逆圧縮コーデックのエンコード速度 - ニコニコ動画研究所
今回調べていて今頃知ったのだけど、ffmpeg は可逆圧縮codec UtVideo に対応していたらしい。素晴らしい。可逆圧縮なので元の連番画像と比べても劣化しないわけで、中間作業用の動画ファイルとしてはイイ感じ。もちろんファイルサイズは不可逆圧縮フォーマットと比べて大きくなるけど。
余談。以前の自分は、VirtualDubMod 1.5.10.2 build 2542 を使って連番画像から動画にしていたらしい…。
_mieki256's diary - 連番画像から動画を作る操作手順をメモ
*1: ちなみに、XMedia Recode で変換・出力した ogv は MPC-BE x64 1.5.6 build 5797 で再生できたけど、Moo0 動画変換器 で変換・出力した ogv がガクガクして再生できなかった。
[ ツッコむ ]
以上、1 日分です。