Как да получите реалния размер на видеото в MPMoviePlayerController?

Имам MPMoviePlayerController, който се използва за възпроизвеждане на видеоклипове. Използвам subviews за създаване на етикети за воден знак, които да поставя върху видеоклипа. Имам нужда водните знаци да са отгоре на действителния видеоклип, но не и черното пространство отстрани или отгоре на видеоклипа.

Знам, че мога да използвам naturalSize, за да получа оригиналните размери на видеото. Въпреки това, когато изгледът на плейъра е по-голям от естествения размер, видеото се разтяга, за да пасне на изгледа. Има ли начин да получите размера на разтегнатото видео в изгледа на плейъра? Ако знам реалния размер на видеоклипа, трябва да мога да изчисля координатите за правилното поставяне на водните знаци върху него.

Някакви идеи?


person matt    schedule 06.02.2014    source източник


Отговори (1)


Можете да получите размера на филма със свойството naturalSize.

moviePlayer.naturalSize.height  //to get the height of the frame player

АКТУАЛИЗАЦИЯ!!

Дано помогне

 -(CGRect)getResizedVideoFrame:(CGRect )naturalSize andPlayerViewSize:(CGRect)playerSize {
    float resVi = naturalSize.size.width / naturalSize.size.height;
    float resPl = playerSize.size.width / playerSize.size.height;
    return (resPl > resVi ? CGRectMake(0, 0, naturalSize.size.width * playerSize.size.height/naturalSize.size.height, playerSize.size.height) : CGRectMake(0, 0,playerSize.size.width, naturalSize.size.height * playerSize.size.width/naturalSize.size.width));
 }
person Calleth 'Zion'    schedule 06.02.2014
comment
NaturalSize ми дава естествения размер на видеото (640x480 в един конкретен случай). Въпреки това, когато поставя видеоклипа на цял екран, naturalSize все още ми дава 640x480, когато искам размера на видеоклипа на екрана (който е мащабиран, за да пасне на екрана). В случай на видео на цял екран действителният размер на видеото изглежда е пълната ширина на устройството в пейзаж и почти пълната височина на устройството. - person matt; 06.02.2014
comment
Трябва да създадете алгоритъм, за да получите преоразмерения размер на рамката на базата на естествения размер и размера на изгледа на moviePlayer - person Calleth 'Zion'; 06.02.2014
comment
Актуализирах отговора си с алгоритъма, който предлагам, просто го наречете ширина два аргумента, естествения размер на видеото и рамката на плейъра, ако е на цял екран, задайте рамката на цял екран :) - person Calleth 'Zion'; 06.02.2014
comment
Това е много близо. Методът по-горе ми дава правилната ширина на видеото, но получавам nan за височината. - person matt; 07.02.2014
comment
Няма значение. Изглежда, че подадох грешна стойност в метода. Благодаря за помощта! - person matt; 07.02.2014
comment
naturalSize връща 0! Някаква следа?? Опитах с MPMovieNaturalSizeAvailableNotification, но това се отразява на контролерите за филми по подразбиране. Всъщност скрива лентата за търсене. Трудно е да се повярва, че може да има грешка в ios!. Моля помогнете.. - person byJeevan; 03.03.2015
comment
@jeekOnline Опитваш с файл или плейлист??? може би плейърът все още не е инициализиран... можеш ли да ми покажеш кода си??? - person Calleth 'Zion'; 03.03.2015
comment
@Calleth'Zion' : Благодаря за отговора. Опитвам се да прочета видео от файл (съхранен в директорията на кеша). Ето моят код: justpaste.it/jqcb Благодаря отново... :-)' - person byJeevan; 03.03.2015
comment
проблемът е, че актуализирате рамката на плейъра, без да спазвате съотношението... не сте сигурни какво искате да постигнете, искате видеото да се адаптира към естествения размер на височината? - person Calleth 'Zion'; 03.03.2015
comment
@Calleth'Zion' : Искам ширината на видеото да съответства на ширината на екрана, а височината на видеото трябва да бъде естественият му размер. Защо, защото неговият контролер за изглед динамично ще взема видео файловете с различен размер/пропорция. Според изискването имаме нужда от контролери за няколко видеоклипа, а не за други видеоклипове (определени от флаг). Можете ли да споделите коригирания код. Благодаря предварително... - person byJeevan; 04.03.2015
comment
тъй като модифицирате рамката, мисля, че просто трябва да си поиграете с режима на мащабиране, ако зададете рамката с цялата ширина, но без да спазвате съотношението, това означава, че височината няма да е правилната и видеото ще покажи черно пространство... след това опитай да промениш този ред moviePlayer.scalingMode = MPMovieScalingModeFill; - person Calleth 'Zion'; 05.03.2015