我正在通過網絡攝像頭錄製。相機在PhotoBooth中看起來很棒。但是,當我使用QTCaptureView在我的程序中預覽它時,或將其記錄到文件中時,它非常非常慢。原因是QuickTime給我最大可能的分辨率爲1600x1200。我怎麼能強制我的QTCaptureView和我的錄音文件更合理的大小?在QTCapture中設置分辨率?
3
A
回答
7
作爲described here,您可以在QTCaptureSession的輸出中設置像素緩衝區屬性,以更改捕獲的視頻的分辨率。例如:
[[[myCaptureSession outputs] objectAtIndex:0] setPixelBufferAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:480], kCVPixelBufferHeightKey,
[NSNumber numberWithInt:640], kCVPixelBufferWidthKey, nil]];
會將視頻分辨率設置爲捕獲會話中第一個輸出的640x480。這也應該調整相機設置本身以使其返回該尺寸的圖像幀(如果相機硬件支持)。
您可能還希望使用基本MPEG4編碼而不是h.264來進行實時視頻錄製。
NSArray *outputConnections = [mCaptureMovieFileOutput connections];
QTCaptureConnection *connection;
for (connection in outputConnections)
{
if ([[connection mediaType] isEqualToString:QTMediaTypeVideo])
[mCaptureMovieFileOutput setCompressionOptions:[QTCompressionOptions compressionOptionsWithIdentifier:@"QTCompressionOptionsSD480SizeMPEG4Video"] forConnection:connection];
}
H.264編碼,特別是QuickTime的實施方式中,使用了大量的更多的CPU功率比基MPEG4編碼:這可以通過使用類似於下面的代碼來設置。
3
上面的解決方案(setPixelBufferAttributes :)確實設置了預覽大小,但是一旦開始錄製動畫,預覽圖像將被設置回它的原始值(我的MBP上是1280 x 1024) )任何壓縮選項。
如果這只是在錄製電影期間會是一回事,但是一旦錄製完成,對setPixelBufferAttributes的進一步調用將不起作用。
因此,只要您不打算進行任何實際的壓縮影片錄製,您就可以更改預覽圖像大小。
這是在10.5.8/9L30 MBP與GeForce 8600M。如上所述,除無壓縮或QTCompressionOptionsSD240SizeH264Video以外的任何壓縮選項都會中斷。
rdar:// 7447812
0
要添加關於主題的更多信息:
你不能直接specifiy上採集端的定義。相反,這是定義定義的捕獲會話的輸出。例如
- 如果捕獲到QtCaptureDecompressedVideoOutput中,則應指定該對象的定義。
相關問題
- 1. 在.Net中設置屏幕分辨率
- 2. 獲取並設置屏幕分辨率
- 3. 設置攝影機分辨率的Android
- 4. 爲canvas/surfaceview設置屏幕分辨率
- 5. 如何手動設置流分辨率?
- 6. 設置android屏幕分辨率
- 7. Directx.Capture如何設置分辨率
- 8. Android相機意圖設置分辨率
- 9. 設置UWP應用顯示分辨率
- 10. Linux Framebuffer正確設置分辨率
- 11. TWAIN掃描的設置分辨率
- 12. Can DisplayMode可以將分辨率設置爲屏幕分辨率嗎?
- 13. 爲Android設計 - 分辨率?
- 14. 在vbox live iso guest中設置分辨率
- 15. 如何在python-igraph中爲模塊設置分辨率?
- 16. 在J2ME中設置手機相機的所需分辨率
- 17. 在Chrome中爲特定標籤設置分辨率
- 18. 在xcode4故事板中設置ios屏幕分辨率
- 19. 在Windows中自動查找並設置推薦分辨率
- 20. 如何在Android錄像機中設置視頻分辨率?
- 21. 在Python枕頭中設置圖像分辨率
- 22. 如何在Android中爲所有分辨率設置UI
- 23. 在Linux/Ubuntu中設置Code :: Blocks的分辨率
- 24. 如何在未通過設置分辨率的屏幕分辨率上獲取Gameobject位置
- 25. RawInput分辨率
- 26. 多分辨率
- 27. WinForm分辨率
- 28. HTML:在低分辨率下渲染高分辨率圖像
- 29. 網站分辨率修復Javascript中的所有分辨率
- 30. 如何設置屏幕分辨率在運行時