Zurück   Flashforum > Flash und Server > Flash Remoting

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-04-2008, 11:16   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 14
Question Probleme mit Flash und PHP

Hallo,

ich möchte in Flash CS3 ein Modul entwickeln, dass es mit Hilfe von AMFPHP und Zend unter anderem erlaubt auf YouTube zuzugreifen.

Erstellt habe ich dazu folgenden in php:
<?php
class YouTubeVideo{
var $titel;
var $description;
var $url;
}
?>

<?php

require_once '../../Zend/Loader.php';
include_once("YouTubeVideoVO.php");

class MyYouTube{

public function get(){
Zend_Loader::loadClass('../../Zend_Gdata_YouTube');

$yt = new Zend_Gdata_YouTube();
$query = $yt->newVideoQuery();
$query->setOrderBy('viewCount');
$query->setRacy('include');
$query->setVideoQuery('offroad');
$videoFeed = $yt->getVideoFeed($query);

$answer = array();

foreach ($videoFeed as $videoEntry) {
$video_array = array();
$video_array['youtubevideo_title'] = "titel";
$video_array['youtubevideo_description'] = "beschreibung";
$video_array['youtubevideo_url'] = "url";
array_push($answer, new YouTubeVideoVO($video_array));
}

return $answer;
}
}
?>

<?php
class YouTubeVideoVO{
var $titel;
var $description;
var $url;

public function YouTubeVideoVO($obj=null){
if($obj != null){
$this->titel = $obj['youtubevideo_title'];
$this->description = $obj['youtubevideo_description'];
$this->url = $obj['youtubevideo_url'];
}
}
}
?>

Außerdem habe ich in der Datei advancedsetting.php die Arrays incoming und outgoing vervollständigt.

In Flash habe ich anschließend das Gegenstück dazu programmiert.

package{
public class YouTubeVideoVO{
public var titel:String;
public var description:String;
public var url:String;
}
}

package{

import flash.net.Responder;
import flash.net.registerClassAlias;
import flash.display.*;
import flash.net.NetConnection;

public class YouTubeFacade{

private const GATEWAY_URL:String = "http://localhost/amfphp/gateway.php";
private var conn:NetConnection;

public function YouTubeFacade():void{
registerClassAlias("YouTubeVideoVO", YouTubeVideoVO);
conn = new NetConnection();
conn.connect(GATEWAY_URL);
getVideos();
}

private function getVideos():void{
var resp:Responder = new Responder(getVideosOk, onFault);
conn.call("MyYouTube.get", resp);
}

private function getVideosOk(res:Object):void{
trace("ok");
}

private function onFault(error:Object):void{
trace(error.description);
}

}
}

So... nun zu meinem Problem.
Wenn ich in PHP von Hand ein Array erzeuge und das an Flash sende funktioniert es.
Verwende ich aber Zend_Loader::loadClass('../../Zend_Gdata_YouTube');
um dadurch auf YouTube zuzugreifen bekomme ich in Flash folgende Fehlermeldung:
Error #2044: NetStatusEvent unverarbeitet. level=error, code=NetConnection.Call.BadVersion

Wenn ich aber das php skript so umschreibe, dass ich es einfach mit echo ausgebe... also ohne Flash... dann erhalte ich dort die richtigen Ausgaben.

Woran kann das liegen?
Flash Hilfe sagt dazu nur:
"NetConnection.Call.BadVersion" "error" Paket wurde in einem nicht erkannten Format codiert.
Was mir leider nicht weiter hilft.

Danke, für eure Hilfe.
micha1984 ist offline   Mit Zitat antworten
Alt 22-04-2008, 11:48   #2 (permalink)
Trennschleifer
 
Benutzerbild von bobo_k1
 
Registriert seit: Apr 2004
Ort: Hamburg
Beiträge: 1.282
check mal das aus:
http://www.sephiroth.it/weblog/archi...badversion.php

http://www.google.de/search?hl=de&q=...le-Suche&meta=
__________________
Es gibt nur zwei Arten von Menschen die Hawaiihemden tragen: Schwuchteln und dicke fette Partylöwen. Und du siehst nicht aus wie ein dicker fetter Partylöwe!" - Homer J. Simpson

Geändert von bobo_k1 (22-04-2008 um 11:52 Uhr) Grund: mehr links
bobo_k1 ist offline   Mit Zitat antworten
Alt 22-04-2008, 12:04   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.408
Bitte die "php-tags" um Dein Sammelsurium herumschreiben. So kann man sich das ja nicht vernünftig durchlesen.
Nico B. ist offline   Mit Zitat antworten
Alt 22-04-2008, 14:13   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 14
Question

Hallo,

danke für eure Hilfe. So weit so gut.
Aber nun habe ich ein neues Problem. Weiß nur nicht, ob das hier der richtige Platz im Forum dazu ist?!

Also nachdem ich die YouTube URL nun auslesen kann würd ich die Videos auch gerne abspielen.

Angenommen es geht um diese URL: "http://www.youtube.com/v/3IcwG0jUFxU".

Dann hat die FLV-Datei diese URL:"http://www.youtube.com/get_video.php?video_id=3IcwG0jUFxU&t=OEgsToPDskIc7 CXJhD9KBNuc__lLxZ8Q"

Daher nun meine Frage, wie kann ich diese Abspielen (streamen)? Denn alles was ich bisher so versucht habe ging nur, wenn ich direkt die *.flv Datei lokal auf der Platte hatte und diese dann z.B. mit der fl.video.VideoPlayer Klasse abspiele.

Geändert von micha1984 (22-04-2008 um 14:14 Uhr)
micha1984 ist offline   Mit Zitat antworten
Alt 22-04-2008, 14:19   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2002
Beiträge: 607
1.) Unschön wenn man Inhalt sich so zu eigen macht.

2.) Liegt vllt. an den crossdomain.xml Einstellungen von den YouTube Servern.
bizz ist offline   Mit Zitat antworten
Alt 22-04-2008, 14:46   #6 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 14
Hallo,

ich will mir den Inhalt nicht zu eigen machen.
Ich will den weder auf einen eigenen Server packen noch sonst etwas.
Ich möchte den lediglich in einem eigenen Player abspielen.
Dies benötige ich für eine Multitouch-Anwendung.
Kann mir dabei jemand helfen?
micha1984 ist offline   Mit Zitat antworten
Alt 22-04-2008, 14:55   #7 (permalink)
Neuer User
 
Registriert seit: Aug 2002
Beiträge: 607
Zitat:
Zitat von micha1984 Beitrag anzeigen
Ich will den weder auf einen eigenen Server packen noch sonst etwas.
Du verursachst ja nur Traffickosten und lässt YouTube/Google dafür zahlen. Außerdem verhinderst du das User zu YouTube kommen, damit YouTube Geld verdient.
Außerdem verstösst du gegen die Nutzungsbedingungen und könntest Ärger mit dem Urheber der Videos bekommen. Aber ich habe mich hier schon ein paar Mal zu solchen Diebstählen geäußtert. Einfach mal suchen.

Und wie sieht es nun mit den crossdomain.xml Einstellungen aus. Sonst musst du halt Code von dir posten, damit man dir helfen kann.
bizz ist offline   Mit Zitat antworten
Alt 22-04-2008, 14:58   #8 (permalink)
Trennschleifer
 
Benutzerbild von bobo_k1
 
Registriert seit: Apr 2004
Ort: Hamburg
Beiträge: 1.282
Die Componenten muss du aber selber basteln ;-)

PHP-Code:
<?xml version="1.0" encoding="utf-8" ?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                xmlns:ns1="com.mh.components.*"
                creationComplete="onAppCreationComplete ()"
                horizontalAlign="left"
                width="100%"
                height="100%">
    <mx:Style source="css/main.css" />
                    
    <mx:Canvas width="100%" height="100%">
    
    
    <mx:Script>
        <![CDATA[
        
            import flash.net.*;
            import flash.events.*;
            import flash.display.*;
            import caurina.transitions.Tweener;
            
            private var loader:Loader;
            private var abortId:uint;

            
            private function onAppCreationComplete ():void
            {
                loader = new Loader ();
            }
            
            private function startLoading ():void
            {
                var arry:Array = new Array();
                var temp:String = urlText.text;
                arry = temp.split("=");
                
                var url:String = "http://www.youtube.com/v/" + arry[arry.length - 1];
                 
                var req:URLRequest = new URLRequest (url);
                loader.contentLoaderInfo.addEventListener(Event.INIT, handlerLoaderInit);
                loader.load(req);
                logMessage ("Loading YouTube URL..");
            }
            
            private function handlerLoaderInit (event:Event):void
            {
                //http://www.youtube.com/watch?v=IpVWZePn1Y8
                
                logMessage ("Loaded, processing: " + loader.contentLoaderInfo.url);
                var urlVars:URLVariables = new URLVariables ();
                urlVars.decode (loader.contentLoaderInfo.url.split("?")[1]);
                logMessage ("Processed:-");
                logMessage ("\t\t video_id:" + urlVars.video_id);
                logMessage ("\t\t t param:" + urlVars.t);
                logMessage ("\t\t thumbnail-url:" + urlVars.iurl);
                var flvURL:String = constructFLVURL (urlVars.video_id, urlVars.t);
                logMessage ("YouTube FLV URL: " + flvURL);
                playVideo (flvURL);
                logMessage ("Started Playing Video...");
                loader.unload(); 
            }
            private function constructFLVURL (video_id:String, t:String):String
            {
                var str:String = "http://www.youtube.com/get_video.php?";
                str += "video_id=" + video_id;
                str += "&t=" + t;
                return str;
            }
            private function playVideo (url:String):void
            {
                player.source = url;
                player.play();
            }
            
            private function stopVideo():void
            {
                
                player.stop();
            }
            
            private function muteVideo():void
            {
                player.volume = 0;
                
            }
            private function logMessage (message:String):void
            {
                
                trace (message);
            } 
            
            private function fadeControls():void
            {
                
                Tweener.addTween(playerControl, {alpha:1, time:1, transition:"easeOutQuad"});
                
            }
            private function fadeOutControls():void
            {
                
                Tweener.addTween(playerControl, {alpha:0, time:1, transition:"easeOutQuad"});
                
            }
        ]]>
    </mx:Script>
    
    
    
    <mx:HBox width="100%" verticalAlign="middle" horizontalAlign="center">
        <mx:Label text="YouTube Video URL:"/>
        <mx:TextInput id="urlText" width="292" text="http://www.youtube.com/watch?v=8BbUhlIEZEY"/>
        <mx:Text text="Wow YouTube-Videos direkt in Flex einbinden." width="289"/>
    </mx:HBox>
    
    
    
    <mx:HBox bottom="0" right="0" top="30" left="0">

    <mx:VBox height="100%" width="100%" verticalAlign="middle" horizontalAlign="center">
        <mx:Label text="VideoDisplay:"/>
        
        <mx:Canvas>
        <ns1:BufferingVideoDisplay id="player" mouseOver="fadeControls();" mouseOut="fadeOutControls();"   
            width="400" height="360" />
            
            <mx:ControlBar id="playerControl" height="200" y="320" alpha="0"  mouseOver="fadeControls();" mouseOut="fadeOutControls();"  >            
            <mx:HBox width="100%" height="100%">
            
                    
                    <mx:Button label="Play"  click="startLoading ()"/>
                    <mx:Button label="Pause"  click="{player.pause()}"/>
                    <mx:Button label="Stop" click="stopVideo(); "/>
                        
                    <mx:Canvas width="150" height="15">
                <mx:ProgressBar labelPlacement="center" width="100%" mode="event" source="player"  label=" "/>            
                <mx:HSlider minimum="0" maximum="{player.totalTime}" value="{player.playheadTime}" enabled="false" allowTrackClick="false" invertThumbDirection="true" left="-4" right="-4"/>        
                
            </mx:Canvas>
                                    
            </mx:HBox>
        </mx:ControlBar>
        </mx:Canvas>
    </mx:VBox>

    </mx:HBox>
</mx:Canvas>
</mx:Application>
__________________
Es gibt nur zwei Arten von Menschen die Hawaiihemden tragen: Schwuchteln und dicke fette Partylöwen. Und du siehst nicht aus wie ein dicker fetter Partylöwe!" - Homer J. Simpson
bobo_k1 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:14 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele