AVFoundationでカメラ(ムービー)撮影するときの、transform設定の注意点
@norio_nomura えーまじですか?!と思ってもう一度標準カメラの方を見てみたら、eeだとMatrix Structure項目が複数あって、そっちは仰るような内容に。ふむう…
2014-12-15 15:34:52@hkato193 そそ。コンテナのAVAssetのpreferredTransformが-ee無しで表示されていたもので、-eeをつけるとAVAssetTrackのpreferredTransformが追加で表示されるです。
2014-12-15 15:36:57@norio_nomura なるほど…。AVCaptureConnectionのvideoOrientationが、AVAssetTrackのオリエンテーションじゃないかと勘づき始めました。
2014-12-15 15:40:26@norio_nomura 標準カメラ(120fps)で撮ったものから、謎の3つ目が出てきましたが、まあそれはともかくとして、トラックごとにtransformは必要ですものね。ありがとうございます。
2014-12-15 15:44:42@hkato193 まさかの3つめ!あああ、variable speedってビデオトラックを2つ持ってるのかな?
2014-12-15 15:46:49@norio_nomura やや、たぶんこれはExifTool側の問題で、オーディオトラックまでmatrixを出そうとしている感じです。トラックはビデオ・音声ともに1つずつです。
2014-12-15 15:50:45ExifToolは色々と表示してくれるけれど、情報がどのトラックorコンテナに属しているものかが分かりにくいな… -G とか -g とかで少しはましになるとはいえ。
2014-12-15 16:00:59@norio_nomura 全体をHigh fpsで撮影しておいて、「ここからここまでをスローモーションで再生」という範囲を決めるということですか?それとも、撮っている途中でフレームレート自体を変えるとか。
2014-12-15 16:03:05@norio_nomura やっぱり、音声フレームのmatrixを表示しようとしているみたいです。-XオプションでXML出力したら、トラック番号と関連付いた情報が得られました。
2014-12-15 16:07:49@hkato193 compositionでscaleTimeRangeするとFrame rate modeがVariableになり、videoCompositionでframeDurationを指定するとFrame rate modeがConstantになるです。
2014-12-15 16:22:19@hkato193 nominalFrameRateが同じでも、Variableなものの方がより高いフレームレートでライブラリへ保存可能になるという違いがあります。
2014-12-15 16:26:03@norio_nomura 混乱してきたので整理すると、まずAVMutableCompositionのscaleTimeRange→Variableレート、AVMutableVideoCompositionのframeDuration→Constantということですね。
2014-12-15 16:35:32@norio_nomura (よかったw。)で、マニュアルから想像すると、メタデータをいじるのがscaleTimeRangeで、frameDurationはレンダリングの設定のように見えますね。videoCompositionをあえて使う理由って何かあるですか?
2014-12-15 16:38:37@norio_nomura さっきの私の予想が正しいと、そうなりますですね。そうなると疑問なんですが、のむらさんがvideoCompositionにこだわった理由はなんでしょう。scaleTimeRangeでカバーできない理由があったりしたのですか?
2014-12-15 16:42:41@hkato193 600fpsの動画を正常に使えるシステムばかりではないです。フレームレートを落とさないといけません。落とすにしてもVariableにして、できるだけnominalFrameRateを高く保てないかな?と。
2014-12-15 16:45:07@hkato193 あ、ExifToolでFrame rate modeがVariableかどうかを表示する方法を探しましたが、見つけられませんでした。一応。
2014-12-15 16:53:20@norio_nomura うーん、すみません。とりあえず思いついたのは、frameDurationを再生可能な上限でレンダリングした中間ファイルを作って、そこからさらにscaleTimeRangeした最終ファイルを作るくらいでした。。。
2014-12-15 16:56:09@hkato193 おお、固定になったやつをscaleTimeRangeしたらVariableになった!これは!!
2014-12-15 17:02:19