Zacznę tak... w php nie siedzę (jedynie co to HTML i CSS ogarniam troszeczkę) i na ten jeden raz nie ma sensu uczyć się php (tak mi się wydaje, że to jest php) i mam pewien nietypowy problem, który chciałbym abyście pomogli mi go rozwiązać.
No to zaczynamy... jest pewien smartphone a w nim a dokładniej w jego menu jest klient/aplikacja YouTube, która poprzez kliknięcie otwiera mobilną wersję serwisu YouTube tj. m.youtube.com
Na Wi-Fi wszystko ładnie pięknie, jak jest film w HD (720p) to odtwarza go bez problemu i wszystko ładnie widać, jak jest 480 to również go odtwarza w tej rozdzielczości zaś na 3G to jest dosłownie katorga... filmy otwierają się w rozdzielczości 240 na której za cholerę nic nie widać i opcji zmiany jej nie ma a to jest sama pixeloza, nic nie widać a 3G jest wszędzie przecież i zawsze zaś Wi-Fi nie....
Sprawdzałem filmy na dailymotion i czy łączę się przez Wi-Fi czy 3G - jakość filmu jest taka sama, więc wina leży tutaj raczej po stronie tego klienta youtube.
Chciałbym w takim razie zapytać się czy mógłby ktoś zerknąć na poniższy kod, który wyciągnąłem z partycji systemowej w smartphonie, który odpowiedzialny jest za tego klienta i ewentualnie powiedzieć czy da radę to jakoś edytować tak, aby filmy na 3G były w takiej samej jakości co po Wi-Fi albo chociaż takiej w której by cokolwiek było widać a nie same pixele.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript"> var request; var deviceinfo; // [WVGA: 1(wifi), 0], [QVGA, WQVGA: 3(wifi), 2], [QCIF: 5(wifi), 4] var WiFiConnected; var resolution; function process() { // 1. get streaming ID var streamingID = widget.youtube.getStreamingID(); // 2. make URL var gDataURL = "http://gdata.youtube.com/feeds/api/videos/" + streamingID; var serverPath = "/feeds/api/videos/" + streamingID; // 3. youtube.getGData(serverPath) //var XGDataHeader = widget.youtube.getGData( serverPath ); var GData = widget.youtube.getGData( serverPath ); deviceinfo = GData.charAt(0); var XGDataHeader = GData.slice(1, GData.length); // 4. request openURL( gDataURL, XGDataHeader ); // 5. parsing and get url // 6. youtube.startStreaming(url) } function openURL( url, XGDataHeader ) { if (window.ActiveXObject) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e1) { request = null; } } } else if (window.XMLHttpRequest) { request = new XMLHttpRequest(); } if ( !request ) return; request.onreadystatechange = handleResponse; request.open( "GET", url ); request.setRequestHeader( "X-GData-Device", XGDataHeader ); request.send( null ); } function handleResponse() { if (request.readyState == 4) { if (request.status == 200) { var xdoc = request.responseXML; var url; var entry = xdoc.getElementsByTagName("entry"); var category = entry[0].getElementsByTagName("category"); var mediagroup = entry[0].getElementsByTagNameNS("*","group"); var mediacontent = mediagroup[0].getElementsByTagNameNS("*", "content"); var format; var term; var is_yt3d = 0; var is_swap = 0; var is_yt3d_left = 0; var is_yt3d_right = 0; var yt3d_left; var yt3d_right; var yt3d_params; if ( deviceinfo == '1' ) { format = '3'; // WVGA } else if ( deviceinfo == '3' ) { format = '9'; // QVGA } else if ( deviceinfo == '5' ) { format = '2'; // QCIF } else if ( deviceinfo == '0' || deviceinfo == '2' || deviceinfo == '4' ) { format = '2'; // QCIF } else { format = '1'; // rtsp } for ( i = 0; i < category.length - 1; i++ ) { term = category[i].getAttribute("term"); if ( term == "yt3d:enable=true" ) { is_yt3d = 1; } else if ( term == "yt3d:swap=true" ) { is_swap = 1; } { is_yt3d_left = 1; yt3d_left = term.substring(5); } { is_yt3d_right = 1; yt3d_right = term.substring(5); } } for ( i = 0; i < mediacontent.length; i++ ) { if ( mediacontent[i].getAttribute("yt:format") == format ) { url = mediacontent[i].getAttribute("url"); if ( is_yt3d == 1 ) { yt3d_param = "yt3d:"; if ( is_swap == 1 ) { yt3d_param = yt3d_param + "swap;"; } if ( is_yt3d_left == 1 ) { yt3d_param = yt3d_param + yt3d_left + ";"; } if ( is_yt3d_right == 1 ) { yt3d_param = yt3d_param + yt3d_right + ";"; } url = yt3d_param + url; } widget.youtube.startStreaming( url ); history.go(-1); return; } } // if url is not searched for ( i = 0; i < mediacontent.length; i++ ) { if ( mediacontent[i].getAttribute("yt:format") == '1' ) { url = mediacontent[i].getAttribute("url"); widget.youtube.startStreaming( url ); history.go(-1); return; } } } else { history.go(-1); return; } } } </script> </head> <body onload="process();" > <table align="center"> <tr height="50"><td align="center"></td></tr> <tr height="60"><td align="center"><img src="./youtube.png" width="75" height="31"/></td></tr> <tr height="60"><td align="center"><img src="./loading.gif" width="27" height="27"/></td></tr> </table> </body> </html>
Znacie się tutaj na rzeczy, więc będziecie wiedzieli najlepiej czy idzie tutaj coś ogarnąć w tej sprawie i ewentualnie prosiłbym o podmiankę kodu w celu ułatwienia życia jeżeli da radę.
Pozdrawiam.