2014-09-01 22 views
0

我想问一下在youtube上创建新广播后生成的xml文件,我需要使用PHP获取此文件,而无需登录到YouTube,使用php获取Flash Media Encoder xml配置文件

我已经不喜欢的东西

public function cURLcheckBasicFunctions() 
{ 
    if(!function_exists("curl_init") && 
     !function_exists("curl_setopt") && 
     !function_exists("curl_exec") && 
     !function_exists("curl_close")) return false; 
    else return true; 
} 

/* 
* Returns string status information. 
* Can be changed to int or bool return types. 
*/ 
public function cURLdownload($url, $file) 
{ 
    if(!$this->cURLcheckBasicFunctions()) return "UNAVAILABLE: cURL Basic Functions"; 
    $ch = curl_init(); 
    if($ch) 
    { 
    $fp = fopen($file, "w"); 
    if($fp) 
    { 
     if(!curl_setopt($ch, CURLOPT_URL, $url)) 
     { 
     fclose($fp); // to match fopen() 
     curl_close($ch); // to match curl_init() 
     return "FAIL: curl_setopt(CURLOPT_URL)"; 
     } 
     if(!curl_setopt($ch, CURLOPT_FILE, $fp)) return "FAIL: curl_setopt(CURLOPT_FILE)"; 
     if(!curl_setopt($ch, CURLOPT_HEADER, 0)) return "FAIL: curl_setopt(CURLOPT_HEADER)"; 
     if(!curl_exec($ch)) return "FAIL: curl_exec()"; 
     curl_close($ch); 
     fclose($fp); 
     return "SUCCESS: $file [$url]"; 
    } 
    else return "FAIL: fopen()"; 
    } 
    else return "FAIL: curl_init()"; 
} 

    public function testXmlFile(){ 
     $xml= 'https://www.youtube.com/livestreaming?source=primary&itag=33&v=CtAsVo0Mug0&action_fmle_profile=1'; 
     echo $this->cURLdownload($xml, "test.xml"); 


    } 

但这总是返回空文件,但如果我把网址,过去它在浏览器中同时登录到YouTube上的文件下载OK

回答

0

由于没有一个试图回答我的问题,我采取了fru展示路径并为youtube可能生成的内容制作了一个xml模板,并通过使用smiple_xml直接插入信息

$xml = new simple_xml_ext("youtube_template.xml",false,true); 
    $name = ""; 
    $width = ""; 
    $height = ""; 
    $datarate = ""; 
    $outputsize = ""; 
    //getting the stream from youtube api and replacing it in the document 
    $stream = "<![CDATA[".$streamName."]]>"; 
    switch ($broadcast_quality) { 
     case "1080p": 
      $name = "YouTube (1080p Stream)"; 
      $xml->children()->preset->name = $name; 
      $width = "1920"; 
      $xml->children()->capture->video->size->width = $width; 
      $height = "1080"; 
      $xml->children()->capture->video->size->height = $height; 
      $datarate = "6000"; 
      $xml->children()->encode->video->datarate = $datarate; 
      $outputsize = "1920x1080"; 
      $xml->children()->encode->video->outputsize = $outputsize; 
      break; 
     case "720p": 
      $name = "YouTube (720p Stream)"; 
      $xml->children()->preset->name = $name; 
      $width = "1280"; 
      $xml->children()->capture->video->size->width = $width; 
      $height = "720"; 
      $xml->children()->capture->video->size->height = $height; 
      $datarate = "4000"; 
      $xml->children()->encode->video->datarate = $datarate; 
      $outputsize = "1280x720"; 
      $xml->children()->encode->video->outputsize = $outputsize; 
      break; 
     case "480p": 
      $name = "YouTube (480p Stream)"; 
      $xml->children()->preset->name = $name; 
      $width = "854"; 
      $xml->children()->capture->video->size->width = $width; 
      $height = "480"; 
      $xml->children()->capture->video->size->height = $height; 
      $datarate = "2000"; 
      $xml->children()->encode->video->datarate = $datarate; 
      $outputsize = "854x480"; 
      $xml->children()->encode->video->outputsize = $outputsize; 
      break; 
     case "360p": 
      $name = "YouTube (360p Stream)"; 
      $xml->children()->preset->name = $name; 
      $width = "640"; 
      $xml->children()->capture->video->size->width = $width; 
      $height = "360"; 
      $xml->children()->capture->video->size->height = $height; 
      $datarate = "1000"; 
      $xml->children()->encode->video->datarate = $datarate; 
      $outputsize = "640x360"; 
      $xml->children()->encode->video->outputsize = $outputsize; 
      break; 
     case "240p": 
      $name = "YouTube (240p Stream)"; 
      $xml->children()->preset->name = $name; 
      $width = "426"; 
      $xml->children()->capture->video->size->width = $width; 
      $height = "240"; 
      $xml->children()->capture->video->size->height = $height; 
      $datarate = "500"; 
      $xml->children()->encode->video->datarate = $datarate; 
      $outputsize = "426x240"; 
      $xml->children()->encode->video->outputsize = $outputsize; 
      break; 
     default: 
      return false; 
      break; 
    } 
    $xml->children()->output->rtmp->stream = null; 
    $xml->children()->output->rtmp->stream->add_cdata($streamName); 
    $xml->saveXML("xml_file_path.xml");