ffmpeg - Wie übergibt man HTTP-Header?

8

Ich muss HTTP-Header (user agent und ip) an einen ffmpeg-Befehl übergeben.

Ich benutze den folgenden Befehl:

%Vor%

Und ich lasse einen lokalen node.js Server laufen, um die Header zu sehen, die ich bekomme:

%Vor%

Ich erhalte immer einen Fehler, der besagt, dass im HTTP-Header kein CRLF gefunden wurde. und die Anfrage ist blockiert.

Wenn ich die Header lösche - alles funktioniert normal.

Ich habe auch versucht, beide Header in eine Zeichenfolge zu setzen, aber jedes Zeilenumbruchzeichen, das ich benutzt habe (\ r \ n, \ r \ n usw.), hat nicht funktioniert.

Kann mir jemand helfen, herauszufinden, wie man diesen Befehl mit den enthaltenen Kopfzeilen richtig schreibt?

    
Lizozom 15.11.2015, 10:43
quelle

3 Antworten

7

Kurze Antwort

Stellen Sie sicher, dass Sie die neueste ffmpeg verwenden, und verwenden Sie die Option -user-agent .

Längere Antwort

Für das Debugging habe ich ein BaseHTTPSever eingerichtet, das unter 127.0.0.1:8080 mit do_GET() as läuft:

%Vor%

Dadurch konnte ich deinen Befehl wie folgt ausführen:

%Vor%

Wenn ich das mache, sehe ich die folgende relevante Ausgabe von ffmpeg :

%Vor%

Auf dem Server habe ich gesehen:

%Vor%

Es sieht also so aus, als ob ffmpeg es selbst setzt. Aber es gibt eine Option -user-agent bis ffmpeg , und wenn ich -headers "User-Agent: <foo>" durch -user-agent "<foo>" ersetzt habe, dann habe ich es auch auf dem Server neben dem Header X-Forwarded-For gesehen:

%Vor%

Letzte Anmerkung. Es gibt viele Diskussionen um Header Bugs in Trac für ffmpeg . Was ich oben beobachtet habe (dass es im Grunde funktioniert, vielleicht mit einer kleinen Befehlsänderung), war mit einer ziemlich neuen Version:

%Vor%

Ihr nächster Schritt könnte also sein, dass Sie die neueste Version von ffmpeg haben.

    
Jameson 15.11.2015, 11:53
quelle
6

Nun, ffmpeg Handbuch sagt, um mehrere http-Header durch CRLF zu teilen. Das Problem ist, dass Sie Ihr erstes Argument "-header" mit dem zweiten "-header" überschreiben, da es nur ein Argument "-header" geben kann.

In Ihrem Beispiel müssen Sie User-Agent und X-Forwarded wie folgt in ein Argument mit gültiger CRLF einbinden: -header "User-Agent: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, wie Gecko) Chrome / 46.0.2490.80 Safari / 537.36" $ '\ r \ n' "X-Weitergeleitet-For: 13.14 .15.66 "$ '\ r \ n'

    
wiralus 30.11.2015 11:13
quelle
0

Verwenden Sie für set x:1 und y:2 für die Header ffmpeg-Anfrage:

%Vor%

Ergebnis:

%Vor%     
Nabi K.A.Z. 04.01.2018 18:03
quelle