Kompilieren Sie den FFmpeg-Beispielcode

Ich habe versucht, HIER einen FFmpeg-Beispielcode zu kompilieren , der veranschaulicht, wie Filter mit seinen C-APIs verwendet werden.

Ich habe den Code kompiliert (durch ein universelles make). Wie die Verwendung schon sagt, mache ich das:

./filtering_video test.mp4

Aber es erzeugt ein Durcheinander auf dem Bildschirm. Ich hatte erwartet, dass es eine Ausgabedatei erzeugt .mp4, die abgespielt werden kann.

Wie wird es richtig ausgeführt?

Und funktioniert es mit jedem beliebigen Videofilter, der an FFmpeg übergeben wird -vf, wenn ich einfach die angegebene Filterbeschreibung ändere?

const char *filter_descr = "scale=78:24,transpose=cclock";

Antworten (1)

Es erzeugt keine Ausgabedatei.

Nach dem Filtern display_frame()wird aufgerufen, was einfach an die Konsole ausgegeben wird.

/* Trivial ASCII grayscale display. */
p0 = frame->data[0];
puts("\033c");
for (y = 0; y < frame->height; y++) {
    p = p0;
    for (x = 0; x < frame->width; x++)
        putchar(" .-+#"[*(p++) / 52]);
    putchar('\n');
    p0 += frame->linesize[0];
}
fflush(stdout);
Ja, ich habe Charaktere gesehen. Wie kann ich es visuell darstellen? zB an ffplay übergeben, als Datei speichern, etc?
+ funktioniert der Code, wenn ich einfach eine beliebige Filterbeschreibung übergebe?
Sehen Sie sich das Transcodierungsbeispiel an
Ich habe die Beschreibung auf geändert freezedetect=n=-60dB:d=8. Aber dieser Filter erzeugt Metadaten, keine Frames (wie lavfi.freezedetect.freeze_start: 10.01). Wie kann ich diese Daten stattdessen anzeigen?