iPhoneで録画した映像がAviUtl拡張編集に読み込ませると明るさがおかしい_old
---以下ゴミ
うーん、なんか原因下に書いたけど改めて色々調べるとフルレンジでも正常に読み込める動画は読み込めるのでiPhoneで録画した映像データが変なんじゃないですかね、になってきた
原因
一般的な動画ファイルはリミテッドレンジであるが
iPhoneはフルレンジのデータで映像を録画する
そして、AviUtlはリミテッドレンジのデータ前提で映像を表示するっぽい
リミテッドレンジは16~235だったかなんかその辺(適当)でフルレンジのデータは0~255とかなのでフルレンジの0~255をそのままリミテッドレンジのレンジで表示させるので明るさがおかしくなる
AviUtlは内部ではデータを保持しきれているため、PC->TVでフルレンジをリミテッドレンジに補正すれば元に戻る
ちなみに
動画プレイヤーもフルレンジを適切な明るさで表示出来ない動画プレイヤーが結構多い、内部でffmpeg使って映像を再生するmpvやffmpeg付属の簡易動画プレイヤーのffplayなどが正常に適切な明るさで再生できる AviSynth使ってAviSynthのFFmpegプラグインで事前に出力色空間をRGBにしてからAviUtlに渡すと正常に表示出来るっていうやり方もある(導入とか色々めんどいので拡張色調補正使うのが早いと思う) code:kaisetu.md
AviSynthで色空間RGBに変換+可変フレームレートから固定フレームレートに変換(音ズレ対策)したのをAviUtlで読み込む
やり方
AviSynth+導入してAviSynthプラグインのFFmpegSource(ffms2)を導入して
AviUtlの拡張編集で.avs読み込めるようにするためにexedit.iniに
.avs=動画ファイル
.avs=音声ファイル
を追加して
以下のような.avsファイルを読み込みたい動画ファイルと同じ位置に用意して
X = "読み込みたい動画ファイル名(拡張子も付けてね)"
FFmpegSource2(X, atrack=-1, colorspace="RGB32", fpsnum=60000, fpsden=1000)
(fpsnum=60000, fpsden=1000 は 60000/1000=60fps、好みのfpsに適宜変更)
この.avsをAviUtlに普通にD&Dとかで読み込ませるとうまくいく、たぶん、うまくいった俺は
この方法、可変fpsなのを固定に出来るという利点もあるように見えるがAviUtlのL-SMASHの設定で可変を固定に変更する設定してやればAviSynth使わんでも出来る
HandBrakeやFFmpegなどを使って再エンコする事でフルレンジをリミテッドレンジの動画ファイルに変換するという方法もある、もちろん画質が劣化するが… なんでリミテッドレンジとかいうのがあるんだよっていう歴史はチャットAIに聞いてみてください、アナログテレビやデジタルテレビとかの歴史が関係してるらしいです
-----以下ゴミ
code:memo.md
iPhoneで画面録画するとffprobeでピクセルフォーマットyuvj420p(pc,...と表示されるようなフルレンジの映像データで保存されてる事がある
このような映像データをAviUtl拡張編集に読み込ませると、明るさや色味が変に表示される(コントラストがキツくなったみたいに表示される、彩度が薄く表示される)
その解決法、いくつかのパターン紹介
# ①普通に読み込んでから補正する(簡単)
普通に拡張編集にメディアオブジェクトの動画ファイルで動画を読み込ませて、そのレイヤーの下に
フィルタオブジェクトの追加で拡張色調補正を追加し
拡張色調補正の設定でPC->TVスケール補正にチェック入れる
これで正しい色になる
ただし、この拡張色調補正かけると、画面全体に色調補正がかかるので、Rootシーンなどに置くと他のオブジェクトも色が変化してしまう、なので、シーン機能を使って新しいシーンに問題の動画ファイル配置してそのシーンの中で拡張色調補正かけて、そのシーンをRootなどに呼び出して使うようにすると良いと思う(シーン選ぶ所右クリックでシーンの画面サイズを変更出来るので、動画ファイルと同じサイズに設定すると便利)
# ②動画ファイルをyuv420p(リミテッドレンジ)に再エンコードする(画質が劣化したり、エンコード時間が掛かったり、ファイルサイズがデカくなったりする)
ffmpegまたはHandBrakeなどで再エンコードする(yuvj420pの動画を正しく取り扱えるツールでエンコードする、AviSynthはダメっぽい)
画質をほぼ劣化させない、エンコード時間早め、ファイルサイズは大きい、としたい場合のエンコード設定はこんな感じ
`
ffmpeg -i input.mp4 -pix_fmt yuv420p -c:v libx264 -crf 0 -preset veryfast -c:a copy output.mp4
`
-pix_fmt yuv420pを指定する事で一般的なピクセルフォーマットであるyuv420pに再エンコード出来る
HandBrakeの場合はピクセルフォーマットは特になんも指定しなくても一般的なyuv420pになると思う(たぶん)
# ③AviSynthを使ってRGBに変換してから読み込ませる(面倒)
AviSynthでRGBに変換(+可変フレームレートから固定フレームレートに変換(音ズレ対策))したのをAviUtlで読み込む
AviSynth+をインストールしてAviSynthプラグインのFFmpegSource(ffms2)を導入し、
AviUtlの拡張編集で.avs読み込めるようにするためにexedit.iniに
`
.avs=動画ファイル
.avs=音声ファイル
`
を追加して
以下のような.avsファイルを読み込みたい動画ファイルと同じ位置に作成
`
X = "読み込みたい動画ファイル名(拡張子も付けてね)"
FFmpegSource2(X, atrack=-1, colorspace="RGB32", fpsnum=60000, fpsden=1000)
`
(fpsnum=60000, fpsden=1000 は 60000/1000=60fps、好みの目標fpsに適宜変更、60000/1001=59.94fpsなど)
この.avsをAviUtlにD&Dで読み込ませる
# その他、備考
このような動画はaviutl以外でもよく使われる動画プレイヤーでも明るさや色味が変に表示される事がある、PCで正常に取り扱えたのはmpvとか
なんかiPhoneで画面録画したデータは可変フレームレートでもある為、①や②で読み込んで音ズレが起きる場合、L-SMASH workの設定でVFR->CFRにチェック入れて可変フレームレートから固定フレームレートに変換するようにすると直ると思う
なんかこの問題とかに詳しい人とかなにか他に情報あれば教えてください!