Я использую AlAssetsGroup enumerateAssetsAtIndexes
для перечисления активов в приложении "Фотографии (камера)". Для данного видеообъявления я хочу определить, был ли он снят в портретном или альбомном режиме.
В следующем коде актив является AlAsset
, и я тестировал его, если он является видеообъявлением [asset valueForProperty:ALAssetPropertyType]
равен AlAssetTypeVideo
, а затем:
int orientation = [[asset valueForProperty:ALAssetPropertyOrientation] intValue];
В этом случае orientation
всегда 0, что ALAssetOrientationUp
. Возможно, этого и следовало ожидать, все видео в порядке, но портретное видео представлено в формате MPEG-4, поскольку видеоизображение на ландшафтном видео повернулось на 90 градусов (т.е. Все видео на самом деле пейзажи, попробуйте приложение MediaInfo на Mac, если вы не поверь мне).
Где внутри файла и/или как я могу получить доступ к информации, которая сообщает мне, что она была фактически записана, удерживая телефон в портретной ориентации?
Я также пробовал это, учитывая URL-адрес актива:
AVURLAsset *avAsset = [[AVURLAsset alloc] initWithURL:url options:nil];
CGSize size = [avAsset naturalSize];
NSLog(@"size.width = %f size.height = %f", size.width, size.height);
CGAffineTransform txf = [avAsset preferredTransform];
NSLog(@"txf.a = %f txf.b = %f txf.c = %f txf.d = %f txf.tx = %f txf.ty = %f",
txf.a, txf.b, txf.c, txf.d, txf.tx, txf.ty);
который всегда дает ширину > высоту, поэтому для iPhone 4 ширина = 1280 height = 720, а значения преобразования a и d 1.0
, остальные 0.0
, независимо от ориентации захвата.
Я просмотрел метаданные, используя приложение MediaInfo на Mac, я сделал Hexdump и до сих пор не нашел разницы между пейзажным и портретным видео. Но QuickTime знает и отображает портретные видео по вертикали, и телефон знает, поворачивая портретное видео, если вы держите телефон в альбомной ориентации при воспроизведении и правильно отображаете его, удерживая его в портрете.
BTW Я не могу использовать ffmpeg
(не могу жить с ограничениями лицензии). Есть ли собственный способ SDK для iPhone?