ffmpeg – こみなのメモ帳 / 趣味と実益のネタ帳 Mon, 12 Oct 2020 21:00:32 +0000 ja hourly 1 https://wordpress.org/?v=6.1.1 VR180形式をVR360形式へ変換したい /archives/412/ /archives/412/#respond Mon, 12 Oct 2020 21:00:32 +0000 https://www.komina.info/?p=412
【注意】
この記事は過去に別サイトで執筆したものを再掲載したものです。
内容が古くなっていて現在では適用できない場合や、もっと良い方法が出来ている場合があります。
 

VR180形式は、VR360形式の前方のみを抜き出した形式。視界後方のデータを省いてデータサイズを半分に。再生環境で要求されるリード速度も半分で済む(はず)。
しかし残念なことに世の中にはVR360形式しか対応していないプレイヤーもまだ存在していて、VR180形式のデータを再生すると180度→360度と解釈されて横方向に伸びてしまう。

そこで後方180度分の空間を付け加えることでVR360形式として再生できるようにしたい。
下記は、左右に並んでいる情報を上下に配置しなおしつつ、後方180度分のスペースを追加処理するオプション例。

$ ffmpeg.exe -i "input.mp4" \
  -vf "split[left][right]; [left]crop=iw/2:ih:0:0,pad=iw*2:ih*2:iw/2:0[LEFT]; [right]crop=iw/2:ih:iw/2:0,pad=iw*2:ih:iw/2:0[RIGHT]; [LEFT][RIGHT]overlay=0:h" \
  -acodec copy "output.mp4"

-vfコマンドは様々なエフェクトを追加するコマンド。

split[left][right];入力ソースを[left]と[right]の2系統に分ける。名前を付けただけで同じデータ。
[left]crop=iw/2:ih:0:0,[left]データから所定の部分を切抜く。引数は、切抜きサイズと切抜く場所の左上座標。
切抜きサイズは(iw/2:ih)なので、横方向に半分のサイズ。
切抜き場所は(0:0)なので左側半分のみのデータとなる。
pad=iw2:ih2:iw/2:0[LEFT];キャンパスサイズ変更して、結果を[LEFT]とする。引数は新しいキャンパスサイズと入力ソースの配置場所。
新キャンパスは(iw*2:ih)なので横方向に倍。
配置場所は(iw/2:0)なので新キャンパスの中央部分に配置される。
[right]crop=iw/2:ih:iw/2:0,[right]データから所定の部分を切抜く。
切抜きサイズは(iw/2:ih)なので、横方向に半分のサイズ。
切抜き場所は(iw/2:0)なので右側半分のみのデータとなる。
pad=iw*2:ih:iw/2:0[RIGHT];キャンパスサイズ変更して、結果を[RIGHT]とする。[left]への処理と同じ。
[LEFT][RIGHT]overlay=0:h[LEFT][RIGHT]として作成したソースを重ね合わせる。引数は[RIGHT]の左上を[LEFT]のどの位置に合わせるか。
(0:h)なので横方向は0なのでピッタリ重ね、縦方向はhなので[RIGHT]の縦サイズ。
重ね合わせとは言いつつ重なる部分はなく、[LEFT]を上、[RIGHT]を下に並べているイメージになる。

下記が、Intel HD graphicsの力を借りる版。-hwaccel qsv という部分と、 -c:v h264_qsv という部分がその指定です。

$ ffmpeg.exe -hwaccel qsv -i "input.mp4" -c:v h264_qsv \
  -vf "split[left][right]; [left]crop=iw/2:ih:0:0,pad=iw*2:ih*2:iw/2:0[LEFT]; [right]crop=iw/2:ih:iw/2:0,pad=iw*2:ih:iw/2:0[RIGHT]; [LEFT][RIGHT]overlay=0:h" \
  -acodec copy "output.mp4"

ffmpeg コマンドラインツール入門 第3回 – Morpho Tech Blog

https://techblog.morphoinc.com/entry/2020/07/21/100022

]]>
/archives/412/feed/ 0
音声なし動画に音声データを合成する /archives/410/ /archives/410/#respond Sun, 11 Oct 2020 21:00:27 +0000 https://www.komina.info/?p=410
【注意】
この記事は過去に別サイトで執筆したものを再掲載したものです。
内容が古くなっていて現在では適用できない場合や、もっと良い方法が出来ている場合があります。
 

動画ファイルを映像ソースに、音声ファイルを音声ソースにして、任意の動画ファイルを作成する方法。

$ ffmpeg -i "video.mp4" -i "audio.mp3" -vcodec copy -acodec copy "my_video.mp4"

コーディック変更のような再エンコード処理が不要であればcopy指定にすることで、処理時間を短縮できる。

]]>
/archives/410/feed/ 0
ffmpegで縮小や拡大する /archives/407/ /archives/407/#respond Sat, 10 Oct 2020 21:00:54 +0000 https://www.komina.info/?p=407
【注意】
この記事は過去に別サイトで執筆したものを再掲載したものです。
内容が古くなっていて現在では適用できない場合や、もっと良い方法が出来ている場合があります。
 

ffmpegで変換時に縮小や拡大を行うには、ビデオフィルターオプション(-vf)を用いて、出力したいサイズを指定する。

$ ffmpeg -i input.xxx -vf scale=320:240 output.xxx
]]>
/archives/407/feed/ 0
H.264(mpeg4)のレベルを指定する /archives/405/ /archives/405/#respond Fri, 09 Oct 2020 21:00:04 +0000 https://www.komina.info/?p=405
【注意】
この記事は過去に別サイトで執筆したものを再掲載したものです。
内容が古くなっていて現在では適用できない場合や、もっと良い方法が出来ている場合があります。
 

mp4もとい、H.264にはレベルという考え方があって、画像サイズやフレームレートを16段階に定めているそうだ。

例えば、REGZA ××はレベル3.2より上はサポートしない、といった仕様が存在する。
再生する機械があらかじめ分かっている時は意識した方が良いと思われる。

H.264 – Wikipedia

https://ja.wikipedia.org/wiki/H.264#.E3.83.AC.E3.83.99.E3.83.AB

ffmpegでレベルを指定するときは、-levelオプションを使う。レベル値は10倍した値、整数値で指定する。

$ ffmpeg -i input.vob -level 32 output.mp4

]]>
/archives/405/feed/ 0
マルチトラックなDVDを変換する /archives/402/ /archives/402/#respond Thu, 08 Oct 2020 21:00:00 +0000 https://www.komina.info/?p=402
【注意】
この記事は過去に別サイトで執筆したものを再掲載したものです。
内容が古くなっていて現在では適用できない場合や、もっと良い方法が出来ている場合があります。
 

吹替版の音声なんかがマルチトラックで格納されている。
これを変換する動画にも反映させたい。

まずはファイルに含まれているストリームを確認する。

$ ffmpeg -i sample.vob

    Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv), 720x480 [SAR 32:27 DAR 16:9], max. 9800 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:2[0x89]: Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s
    Stream #0:3[0x82]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s

いっぱい情報が表示されるが、最後の方のStream #…という行に注目。

上記のサンプルだと、0番めに動画データ、1~3番は音声データのようだ。

-mapオプションを使って、どのストリームを出力先に加えるかを指定する。
例えば、音声データ1がオリジナル音声、音声データ3が吹替版音声で、変換した動画は吹替版を主音声にしたい場合、次のようにする。

$ ffmpeg -i sample.mp4 -map 0:0 -map 0:3 -map 0:1 output.mp4

含めたい動画データ、音声データを-mapオプションにて指定するイメージ。

-map n:m のnは、何番めの入力ファイルかを示す。0なら1つめ、1なら2つめのファイルを意味する。
mは、そのファイルの何番めデータがを指す。こちらもゼロスタート。

]]>
/archives/402/feed/ 0
ffmpegのプリセットと最適化 /archives/400/ /archives/400/#respond Wed, 07 Oct 2020 21:00:00 +0000 https://www.komina.info/?p=400
【注意】
この記事は過去に別サイトで執筆したものを再掲載したものです。
内容が古くなっていて現在では適用できない場合や、もっと良い方法が出来ている場合があります。
 

出力する動画の品質を簡単に設定する方法として、プリセットがある。
動画のタイプによって最適化方法も指定すると、なお良さげ。

プリセット

-preset [ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo]

デフォルトは medium
プリセット値は処理時間を表している。
品質固定のオプションと併用すれば、出来上がるファイルサイズで調整(時間をかけるほどサイズ小)される。
ビットレート固定のオプションと併用すれば、品質で調整(時間をかけるほど高品質)される。

最適化

-tune [film, animation, grain, stillimage, fastdecode, zerolatency]

動画の傾向を指定することで、最適化のタイプを指定する。
filmは実写の動画向け、animationはアニメ向け。

grainはざらざらが残るような古い映画などをエンコードする際に使われる。
stillimageは、スライドショーなど、動きのほとんどない場合に使う。
fastdecodeは一部処理を簡略化してデコードの際の負荷を減らす。代わりに画質は落ちる。
モバイル機器など、貧弱な環境向けにエンコードしたい場合に使う。
zerolatencyは再生の際のレイテンシを減らしたい場合に使う。頭出しは速くなるが、ファイルサイズは少し増加する。

複数のオプションを両方指定したい場合は、カンマで区切って指定する。

ffmpegの使い方:tech.ckme.co.jp

http://tech.ckme.co.jp/ffmpeg.shtml
]]>
/archives/400/feed/ 0
vobからmpeg2へ /archives/398/ /archives/398/#respond Tue, 06 Oct 2020 21:00:00 +0000 https://www.komina.info/?p=398
【注意】
この記事は過去に別サイトで執筆したものを再掲載したものです。
内容が古くなっていて現在では適用できない場合や、もっと良い方法が出来ている場合があります。
 

ちょっと古いREGZAだと、mp4形式に対応しておらず、DLNA再生とかでmpeg2形式のファイルを用意する必要がある。

vob形式を2パスでmpeg2形式に変換する。
mpeg2くらいだと2パスにする効果が良く分かると思う。

$ ffmpeg -y -i input.vob -pass 1 -target ntsc-dvd -vcodec mpeg2video /dev/null
$ ffmpeg -i input.vob -pass 2 -target ntsc-dvd -vcodec mpeg2video output.mpg
]]>
/archives/398/feed/ 0
DVDから動画ファイルを作成する /archives/396/ /archives/396/#respond Mon, 05 Oct 2020 21:00:00 +0000 https://www.komina.info/?p=396
【注意】
この記事は過去に別サイトで執筆したものを再掲載したものです。
内容が古くなっていて現在では適用できない場合や、もっと良い方法が出来ている場合があります。
 

DVDをマウントする。
VIDEO_TSフォルダにvobファイルがいくつかある。
このファイルが動画データ。だいたいVTS_01_0.vobはチャプタのデータだったりするので対象から除く。

concatを使ってファイルを結合したものを入力とする。

$ ffmpeg -i "concat:VTS_01_1.VOB|VTS_01_2.VOB|..." output.mp4

FFmpeg/DVDをmpg動画ファイルに変換 – kobapan @ wiki – アットウィキ

https://w.atwiki.jp/kobapan/pages/160.html

]]>
/archives/396/feed/ 0