减小AVCaptureMovieFileOutput输出文件的大小

时间:2014-11-20 10:37:37

标签: objective-c avfoundation

我在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*)>

输出电影文件

请帮助我。

3 个答案:

答案 0 :(得分:0)

您可以使用sessionPreset属性更改分辨率 视频输入预设

NSString *const AVCaptureSessionPreset640x480

使用此代码

 if ([self.captureSession canSetSessionPreset:AVCaptureSessionPreset640x480]) {
        [self.captureSession setSessionPreset:AVCaptureSessionPreset640x480];
    }

参考此https://developer.apple.com/library/ios/DOCUMENTATION/AVFoundation/Reference/AVCaptureSession_Class/index.html

答案 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 下时,我直接尝试添加比特率键属性