#author("2020-05-14T20:22:24+09:00","","") #contents * ffmpeg を使って、動画にテキスト入れる、複数の動画を並べる 2017年10月11日 [#c4e76e5c] ** 動画を回転させる [#k790b5d0] [[ffmpeg(avconv) で動画を回転させる>https://mgng.mugbum.info/815]] に従う 「-vf オプション」を使う - 左右反転 "hflip" - 上下反転 "vflip" - 右に90度回転 "transpose=1" - 180度回転 "transpose=1,transpose=1" - 右90度回転させて上下反転 "transpose=1,vflip" ** テキストのオーバーレイ [#weec52c5] [[ffmpegで動画にテキストをオーバーレイする>http://ja.akionux.net/wiki/index.php/ffmpegで動画にテキストをオーバーレイする]] や [[ffmpegで動画上にテキストを描画する>https://qiita.com/niusounds/items/797fe0743a9d59681446]] に従う - テキスト「This is a text to be superimposed」 - フォントサイズ「14」 - 位置「x=100」「y=100」 - フォントの色「white」← RGBカラーコードも可 - ビットレート「-b:v 20000k」 ttfファイルが作業ディレクトリの中にないと上手く動かなかったので、ウィンドウズのttfファイルをコピーした。 「-b:v 20000k」としてビットレートを元の動画よりずっと高くして、動画の劣化を防いだ。指定しないとビットレートは低めになる。今回は 17769 kb/s だったので、20000k を指定した。 回転とテキストオーバーレイを一緒に ffmpeg -i infile.avi -vf "transpose=1,transpose=1, drawtext=fontfile=DejaVuSans.ttf: text='This is a text to be superimposed':fontsize=11:x=10:y=10: fontcolor=white" -b:v 20000k outfile.avi (適当に改行しています) **黒枠を付ける [#u08ac0a0] [[Windows の ffmpeg で生放送する方法>http://looooooooop.blog35.fc2.com/blog-entry-903.html#pad]] 「-vf オプション」を使う - pad=width:height:x:y:color ← デフォルトは黒~ 出力の幅:出力の高さ:余白の幅:余白の高さ ffmpeg -i infile.avi -vf "pad=(iw+40):(ih+40):20:20" -b:v 20000k outfile.avi iw、ih は入力動画の幅、高さ ** ふたつを左右に並べる(hstack) [#e6636573] [[【ffmpeg】 比較動画の作り方>http://looooooooop.blog35.fc2.com/blog-entry-990.html]] ffmpeg -i left.avi -i right.mp4 -filter_complex hstack outfile.avi ** 更に上下に並べる(vstack) [#y295b52f] ここでは、ファイルサイズを少し小さくする。 18MBを下回るように -b:v を調整。 ffmpeg -i upperfile.avi -i lowerfile.avi -b:v 4000k -filter_complex vstack outfile.avi *ビデオファイルの扱いメモ 2016年10月20日+随時 [#c433c8bc] ** バッチファイルで処理 [#dbb9c310] 同じフォルダにバッチファイル(○○.bat)を置いておけば、ダブルクリックでOK ***MTSファイルを結合する [#q492b2da] Windows の copy コマンドを利用 コマンド例 copy /b 00000.MTS+00001.MTS+00002.MTS+00003.MTS+00004.MTS+00005.MTS+00006.MTS+00014.MTS 20161015-1.MTS オプション /b binary でコピーするよう指定(デフォルトは text) ***MTSファイルを mp4ファイルに変更する [#e479e7c5] ffmpeg を利用(https://ffmpeg.org/) コマンド例 ffmpeg -i 20161015-1.MTS -codec copy -map 0:0 20161015-1.mp4 オプション -i (ファイル名) 入力ファイル名を指定 -codec copy コーデックを変更しない指定~ 録画したコーデックやフレームレートを維持したまま動画ファイル形式を変更するために指定する~ 録画はAVCHDのカムコーダ(ソニーハンディカム)で行うので、コーデックはH.264、フレームレートは 29.97 fps~ mp4ファイルの再生にはコーデック H.264(または MPEG-4 AVC)に対応したプレーヤが必要 -map 0:0 オプションは映像のみを取り出し mp4ファイルに格納する指定~ 音声データは含まれず、その分ファイルサイズも小さくなる ** 一部分のフレームの切り出し 2016年11月1日 [#f88646ca] 2分のところから25分間切り出し ffmpeg -ss 120 -i infile.mp4 -t 1500 -vcodec copy outfile.mp4 -ss 数値 切り出し始めの時間(秒) -t 数値 切り出し継続時間(秒) -vcodec copy ビデオコーデックを変更しない指定 ** 一部分の切り抜き(クロップ) 2016年11月1日 [#o2677246] コーデック:H.264~ 横×縦:1920×1080~ を横3、縦2の6分割した右下を切り抜きする場合 |左上|中上|右上| |左下|中下|右下| ffmpeg -i infile.mp4 -vf crop=640:540:1280:540 outfile.mp4 -vf crop=W:H:X:Y 切り抜きサイズと位置の指定~ W:切り抜き後の幅~ H:切り抜き後の高さ~ X:左からの切り抜き位置~ Y:上からの切り抜き位置 |←X→|| |↑|| |Y|| |↓|| ||←W→| ||↑| ||H| ||↓| ビデオコーデックを変更しない指定はできない~ 必ずエンコードする必要あり ** サイズ変更 2020年5月14日 [#v452c42c] 結論から言うと、解像度やアスペクト比を変更するときには、 画質をめちゃめちゃ低くしたいのでなければ、-crf オプションや 映像ビットレートを指定せずとも、ffmpeg がいい感じにやってくれる。~ 例)4K(3840:2160)のビデオを854:480へ変更したところ、 映像ビットレートは 55187kbps から 529kpbs になった。 たぶん、これは標準的な感じのビットレート。~ つまり、解像度やアスペクト比の変更のコマンドを発行するだけでよさそう。 *** 解像度やアスペクト比の変更 [#ef111b46] オプション:-vf scale=854:-1 など(-1は元の比を維持する) $ ffmpeg -i ifile.mp4 -vf scale=854:-1 ofile.mp4 VGA(640 × 480)の 480p の垂直解像度でアスペクト比 16:9なら、 (割り切れないのだけれど)854:480 となる(YouTube などはこれ)。 *** ファイルサイズを小さくする [#g31ba91d] オプション:-crf 32 など(デフォルトは 23) $ ffmpeg -i ifile.mp4 -crf 32 ofile.mp4 数字が大きくなるとファイルサイズが小さくなる(画像は荒くなる/画質は低下) *** ファイルサイズを小さくする(映像ビットレートの変更) [#i37d7114] オプション:-b:v 400k など(めちゃめちゃ大きな数字にするとほぼ元と同じになる) $ ffmpeg -i ifile.mp4 -b:v 400k ofile.mp4 数字が小さくなるととファイルサイズが小さくなる(画像は荒くなる/画質は低下) |Today:&counter(today); |Yesterday:&counter(yesterday); |Total:&counter(); since 20 October 2016|