2014-03-05 5 views
6

Ich versuche, Youtube Video in meiner Anwendung zu spielen. Alles funktioniert gut. aber wenn ich versuche, Video zu sehen, das Inhalt von youtube enthält. es schlägt fehl.Wie kann ich die Signatur entschlüsseln und zu der extrahierten YouTube-URL in Ziel c hinzufügen?

Ich recherchiert gefunden, dass Sie denken, dass Sie die Signatur verschlüsseln und entschlüsseln und diese zur URL hinzufügen sollten?

Ich weiß nicht, wie man decrypt signature in IOS?

http://www.youtube.com/get_video_info?video_id=uuZE_IRwLNI&el=vevo&ps=default&eurl=&gl=US&hl=en

stream 

{ 
    "fallback_host" = "tc.v12.cache7.googlevideo.com"; 
    itag = 22; 
    quality = hd720; 
    s = "8E6E5D13EB65FB653B173B94CB0BCC3A20853F5EDE8.5E2E87DF33EEDE165FEA90109D3C7D5DADA06B6BB60"; 
    type = "video/mp4; codecs=\"avc1.64001F, mp4a.40.2\""; 
    url = "http://r7---sn-cvh7zn7r.googlevideo.com/videoplayback?pcm2fr=yes&sver=3&expire=1393773646&itag=22&id=bae644fc84702cd2&upn=SjZd81MudQs&sparams=gcr%2Cid%2Cip%2Cipbits%2Citag%2Cpcm2fr%2Cratebypass%2Csource%2Cupn%2Cexpire&ms=au&gcr=in&mt=1393747698&source=youtube&ratebypass=yes&ipbits=0&fexp=935620%2C919120%2C912523%2C932288%2C914084%2C916626%2C937417%2C937416%2C913434%2C932289%2C936910%2C936913%2C902907&mv=m&key=yt5&ip=103.250.162.79"; 
} 

Wenn ich url verwenden ihre nicht spielen. Gibt es eine Lösung?

+0

Warum verwenden Sie einen nicht dokumentierten Teil der YouTube-API und erwarten eine Konsistenz? 's' könnte alles sein, sogar wertlos. – CodaFi

+0

Weil ich alle Arten von Videos des Youtube innerhalb meiner App spielen möchte. Ich finde keinen Weg. also mache ich Google und ich kam am Punkt. Ich weiß, Apple wird nicht akzeptieren. aber ich möchte meinen Kunden zeigen. –

+0

Sind Sie sicher, dass Sie diese mit der realen YouTube API nicht kann? – CodaFi

Antwort

5

Sie können nicht nur get_video_info Daten allein verwenden, müssen Sie auch die Hauptvideoseite herunterladen, um zu sehen, welche html5player-XXXXX.js Javascript-Datei geladen ist. Dies wird bestimmen, welche Permutationen benötigt werden. Siehe http://www.jwz.org/hacks/youtubedown (geschrieben in Perl) als ein Beispiel - Springe zum Abschnitt, der sagt: "Dies ist kein Krypto oder ein Hash, nur eine Zeichenumordnungschiffre. Totale Sicherheit durch Dunkelheit. Total dick move.", Was ein Gefühl ist stimme herzlich mit.

-1

Ein wenig schamlos Eigenwerbung, verbrachte ich die letzten Wochen herauszufinden, wie die alternativen JavaScript und Perl-Versionen von Software dies tat, zunächst JavaScriptCore, um es zu erreichen, aber entschied ich wollte eine reine obj-C Probe, also ich habe ich selbst gemacht. Es gibt ausführliche Kommentare darüber, wie alles in der Hauptdatei funktioniert.

https://github.com/lechium/yourTube/blob/master/yourTube/KBYourTube.m

KBYourTube *tube = [[KBYourTube alloc] init]; 
NSArray *streamArray = [tube getVideoStreamsForID:@"_7nYuyfkjCk"]; 

der Lage sein, zurückkehren wird jede mögliche Weise vollständig abzulösen

{ 
"fallback_host" = "tc.v20.cache6.googlevideo.com"; 
format = "720p MP4"; 
itag = 22; 
quality = hd720; 
s = "771171A2777DE13D6CE5320C210DCCA29F018FC6DBA.A7630D3C26F2F70EEFEB25889E1A1B8805EC0616616"; 
title = "Lil+Wayne+-+She+Will+ft.+Drake"; 
type = "video%2Fmp4%3B+codecs%3D%22avc1.64001F%2C+mp4a.40.2%22"; 
url = "https://r15---sn-bvvbax-2iml.googlevideo.com/videoplayback?nh=EAI&fexp=9416126%2C9420452%2C9422596%2C9423662%2C9424859&ipbits=0&mime=video%2Fmp4&ratebypass=yes&itag=22&upn=8XDeh70fkMI&expire=1450776595&mt=1450754946&sparams=dur%2Cid%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cnh%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cupn%2Cexpire&key=yt6&id=o-AF5K6y8liVQ1S9iLjUHOcIBdnb4a8g-rgcFwGc0wuidq&mn=sn-bvvbax-2iml&mm=31&ms=au&mv=m&source=youtube&pl=16&dur=323.895&lmt=1417236324599143&ip=xx&requiressl=yes&sver=3&signature=671A2777DE73D6CE5320C210DCCA29F018FC1DBA.A7630D3C26F2F70EEFEB25889E1A1B8805EC0616&title=Lil+Wayne+-+She+Will+ft.+Drake"; 
}, 

Dies sollten Sie zur Zeit Details zum Download/Wiedergabe-Zwecke über ein Video bekommen und kümmert sich um die Unterschrift zu entziffern für dich. Sie könnten auch ziemlich leicht den Code ändern, nur um es zu entziffern zur Unterzeichnung verwenden (aber Sie müßten darauf achten, den richtigen Zeitmarkenwert zu verwenden, wenn get_video_info verwenden).

2

Die XCDYouTubeKit Bibliothek tut dies mit einem sehr einfachen API für Sie zu nutzen.

NSString *videoIdentifier = @"uuZE_IRwLNI"; 
[[XCDYouTubeClient defaultClient] getVideoWithIdentifier:videoIdentifier completionHandler:^(XCDYouTubeVideo *video, NSError *error) { 
    if (video) 
    { 
     // All URLs, with decrypted signature, are available in the `video.streamURLs` dictionary 
    } 
    else 
    { 
     // Handle error 
    } 
}]; 

Haftungsausschluss: Ich bin der Autor von XCDYouTubeKit.

Verwandte Themen