AVFoundationでカメラ(ムービー)撮影するときの、transform設定の注意点

カメラの方向を自由に扱えるようにするためには、茨の道を乗り越えないといけないのです。
2
Hirohito Kato ⌘ @hkato193

最初はAVCaptureConnectionのvideoOrientationから始めるのがお手軽でよろしいです。そして、AVAssetWriterInputのtransformに至る泥沼に入り込んでいくのです。

2014-12-15 10:31:40
Norio Nomura @norio_nomura

@hkato193 transformにrotationだけではなくtranslateも入れるよう、親方の影響力で啓蒙してください。translateが入っていないポートレート(90度回転)な動画をOS XのQuickTime Playerで回転するとおかしくなったり。

2014-12-15 11:02:36
Hirohito Kato ⌘ @hkato193

@norio_nomura わかりました!t,translateもいれればいいのですね!

2014-12-15 11:04:09
Hirohito Kato ⌘ @hkato193

@norio_nomura 実際のところ、どんな値のtranslationを入れたらいいか分かっていないので、後で試してみますです。

2014-12-15 11:06:31
Norio Nomura @norio_nomura

@hkato193 次の手順を試してみて 1. Hyperlapseでポートレイト撮影 2. Image CaptureでOS Xへ取込 3. 動画をQuickTime Playerで開く 4. 編集→反時計回りに回転

2014-12-15 11:09:22
Hirohito Kato ⌘ @hkato193

@norio_nomura 把握しました。これはつらいですね…

2014-12-15 11:15:28
Hirohito Kato ⌘ @hkato193

@norio_nomura どこを原点にして回転しちゃっているかがまだ分かっていないので、標準カメラとの違いをMediaInfoで見ようとしていますが、原点の違いだけかどうかが不安なので解説お願いします<(_ _)>

2014-12-15 11:17:42
Hirohito Kato ⌘ @hkato193

@norio_nomura 標準カメラのスローモーション(=背面カメラ)でも、反時計に90°だけはNGですね。これはどういうことだろう…。

2014-12-15 11:21:16
Norio Nomura @norio_nomura

@hkato193 Hyperlapseの映像は、size(width:1280, height:720)にtransform(a:0,b:1,c:-1,d:0,tx:0,ty:0)が入っています。

2014-12-15 11:24:12
Norio Nomura @norio_nomura

@hkato193 標準カメラでポートレイトで撮ると、txにheightが入るようになります。

2014-12-15 11:28:32
Hirohito Kato ⌘ @hkato193

@norio_nomura なるほど…。ところでこのtransformってどうやって確認したのですか?MediaInfoだとRotationとして出てしまって、詳細が分かりませんでした。

2014-12-15 11:30:40
Norio Nomura @norio_nomura

@hkato193 自作のiOSアプリ内でデバッガで値を見ただけですよ。

2014-12-15 11:32:08
Hirohito Kato ⌘ @hkato193

@norio_nomura なるほど、ありがとうございます。

2014-12-15 11:41:58
Norio Nomura @norio_nomura

@hkato193 あの挙動が気に入らなくて、自作アプリ内ではtransformを勝手に矯正する様にしましたw

2014-12-15 11:47:09
Hirohito Kato ⌘ @hkato193

@norio_nomura なるほどですw。ありがとうございます!

2014-12-15 11:47:53
Norio Nomura @norio_nomura

@hkato193 translationが入っていなくても初期状態では表示出来てるから、QuickTime Playerのバグとして報告すべきなのかも。

2014-12-15 13:54:28
Hirohito Kato ⌘ @hkato193

@norio_nomura 標準カメラとHyperlapseのムービーの各メタデータをExiftool sno.phy.queensu.ca/~phil/exiftool/ で取り出して比較したのですが、Matrix Structureがどちらも同じで、どこに違いがあるかが謎に包まれ始めました。うひ

2014-12-15 14:49:48
Norio Nomura @norio_nomura

@hkato193 えっとね、さっきのはAVAssetTrackのpreferredTransformです。

2014-12-15 14:55:34
Hirohito Kato ⌘ @hkato193

@norio_nomura あ、すみません。のむらさんの作ったアプリだと、きっとAVFの何かで見ているのだろうなと思ったので、じゃあメタデータとしてどう違っているだろうと別経路で調べた次第です。そしたら唯一関係しそうなMatrix Structureが一致という事態になり…

2014-12-15 15:01:53
Hirohito Kato ⌘ @hkato193

Exiftool owl.phy.queensu.ca/~phil/exiftool/ が、およそ考え得るメディアフォーマット(Lytroとか!)のメタデータを出力してくれて、かなり便利。

2014-12-15 15:03:10
Norio Nomura @norio_nomura

@hkato193 ExifToolだと-eeを付ければ分かるみたい。

2014-12-15 15:21:56
Norio Nomura @norio_nomura

@hkato193 標準カメラでポートレイト撮影した動画はexiftool -eeで Matrix Structure: 0 1 0 -1 0 0 1080 0 1 ってのが出ます。

2014-12-15 15:26:50