我在MAC OSX中使用AVFoundation实现了录像机。使用AVCaptureFileOutput的对象将输出写入文件。在录制30秒的视频时,输出文件的大小达到3MB,这是巨大的。我已将捕获会话预设设置为 AVCaptureSessionPresetMedium 。我对添加设置感到困惑
NSDictionary *videoCompressionSettings = [NSDictionary dictionaryWithObjectsAndKeys: AVVideoCodecH264, AVVideoCodecKey,[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInteger:264*1000], AVVideoAverageBitRateKey,
[NSNumber numberWithInteger:30], AVVideoMaxKeyFrameIntervalKey,
AVVideoProfileLevelH264Baseline30, AVVideoProfileLevelKey,
AVVideoQualityKey,nil], AVVideoCompressionPropertiesKey, nil];
使用setOutputSettings:forConnection:(AVCaptureConnection*)>
请帮助我。
答案 0 :(得分:0)
您可以使用sessionPreset属性更改分辨率 视频输入预设
NSString *const AVCaptureSessionPreset640x480
使用此代码
if ([self.captureSession canSetSessionPreset:AVCaptureSessionPreset640x480]) {
[self.captureSession setSessionPreset:AVCaptureSessionPreset640x480];
}
答案 1 :(得分:0)
这是一些示例代码,用于更改文件输出的平均比特率(我在示例中使用了 AVCaptureMovieFileOutput)。
for connection in movieFileOutput.connections {
let settings = movieFileOutput.outputSettings(for: connection)
var newSettings = settings
var sub = newSettings[AVVideoCompressionPropertiesKey] as? [String: Any]
sub![AVVideoAverageBitRateKey] = NSNumber(integerLiteral: 4000000)
newSettings[AVVideoCompressionPropertiesKey] = sub!
movieFileOutput.setOutputSettings(newSettings, for: connection)
}
答案 2 :(得分:0)
您可以简单地控制它提供输出的比特率
AVCaptureMovieFileOutput
.setOutputSettings([AVVideoCompressionPropertiesKey : [AVVideoAverageBitRateKey : 400000]])
我浪费了大量时间,因为当我不得不将它嵌套在 AVVideoCompressionPropertiesKey 下时,我直接尝试添加比特率键属性