ffmpeg - How to pass-http-Header?
Muss ich weiterleiten http-Header (user-agent und ip) an einen ffmpeg Befehl.
Ich den folgenden Befehl verwenden:
ffmpeg -y -timeout 5000000 -map 0:0 -an -sn -f md5 - -headers "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36" -headers "X-Forwarded-For: 13.14.15.66" -i "http://127.0.0.1"
Und ich einen lokalen node.js server zu sehen, der Header, den ich bekommen:
'use strict';
var express = require('express');
var server = express();
server.all('/*', function(req, res) {
console.log(JSON.stringify(req.headers));
res.sendFile('SampleVideo_1080x720_1mb.mp4', {root: '.'});
});
server.listen(80);
Ich bekomme immer die Fehlermeldung "Keine abschließenden CRLF fand im HTTP-header." und der Anfrage stecken geblieben ist.
Wenn ich drop die Header - alles funktioniert normal.
Ich auch versucht, indem beide Header in einen string, aber alle Zeilenumbruch-Zeichen, die ich verwendet (\r\n \r\n, etc.) hat nicht funktioniert.
Kann mir jemand helfen herauszufinden, wie man schreiben Sie diesen Befehl korrekt mit dem Header enthalten?
- Einfach nur neugierig: hast du auch versuchen, zwei separate
-headers "<foo>\r\n"
Optionen, jede mit Ihren eigenen\r\n
am Ende der option argument-strings? - Ja. Es hat nicht funktioniert. Ich denke, ich habe versucht, die volle matrix duplizieren Schrägstriche, fügen Sie Kopfzeilen, etc.
- Was konkret ist das Problem, das Sie sehen, mit dem versenden? Was macht den receiver bekommen?
- Eigentlich habe ich nur einen kleinen lokalen server zu testen - und es scheint, ich bin nie in der Lage zu senden irgendwelche Header, was so überhaupt (auch wenn es nur ein header)
- Mein Ziel ist es nur, um die Berechnung der md5-von einer video-Datei, also das ist ziemlich viel, was ich von diesem Befehl. Ich lief Spur, wie Sie das gemacht hat, aber ich sehe nicht, mein Header gesendet werden sollen, über den Antrag.
- können Sie nicht verwenden, die
md5
Programm? Viel Glück. - mein code natürlich nicht mehr als nur eine md5-Berechnung. Dies ist nur der erste Befehl in der Strömung.
- Sie schrieb: "Mein Ziel ist es nur, um die Berechnung der md5-von einer video-Datei". Viel Glück.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Antwort
Stellen Sie sicher, dass Sie über die neueste
ffmpeg
, und verwenden Sie die-user-agent
option.Mehr Beantworten
Für debugging, richte ich eine
BaseHTTPSever
läuft127.0.0.1:8080
mitdo_GET()
als:Mit, dass das laufen, das mir ermöglicht, führen Sie Ihren Befehl wie:
Wenn ich das Tue, sehe ich die folgenden relevanten Ausgabe von
ffmpeg
:Auf dem server, ich sah:
So wie es aussieht
ffmpeg
Einstellung ist es, die eigenen. Aber es ist eine option-user-agent
zuffmpeg
, und wenn ich ersetzt-headers "User-Agent: <foo>"
mit-user-agent "<foo>"
, ich habe Sie dann sehen es auch auf dem server, neben denX-Forwarded-For
header:Letzten Hinweis. Es gibt viele Diskussionen rund um Header Fehler in trac für
ffmpeg
. Was ich beobachtet habe, oben (dass es im wesentlichen ist arbeiten, vielleicht mit einer kleinen Befehls änderung) wurde mit einer ziemlich aktuellen version:So, Ihren nächsten Schritt könnte sein, stellen Sie sicher, dass Sie die neueste version von
ffmpeg
.Gut, ffmpeg-Handbuch sagt zu split mehrere http-Header, die durch CRLF. Das problem ist, dass Sie überschreiben Ihren ersten "-Kopfzeile" - argument mit dem zweiten "-header", denn es kann nur einen geben "-Kopfzeile" - argument.
Für Ihr Beispiel, Sie müssen sich
User-Agent
undX-Forwarded
in einem argument gültig CRLF wie diese:-header "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36"$'\r\n'"X-Forwarded-For: 13.14.15.66"$'\r\n'
Set
x:1
undy:2
für ffmpeg header Anfrage, benutzen Sie dies:Ergebnis: