我有两台iPad,特别是:A1489& A1566。
如果我录制了1分钟的天花板视频,A1489的文件大小几乎总是A1566的一半。
结果视频中唯一的不同似乎是A1566具有更高的数据速率,我不明白为什么会这样?
我在AVCaptureSessionPreset1280x720上使用ACFoundation。
任何人都可以解释为什么会出现这种差异?
附加信息:两者的帧速率均为每秒30帧。
由于
克里斯
答案 0 :(得分:3)
Ipad A1489是Apple iPad mini 2 (Retina/2nd Gen),A1566是Apple iPad Air 2。
Ipad mini 2拥有500万像素" iSight"相机,而Ipad Air 2有一个800万像素" iSight"相机。
iPad Air 2已经使用了800万像素的iSight摄像头 与去年的iPad Air相比,它的像素数增加了60% 它的500万像素射击游戏。 Read more
它是相同的iSight摄像头,原则适用于从5mp到8mp的过渡。
Air2似乎能够捕获fps(120)的两倍而不是迷你2。
this question as to how does the video file size increase with fps有一些有趣的答案。
但这并不重要,因为你在1280x720使用30fps两者。
重要的是比特率。
比特率直接反映了相机中的帧速率和分辨率设置。文件大小由比特率决定。 (filesize是比特率的长度)。
使用AVCaptureSession对象
您使用sessionPreset属性来自定义质量级别, bitrat输出。最常见的捕获 配置可通过会话预设获得; from the AvcCaptureSession docs
有关sessionPreset的可能值,请参阅视频输入预设。默认值为AVCaptureSessionPresetHigh
指定适合高质量视频和音频的捕获设置 输出
您使用了AVCaptureSessionPreset1280x720,它指定了适合720p质量(1280x720像素)视频输出的捕捉设置。
他们的价值因设备而异。
但AVCaptureSession只是协调从AV输入设备到输出的数据流的对象。
直到这里你有未压缩的帧。
使用AVCaptureVideoDataOutput对象处理正在捕获的视频中的未压缩帧。 您通常配置输出的多个方面。
你提到30fps所以我假设你通过在这里设置minFrameDuration
来限制帧速率。
您可以使用videoSettings属性指定像素格式。
有许多属性可以在此时更改或默认。
答案 1 :(得分:2)
以下是我自己使用默认值(iPad Mini 2 FHD 30 fps和iPad Air 2 FHD 30 fps)捕获的两个样本进行测试的结果。
这是针对全高清,但我预计 HD 会有类似结果。
iPad Mini 2 - A1489
[Video]
Codec: AVC
Profile: High@L4.1
Options: CABAC / 1 ref. frame
Frame Rate: 29.970
Frame Rrate Mode: VFR (max. 30)
Color Space: YUV 4:2:0 (8 bit)
Scan Type: progressive
Bitrate: 14.3 Mbps
Bits-per-pixel: 0.231
[Audio]
Codec: AAC-LC
Sample rate: 44100
Channels: 1
Bitrate Mode: CBR
Bitrate: 64.0 Kbps
iPad Air 2 - A1566
[Video]
Codec: AVC
Profile: High@L4.1
Options: CABAC / 1 ref. frame
Frame Rate: 29.970
Frame Rrate Mode: VFR (max. 30)
Color Space: YUV 4:2:0 (8 bit)
Scan Type: progressive
Bitrate: 17.4 Mbps
Bits-per-pixel: 0.280
[Audio]
Codec: AAC-LC
Sample rate: 44100
Channels: 1
Bitrate Mode: CBR
Bitrate: 64.0 Kbps
正如您所看到的那样,唯一不同的是比特率,iPad Air更喜欢更高的值(17.4 Mbps
vs 14.3 Mbps
)
为什么更高的比特率?
为了与最广泛使用的AVCHD摄像机相媲美,可能已经完成了向全高清移动到17 Mbps的速度,他们提高了HD一级以保持质量水平不变。设备改进的规格和可能的平均预期运营商费率支持此举。
更高的比特率可以使得到的视频质量更好,尤其是在高动态视频的情况下。
每像素位值是预期质量与数据速率的指标。此指标会根据视频的内容而有所不同,但正如您所看到的那样,两个样本在同一个地方拍摄并且非常相似,从0.231
变为0.280
(更好更好) )。从理论上讲,H.264/AVC
可以调整0.200
的内容,以节省带宽而不会造成太多质量损失。
自定义录制(AVAssetWriter)
会话配置文件将根据设备版本自动设置编码选项,您无法控制大多数参数。
如果您想微调编码,Apple文档建议使用AVAssetWriter类(source,请参阅录制)。
您还可以使用第三方库对原始视频进行编码,但您很可能无法利用设备硬件编码功能。