Получение QTKit - указание настроек сжатия носителей
Q: Как может я сжимать носители, получаемые до файла ролика при использовании QTCaptureMovieFileOutput объект?
A: Как может я сжимать носители, получаемые до файла ролика при использовании QTCaptureMovieFileOutput объект?
QTCaptureMovieFileOutput конкретный подкласс QTCaptureFileOutput возразите, что носители записей к файлам фильма в формате QuickTime (.mov) и представляют выходное место назначения для a QTCaptureSession.
Метод, ответственный за конфигурирование настроек сжатия носителей для QTCaptureMovieFileOutput объект называют достаточно удобно setCompressionOptions:forConnection:. Этот метод принимает a QTCompressionOptions объект (объект, инкапсулирующий предварительно установленные настройки сжатия) и a QTCaptureConnection объект для получаемых носителей.
При вызове setCompressionOptions:forConnection:, a QTCaptureConnection объект получен путем отправки сообщения connections к экземпляру QTCaptureMovieFileOutput. Этот метод наследован от QTCaptureOutput и используется для получения QTCaptureConnection экземпляры, представляющие отдельные мультимедийные потоки.
- (void)setCompressionOptions:(QTCompressionOptions *)compressionOptions
forConnection:(QTCaptureConnection *)connection
Description:
Sets the options the receiver uses to compress media on the given connection as it is being captured.
Parameters:
compressionOptionscompressionOptions - A QTCompressionOptions object detailing the options being
used to compress captured media, or nil if the media should not be compressed.
connection - The QTCaptureConnection connection containing the media to be compressed.
Discussion:
This method sets the options for compressing media as it is being captured. If compression cannot
be performed in real time, the receiver will drop frames in order to remain synchronized with the
session. If the receiver does not recompress the output media, this method should be passed nil.
The default value is nil. |
Сконфигурировать экземпляр a QTCaptureMovieFileOutput возразите, чтобы сжать полученные носители, сначала создать a QTCompressionOptions экземпляр, указывающий, как Вы хотели бы сжатые носители (использование одного из предварительно установленных идентификаторов ниже), тогда просто вызовите setCompressionOptions:forConnection: передача в инициализированном QTCompressionOptions экземпляр и QTCaptureConnection для мультимедийного потока, который будет сжат.
Перечисление 1 , Устанавливающее опции сжатия для Видео.
QTCaptureSession *mCaptureSession;
QTCaptureDeviceInput *mCaptureDeviceInput;
QTCaptureMovieFileOutput *mCaptureMovieFileOutput;
NSError *error;
...
mCaptureSession = [[QTCaptureSession alloc] init];
// find a video device and add it to the session
QTCaptureDevice *device = [QTCaptureDevice defaultInputDeviceWithMediaType:QTMediaTypeVideo];
if (device) [device open:&error];
mCaptureDeviceInput = [[QTCaptureDeviceInput alloc] initWithDevice:device];
[mCaptureSession addInput:mCaptureDeviceInput error:&error];
// create the movie file output and add it to the session
mCaptureMovieFileOutput = [[QTCaptureMovieFileOutput alloc] init];
[mCaptureSession addOutput:mCaptureMovieFileOutput error:&error];
// set the compression options for the movie file output
QTCaptureConnection *connection = [[mCaptureMovieFileOutput connections] lastObject];
QTCompressionOptions *compressionOptions = [QTCompressionOptions
compressionOptionsWithIdentifier:
@"QTCompressionOptionsSD480SizeH264Video"];
[mCaptureMovieFileOutput setCompressionOptions:compressionOptions forConnection:connection];
... |
Перечисление 2 , Устанавливающее опции сжатия для Аудио и Видео.
...
NSEnumerator *connectionEnumerator = [[mCaptureMovieFileOutput connections] objectEnumerator];
QTCaptureConnection *connection;
// iterate over each output connection for the capture session and specify the desired compression
while ((connection = [connectionEnumerator nextObject])) {
NSString *mediaType = [connection mediaType];
QTCompressionOptions *compressionOptions = nil;
// specify the compression options according to the media type
// (note: a list of other valid compression types can be found in the
// QTCompressionOptions.h interface file)
if ([mediaType isEqualToString:QTMediaTypeVideo]) {
// use H.264
compressionOptions = [QTCompressionOptions
compressionOptionsWithIdentifier:@"QTCompressionOptions240SizeH264Video"];
} else if ([mediaType isEqualToString:QTMediaTypeSound]) {
// use AAC Audio
compressionOptions = [QTCompressionOptions
compressionOptionsWithIdentifier:@"QTCompressionOptionsHighQualityAACAudio"];
}
// set the compression options for the movie file output
[mCaptureMovieFileOutput setCompressionOptions:compressionOptions forConnection:connection];
}
... |
A QTCompressionOptions объект может быть создан с любым из следующих идентификаторов, каждое представление ряд опций, определяющих, как будут сжаты носители.
Video compression options identifiers ( QTMediaTypeVideo ):
These compression options are appropriate for high quality intermediate video that
requires further processing.
QTCompressionOptionsLosslessAppleIntermediateVideo
QTCompressionOptionsLosslessAnimationVideo
QTCompressionOptionsJPEGVideo
These compression options are appropriate for medium and low quality video that will be used for
delivery to destinations such as the internet.
QTCompressionOptions120SizeH264Video
QTCompressionOptions240SizeH264Video
QTCompressionOptionsSD480SizeH264Video
QTCompressionOptions120SizeMPEG4Video
QTCompressionOptions240SizeMPEG4Video
QTCompressionOptionsSD480SizeMPEG4Video |
Audio compression options identifiers ( QTMediaTypeSound ):
This compression option is appropriate for lossless audio that requires further processing, or is
intended for high fidelity destinations.
QTCompressionOptionsLosslessALACAudio
These compression options are appropriate for audio delivered with lossy compression.
For music and other high quality audio.
QTCompressionOptionsHighQualityAACAudio
For voice recordings.
QTCompressionOptionsVoiceQualityAACAudio |
Если кодек, требуемый определенной опцией сжатия в не установленный, вызывая compressionOptionsWithIdentifier: возвратится nil и идентификатор не будет включен в массив, возвращенный compressionOptionsIdentifiersForMediaType:. Например, QTCompressionOptionsLosslessAppleIntermediateVideo идентификатор требует, чтобы Промежуточный Кодек Apple был установлен в системе.
Ссылки:
История версии документа
| Дата | Примечания |
|---|---|
| 09.10.2009 | Передовая статья |
| 11.03.2008 | Передовая статья |
| 13.02.2008 | Новый документ, описывающий, как сконфигурировать выходной объект файла сохранить сжатые полученные носители. |