Objective c 减小AVCaptureMovieFileOutput文件的大小

Objective c 减小AVCaptureMovieFileOutput文件的大小,objective-c,avfoundation,Objective C,Avfoundation,我在MacOSX中使用AVFoundation实现了一个录像机。要将输出写入文件,我使用的是AVCaptureFileOutput对象。录制30秒的视频时,输出文件的大小达到3MB,这是巨大的。我已将捕获会话预设设置为AVCaptureSessionPresetMedium。我对添加设置感到困惑 NSDictionary*videoCompressionSettings=[NSDictionary Dictionary Withinteger:264*1000],AVVideoCodecH264

我在MacOSX中使用AVFoundation实现了一个录像机。要将输出写入文件,我使用的是AVCaptureFileOutput对象。录制30秒的视频时,输出文件的大小达到3MB,这是巨大的。我已将捕获会话预设设置为AVCaptureSessionPresetMedium。我对添加设置感到困惑
NSDictionary*videoCompressionSettings=[NSDictionary Dictionary Withinteger:264*1000],AVVideoCodecH264,AVVideoCodecKey[NSDictionary Dictionary Withinteger:264*1000],AVVideoAverageBitRateKey,
[NSNumber numberWithInteger:30],AVVideoMaxKeyFrameIntervalKey,
AVVideoProfileLevelH264基线30,AVVideoProfileLevelKey,
AVVideoQualityKey,nil],avvideocompressionproperties key,nil]

使用其
setOutputSettings:forConnection:(AVCaptureConnection*)>


请在这方面帮助我。

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

NSString *const AVCaptureSessionPreset640x480
使用此代码

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

请参阅此文件,这里是一些更改文件输出平均比特率的示例代码(在我的示例中,我使用了AVCaptureMovieFileOutput)


通过提供输出的比特率,您可以简单地控制这一点

AVCaptureMovieFileOutput
.setOutputSettings([AVVideoCompressionPropertiesKey : [AVVideoAverageBitRateKey : 400000]])

我浪费了很多时间,因为当我不得不将其嵌套在AVVideoCompressionPropertiesKey下时,我直接尝试添加比特率密钥属性。您的要求是什么?我希望更改上述设置将有助于减小文件大小。您的平均比特率从何处获得264*1000?这将在短时间内更改视频与压缩或帧速率非常不同的方式。这也不一定是下采样。@Uchiugaka在哪方面不同?你认为哪一种质量更好?
AVCaptureMovieFileOutput
.setOutputSettings([AVVideoCompressionPropertiesKey : [AVVideoAverageBitRateKey : 400000]])