Видео Youtube обрезается при загрузке с помощью StageWebView

При загрузке видео с Youtube через компонент StageWebView Air мне нужно, чтобы видео было уменьшено до размера области просмотра, отображение черных полос в порядке, однако вместо этого я вижу обрезанную версию исходного размера видео.

Я не вижу никаких дополнительных параметров, которые я мог бы использовать, API кажется очень ограниченным.

Любые идеи, как воспроизвести видео, чтобы, даже если источник больше, я мог изменить его размер до размера области просмотра?


person Artemix    schedule 06.04.2016    source источник


Ответы (2)


Обычно я показываю Youtube, как показано на этом другой ответ (но при этом загружается версия Flash Player, которая может вам не понадобиться). PS: помните, что нужно использовать .com/v/VID_ID для Flash Player или использовать .com/embed/VID_ID для HTML5 Player.

Любые идеи, как воспроизвести видео, чтобы, даже если источник больше, я мог изменить его размер до размера области просмотра?

Вы говорите, что у вас есть код, аналогичный примеру Android, опубликованному как Ответ? Почему бы не попробовать вместо этого открыть iframe, поскольку это позволило бы изменить размер?

Пример iframe Youtube нестандартного размера...

<iframe width="800" height="600" src="https://www.youtube.com/embed/"+ VID +"?autoplay=1" frameborder="0" allowfullscreen></iframe>

Чтобы открыть в iframe, вам нужно создать динамическую веб-страницу по коду. Код ниже не тестировался, но основан на этой идее с форумов Adobe. Просто отправная точка, которую вы можете настроить/исправить...

var html_Dynamic : String;

html_Dynamic = "<!DOCTYPE HTML>" +
                "<html>" +
                    "<body>" +
                        "<iframe class=\"youtube-player\" style=\"border: 0; width: 100%; height: 100%; padding:0px; margin:0px\" id=\"ytplayer\" type=\"text/html\" src=\"https://www.youtube.com/embed/" +
                            VID + "?fs=0\" frameborder=\"0\">\n" +  "</iframe>\n";
                "</body>" +
                "</html>";
person VC.One    schedule 06.04.2016
comment
Частично это работало, но было много проблем, например, кнопка воспроизведения была слишком маленькой, или когда предлагаемые видео появлялись, они также были слишком маленькими, и когда я нажимал на одно из них, следующее видео было огромным. Не знаю, мне не нравится такой подход, в итоге я использовал VideoTexture, но да, думаю, это решило проблему. - person Artemix; 07.04.2016
comment
Вы имеете в виду iframe подход? Я не проверял это, но предложил это. Возможно, потребуется настройка с помощью параметров URL и т. д. другой вариант использования проигрывателя YTube на основе Flash может быть лучше, и для этого вам не нужен stageWebView, просто контейнер мувиклипа и изменение размера с помощью кода AS3... - person VC.One; 07.04.2016
comment
Но я не думаю, что флешка будет работать на iOS. - person Artemix; 07.04.2016

Я использую этот код для Android, попробуйте: (он изменяет размер страницы)

import flash.display.MovieClip;
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.system.Capabilities;

this.visible = false ;

var webView: StageWebView = new StageWebView();



webView.stage = stage;



function videoing(VID): void {/// VID is the video id
     stage.setAspectRatio(StageAspectRatio.LANDSCAPE);

    var vidLink:String = "https://www.youtube.com/embed/"+ VID +"?autoplay=1" ;
    trace(vidLink);
    webView = new StageWebView();
    webView.stage = this.stage;
    webView.viewPort = new Rectangle(-(stage.stageHeight/2)+100,0, stage.stageHeight*2+40 , stage.stageWidth*2 - 160);
    webView.loadURL(vidLink);
    this.stage.focus = stage;
}


//////////////// dispose the video ///////////////////////

exit_btn.addEventListener(KeyboardEvent.KEY_DOWN, fl_OptionsMenuHandler);

function fl_OptionsMenuHandler(event: KeyboardEvent = null ): void {
    if ((event.keyCode == Keyboard.BACK) && (webView)) {
        event.preventDefault();
        webView.stage = null;
        webView.dispose();
        webView = null ;
        stage.setAspectRatio(StageAspectRatio.PORTRAIT);
    }   
}

На Android нужно добавить

 <application android:hardwareAccelerated="true"/> 
person kare    schedule 06.04.2016
comment
У меня именно так, но я все равно вижу обрезанное видео. - person Artemix; 06.04.2016