Flex 4, снимок создать снимок с видео дисплея? - PullRequest
1 голос
/ 26 января 2011

мой код работает на локальном хосте, но не на сервере, в чем может быть проблема? Я также хочу вернуть некоторую строку обратно из php для flex-приложения, но я не могу решить эту проблему.Вот мой код:

        [Bindable]
        public var encodedString:String;
        [Bindable]
        public var img_name:String;
        [Bindable]
        public var pid:int;         
        [Bindable]
        public var url_string:String;                   

        protected function btn_save_clickHandler(event:MouseEvent):void
        {
            var bmpData:BitmapData = new BitmapData(videoDisplay.width,videoDisplay.height-25);             
            bmpData.draw(videoDisplay);

            var bm:Bitmap = new Bitmap(bmpData);  
            img.source = bm;  

            var jpg_e:JPEGEncoder = new JPEGEncoder();
            var bytes:ByteArray = new ByteArray();
            bytes = jpg_e.encode(bmpData);

            var b64e:Base64Encoder = new Base64Encoder()
            b64e.encodeBytes(bytes);

            encodedString = b64e.flush();

        }


        protected function btn_save_image_clickHandler(event:MouseEvent):void
        {
            // TODO Auto-generated method stub      
            save_img.send();
        }                       

        <mx:request xmlns="">
            <img_data>                  
                {encodedString}
            </img_data>
            <image_name>
                {img_name}
            </image_name>
            <post_id>
                {pid}
            </post_id>
        </mx:request>

    </mx:HTTPService>

Когда нажимаете сохранить, я хочу сохранить снимок с видеодисплея в img. Также я отправляю изображение в php и хочу получить простой текстответ, что сделано, но я всегда получаю возвращенный объект.

, и я сохраняю изображение с помощью php, и просто печатаю сообщение, например:

print "this is message!";

Я думаю, что проблема в том, когда мне нужно сохранить изображение из элемента управления (отображение видео) в элемент управления изображением, но эта проблема возникает только на сервере, но не на локальном хосте

Ответы [ 2 ]

2 голосов
/ 27 января 2011

Вам нужно изменить последнюю строку с:

str = b64e; 

На:

str = b64e.toString(); 

Обратите внимание, что вызов toString() очистит объект b64e.

Обновление:

Давайте попробуем поместить видео в контейнер, а затем, сделав .draw(), добавим к нему дополнительный контент, чтобы мы могли получить его, если видео непоказать.

<s:Group id="videoContainer">
  <mx:Label text="Hello" />
  <mx:VideoDisplay id="videoDisplay" />
</s:Group>

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

Когда вы используете .draw() use videoContainer вместо videoDisplay т.е.:

 bmpData.draw(videoContainer);

Это просто для проверки, если есть проблема с песочницей, которая, как представляется, определенно, в битовой карте будет отображаться только «Hello», а видео все равно не будет видно.

2 голосов
/ 26 января 2011

Откуда это видео? Камера? FMS?

Это может быть междоменная проблема или что-то, связанное с FMS (или другим потоковым сервером).

Этот пост может помочь вам: Как указать файл политики междоменного доступа, чтобы Flash мог получать растровое изображение из видеопотока RTMP (Wowza)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...