Wie erzeugt man ein reinweißes Hintergrundvideo mit ffmpeg?

1872
cdlvcdlv

Ich möchte mit ffmpeg ein reinweißes Video erstellen, um es als Hintergrund zu verwenden. Ich meine ein Video, das auf einem Computer abgespielt wird, Sie sehen als weiß . (In den Beispielen werde ich die Ausgabe an ffplay weiterleiten, damit Sie das Video später nicht löschen müssen.)

So erstellen Sie ein 3s-Video mit 640 x 480 Pixeln (standardmäßig 25 Bilder pro Sekunde):

ffmpeg -f lavfi -i color=white:640x480:d=3 -f matroska - | ffplay -autoexit - 

Dies ist ein kleines Rechteck der Ausgabe gegen die Superuser- Seite (die in meinem Browser als weiß angezeigt wird).

Die erste Ausgabe gegen die Superuser-Seite

Auf der Suche nach einer Antwort kam ich zu dieser Frage . Die Erklärung wird von Mulvya geliefert:

Die Auffüllung ist RGB 235, was bei herkömmlichen Videos die Obergrenze ist. Ein Videoplayer wird also 235 erweitert, um Weiß anzuzeigen. - Mulvya 23. Oktober 15 um 17:44

Aber ich habe keinen Spieler gefunden, der es weiß zeigt . Ich habe mit ffplay, MPC-HC und VLC sowohl das Piping als auch das Erstellen einer Zwischendatei versucht .

Bei Bildern wie in der Frage scheint die Lösung die -format rgb32Option hinzuzufügen . Aber ich bekomme das gleiche Ergebnis mit

ffmpeg -f lavfi -i color=white:640x480:d=3 -format rgb32 -f matroska - | ffplay -autoexit - 

Die -pixel_formatOption funktioniert auch nicht.

Also ... wie erstellt man mit ffmpeg ein reinweißes Hintergrundvideo ?

0
Mit Ihrem ersten Befehl bekomme ich reines Weiß (#FF), wie von Photoshop bestätigt. Ich werde auch weiß, wenn ich auf einem Webm ausgeben und in Firefox spiele. Versuchen Sie, "-color_range 1" kurz vor "-f matroska" hinzuzufügen. Aktualisieren Sie auch Ihr ffmpeg, falls Sie eine alte Version verwenden. Gyan vor 7 Jahren 1
Mein "ffplay" und "ffmpeg" sind beide "N-81308-g369ed11", die ich im August erstellt habe. Möglicherweise wurde dieses Problem behoben. `-color_range 1` ändert nichts. cdlvcdlv vor 7 Jahren 0
Was ist mit 'ffplay -f lavfi -i color = white: 640x480: d = 3'? Gyan vor 7 Jahren 1
Nada Gleiche Sache. cdlvcdlv vor 7 Jahren 0
Welches Betriebssystem ist das? Gyan vor 7 Jahren 1
Windows XP x64, aber die Bedienung von `ffmpeg` sollte die gleiche sein, denke ich. Ich habe es nativ zusammengestellt. cdlvcdlv vor 7 Jahren 0
Ich verwende auch eine kompilierte Version. Versuchen Sie es auf jeden Fall mit dem Zeranoe-Build. Gyan vor 7 Jahren 1
Ich brauche eine W7 oder eine spätere Version (Zeranoes Builds sind seit Monaten nicht mehr kompatibel). In der Zwischenzeit sind andere Ideen willkommen. cdlvcdlv vor 7 Jahren 0
Ausgabe an PNG. Und probieren Sie die Builds [hier] (https://sourceforge.net/projects/mplayer-win32/files/FFmpeg/git-N-82759-g1f5630a/). Gyan vor 7 Jahren 1
In der Tat funktionieren diese Builds in XP. Da ihnen "ffplay" fehlt, habe ich ein avi mit "ffmpeg -f lavfi -i color = white: 640x480: d = 3 -color_range 1 -format rgb32 -c: v huffyuv ohavi" erstellt und später abgespielt, aber die Ausgabe bleibt bestehen 235/255. Generiertes PNG ist echtes Weiß, aber ich brauche ein Quellvideo mit variabler Dauer, da meine Idee darin besteht, dem Befehl einige weitere Eingaben hinzuzufügen und verschiedene Filter zum Hinzufügen von Inhalten im Hintergrund zum Generieren des Ausgabevideos zu verwenden. Aber ich hätte nie gedacht, dass ich diesen ersten Schritt nicht tun könnte. Ich dachte, es wäre trivial. cdlvcdlv vor 7 Jahren 0
Es ist trivial. Weiß nicht, warum es für Sie nicht funktioniert :( Sie können in MOV nach PNG ausgeben, um ein Video zu erhalten, z. B. `ffmpeg -f lavfi -i Farbe = weiß: 640x480: d = 3 -color_range 2 -c: v png video.mov` Gyan vor 7 Jahren 1
BTW, wenn die Idee ist, Inhalte oben hinzuzufügen. Sie müssen die weiße Leinwand nicht in einer Datei speichern. Führen Sie es einfach direkt in die Filter ein. Gyan vor 7 Jahren 1
Genau. Meine Absicht ist es, das weiße Video nicht zu speichern (die Dauer der 3 s ist willkürlich, nur zum Testen), sondern es als Hintergrund mit anderen Inhalten zu verwenden und ein abschließendes x264-Video in einem Befehl zu generieren. Ich habe nicht die zusätzlichen Filter hinzugefügt, die ich nur verwenden möchte, um das Problem zu isolieren. cdlvcdlv vor 7 Jahren 0
Welche Grafikkarte verwendest du? Gyan vor 7 Jahren 1
Nvidia GeForce FX 5200 Bios 4.34.20.80.02 cdlvcdlv vor 7 Jahren 0
Ok, ich erinnere mich daran, dass es in der Nvidia-Systemsteuerung eine 'Anpassung der Videofarbe' gab. Wenn Sie Nvidia anstelle des Videoplayers steuern lassen, können Sie den Eingangsbereich einstellen. Sehen Sie, was das sagt. Gyan vor 7 Jahren 1
Ich habe mit den Kontrollen der NCP herumgespielt, aber ich konnte bei keinem Spieler einen Unterschied feststellen. Ich konnte den neuesten Zeranoe-Build in einem W7 mit den gleichen Ergebnissen wie XP testen. Ich denke, ich mache das mit _avisynth_, weil ich mit `ffmpeg` einige Probleme mit meinem ursprünglichen Befehl herausgefunden habe. Erstens scheint es, als könnten Sie nicht "pixel_format" in "color" -Quellfilter einstellen - es ist immer "yuv420p". Zweitens: `ffplay` konvertiert immer in` color_range 1` ([oder `2` je nach Dokumentation) (https://trac.ffmpeg.org/ticket/3409#comment:7)). cdlvcdlv vor 7 Jahren 0
Zum Testen habe ich ein avisynth-Skript mit der folgenden Zeile erstellt: `BlankClip (Länge = 75, Breite = 640, Höhe = 480, fps = 25, Farbe = $ FFFFFF, Pixeltyp =" RGB24 "). KillAudio`," ffplayed " it und got grey (`color_range` macht hier nichts, egal vor -i oder danach). Sowohl MPC-HC als auch VLC (über [AVFS] (http://turtlewar.org/avfs/)) spielen es weiß. Ich denke also, dass meine Quelle und _.avs_ sein wird und das Endprodukt mit _ffmpeg_ komprimiert wird (sehr vorsichtig und doppelte Überprüfung). cdlvcdlv vor 7 Jahren 0
* scheinbar können Sie pixel_format nicht im Farbquellenfilter einstellen. * -> Sie fügen anschließend einen Formatfilter hinzu. `-f lavfi -i Farbe = weiß: 640 x 480: d = 3, format = rgb24` Gyan vor 7 Jahren 1
Das hat funktioniert! Ich habe die Option `format` gefunden, aber ich dachte, ich sollte einen Doppelpunkt und kein Komma als Trennzeichen verwenden und habe einen Fehler erhalten. Sie können _ffplay_ nicht verwenden, um das Ergebnis zu überprüfen. Unabhängig von der Option, die Sie versuchen, wird _ffplay_ immer grau angezeigt. Ich kann _MPC-HC_ jedoch wie folgt verwenden: `ffmpeg -hide_banner -f lavfi -i color = white: 640x480: d = 3, format = rgb24 -c: v rawvideo -f nut - | mpc-hc.exe -`. ** Es ist eine gültige Antwort auf meine Frage. Wenn Sie sie als Antwort schreiben, akzeptiere ich sie. cdlvcdlv vor 7 Jahren 0

1 Antwort auf die Frage

1
Gyan

Wie in den Kommentaren beschrieben, bietet das Konvertieren in ein RGB-Format eine vollständige Ausgabe.

-f lavfi -i color=white:640x480:d=3,format=rgb24 

Für andere Leser sollte ich beachten, dass ich beim Ausführen des ursprünglichen Befehls des OP eine reine weiße Anzeige bekomme. Ich kann nicht diagnostizieren, was in OPs Setup passiert, aber es sollten keine besonderen Schritte erforderlich sein, um eine reine weiße Ausgabe von ffmpeg zu erzeugen color=white.