我正在寫一個iPhone應用程序,它從攝像頭獲取視頻,通過一些OpenGL着色器代碼運行它,然後使用AVFoundation
將輸出寫入視頻文件。該應用程序以lanscape方向(或者)運行,因此所有記錄的視頻都應該是橫向的。如何使用AVFoundation設置逐幀生成視頻的方向?
當前的代碼我開始錄音,以獲得該視頻的正確的方式是使用前:
[[self videoWriterInput] setTransform:CGAffineTransformScale(CGAffineTransformMakeRotation(M_PI), -1.0, 1.0)];
其中videoWriterInput是AVAssetWriterInput
一個實例,目的是彌補風景模式和reveresed方向的OpenGL。
這會產生在Quicktime播放器下載並播放時播放正確的視頻。但是,如果我將錄製的視頻添加到iPhone照片庫,則縮略圖可以正確顯示,但如果手機處於橫向模式,則視頻播放會旋轉90度。如果手機保持縱向顯示,則視頻播放正確,但會水平裁剪以適應縱向尺寸。
根據this Apple tech note我用於處理視頻幀的AVCaptureVideoDataOutput
的捕獲輸出不支持設置視頻方向。
是否有人成功錄製了橫向生成的視頻,這些視頻可以添加到iPhone庫並在橫向上正確播放,如果是這樣的話?
是否有任何理由,你不能這樣做在OpenGL旋轉讀出像素的幀緩衝區之前,以獲得正確的方向?這樣您就不必擔心放在MOV/MP4標題中的變換。默認會正常工作。 –
感謝這個想法。然而問題在於屏幕上的實時視圖是正確的 - 只有將錄製的視頻保存到iPhone庫並播放它,甚至在桌面上正確播放錄音,纔會顯示錯誤的視圖。 – domgblackwell