2015-08-11 2 views
9

У меня есть два iPads, в частности: A1489 & A1566.Различные размеры файлов для записи из разных iPads

Если я записываю видео с потолка в течение 1 минуты, A1489 приводит к размеру файла, который почти всегда равен половине размера A1566.

Единственное отличие в результирующих видео в том, что A1566 имеет более высокую скорость передачи данных, и я не понимаю, почему это так?

Я использую ACFoundation с AVCaptureSessionPreset1280x720.

Может ли кто-нибудь пролить свет на то, почему существует эта разница?

Дополнительная информация: Частота кадров на обоих составляет 30 кадров в секунду.

Благодаря

Chris

+0

Можете ли вы разместить два файла примеров? – aergistal

+0

сравнить информацию о видео, возвращенных ffprobe (программа от ffmpeg) –

ответ

3

Ipad A1489 является Apple iPad mini 2 (Retina/2nd Gen) и A1566 является Apple iPad Air 2.

Ipad mini 2 имеет 5-мегапиксельную камеру «iSight», в то время как Ipad Air 2 имеет 8-мегапиксельную камеру «iSight».

The IPad Air 2 был обработан с камерой 8MP ISight, что дает оно 60% больше пикселей для работы с по сравнению с прошлогодним IPad Air и его 5MP шутера. Read more.

Это же камера iSight, принцип применяется для перехода от 5mp до 8mp.

AIR2, похоже, удалось захватить в два раза больше кадров в секунду (120), чем мини 2.

Есть интересные ответы на this question as to how does the video file size increase with fps.

Но это менее важно, так как вы используете 30 кадров в секунду при 1280x720 для обоих.

Важным является битрейт.

Скорость передачи данных напрямую отражается на настройках частоты кадров и разрешения в камерах. Размер файла определяется битрейтом. (размер файла - бит).

Использование объекта AVCaptureSession

используется свойство sessionPreset, чтобы настроить уровень качества, Bitrat для выхода. Наиболее часто встречающиеся конфигурации доступны через предварительные настройки сеанса; from the AvcCaptureSession docs

Для возможных значений sessionPreset см пресетов видео ввода. Значение по умолчанию AVCaptureSessionPresetHigh которого

Задает параметры съемки, подходящие для высококачественного видео и аудио вывода.

Вы использовали AVCaptureSessionPreset1280x720, который задает параметры захвата, подходящие для видеовыхода 720p (1280x720 пикселей).

Их значения различаются для каждого устройства.

Но AVCaptureSession - это всего лишь объект для координации потока данных с устройства ввода AV на выход.

До сих пор у вас несжатые рамки.

Вы используете объект AVCaptureVideoDataOutput для обработки несжатых кадров из захваченного видео. Обычно вы настраиваете несколько аспектов вывода.

Вы упомянули 30 кадров в секунду, поэтому я предполагаю, что вы урезали частоту кадров, установив здесь minFrameDuration. вы можете указать формат пикселя, используя свойство videoSettings. Есть много свойств, которые можно изменить в этот момент или по умолчанию.

+0

Привет, Спасибо, что ответили, я думаю, что понимаю ваши точки. Я просто пытаюсь понять, почему, если я устанавливаю AVCaptureSessionPreset1280x720 - почему я получаю разные скорости передачи данных, не все ли 1280 на 720 изображений равны? – Chris

+0

Такие же разрешения могут иметь разные размеры. Подумайте, сжатие –

+0

Я использовал термин «скорость передачи данных» для него - это общий термин, используемый для измерений в течение периода времени. –

2

Вот результаты моего собственного тестирования с использованием двух образцов, снятых со значениями по умолчанию (iPad Mini 2 FHD 30 fps и iPad Air 2 FHD 30 fps).

Это для Full HD, но я ожидаю, что аналогичные результаты для HD.

  • IPad Mini 2 - A1489

    [Video] 
    Codec: AVC 
    Profile: [email protected] 
    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 воздуха 2 - A1566

    [Video] 
    Codec: AVC 
    Profile: [email protected] 
    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 
    

Как вы можете видеть, единственное, что отличающуюся является bitrate с предпочитающих более высокие значения IPad Air (17.4 Mbps против 14.3 Mbps)

Почему высокие битрейты?

Переход на 17 Мбит/с для Full HD, вероятно, был выполнен для того, чтобы конкурировать с самыми распространенными видеокамерами AVCHD, и они подняли HD, чтобы поддерживать постоянный уровень качества. Этот шаг поддерживается улучшенными характеристиками устройства и, возможно, средними ожидаемыми скоростями несущей.

Более высокий битрейт обеспечивает лучшее качество результирующего видео и особенно важно в случае видео с высоким разрешением.

Значение битов на пиксель является индикатором ожидаемого качества и скорости передачи данных. Эта метрика варьируется в зависимости от содержимого видео, но, как вы можете видеть, в случае двух образцов, которые снимаются в одном и том же месте и очень схожи, они переходили от 0.231 к 0.280 (тем лучше). Теоретически, для H.264/AVC то, что происходит за 0.200, может быть настроено для экономии полосы пропускания без потери качества.

Пользовательские записи (AVAssetWriter)

профили сессии будут автоматически установлены параметры кодирования, основанные на версии устройства, и вы не можете контролировать большинство параметров.

Если вы хотите точно настроить кодировку, в документации Apple рекомендуется использовать класс AVAssetWriter (source, см. Запись).

Вы также можете использовать стороннюю библиотеку для кодирования необработанного видео, но, скорее всего, вы не будете использовать возможности аппаратного кодирования устройства.

Смежные вопросы