Wie kann ich ein Video drehen und auf einem Fernsehgerät wiedergeben lassen?

890
Alex

Ich habe ein Video, das von einem Telefon stammt und das sich problemlos auf einem Thomson-Fernsehgerät abspielen lässt (über USB). Die Details des Videos sind folgende:

> avprobe 20170904_065655.mp4 avprobe version 11.3-6:11.3-1~trusty, Copyright (c) 2007-2014 the Libav developers built on Apr 13 2015 22:25:55 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '20170904_065655.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : 2017-09-04 04:58:01 Duration: 00:01:05.34, start: 0.000000, bitrate: 17094 kb/s Stream #0.0(eng): Video: h264 (High), yuv420p, 1920x1080, 17017 kb/s, 30 fps, 90k tbn (default) Metadata: creation_time : 2017-09-04 04:58:01 Side data: displaymatrix: rotation of -90.00 degrees Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: creation_time : 2017-09-04 04:58:01 # avprobe output 

Das Video wird um 90 Uhr gegen den Uhrzeigersinn gedreht. Daher versuche ich, wie hier ausgeführt, das folgende Video, das Video um 90 Grad im Uhrzeigersinn zu drehen:

ffmpeg -i 20170904_065655.mp4 -vf "transpose=1" test.mp4 

Leider dreht sich das Video um 180 Grad. Ist mit diesem Befehl etwas falsch, um das Video zu drehen?

Ich konnte das Video zwar drehen avidemux, aber die gespeicherte neue Videodatei ( rotated.mp4) konnte auf dem Fernsehgerät nicht abgespielt werden ('Videoformat nicht unterstützt'). Ich habe versucht, die Datei mit Befehlen wie in verschiedene Formate zu konvertieren

avconv -i rotated.mp4 -c:v h264 -q:v 3 -c:a libmp3lame out.avi avconv -i rotated.mp4 -c:v mpeg1video -q:v 3 -c:a libmp3lame out.avi avconv -i rotated.mp4 -r 25 -vb 20M -crf 20 output.avi avconv -i rotated.mp4 -vcodec libx264 -acodec aac -strict -2 -b:a 384k output.mp4 

Aber keiner hat funktioniert. Was vermisse ich? Oder gibt es eine Möglichkeit, das Video in der Befehlszeile zu drehen, ohne das tatsächliche Format / die Kodierung zu ändern?

Die avprobevon rotated.mp4ist

avprobe version 11.3-6:11.3-1~trusty, Copyright (c) 2007-2014 the Libav developers built on Apr 13 2015 22:25:55 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) Input #0, avi, from 'rotated.mp4': Duration: 00:00:30.77, start: 0.000000, bitrate: 6728 kb/s Stream #0.0: Video: h264 (High), yuv420p, 1080x1920 [PAR 1:1 DAR 9:16], 30 fps, 30.02 tbn, 60.04 tbc Stream #0.1: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s 

Mit dem ffmpeg von hier ist die avprobeAusgabe die folgende, nachdem ich die Methode von 'LordNeckbeard' auf die angewendet habe rotated.mp4:

avprobe version 11.3-6:11.3-1~trusty, Copyright (c) 2007-2014 the Libav developers built on Apr 13 2015 22:25:55 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.82.104 Duration: 00:00:30.86, start: 0.000000, bitrate: 10397 kb/s Stream #0.0(und): Video: h264 (Constrained Baseline), yuv420p, 1080x1920 [PAR 1:1 DAR 9:16], 8860 kb/s, 30 fps, 15360 tbn, 60 tbc (default) Stream #0.1(und): Audio: [1][0][0][0] / 0x0001, 48000 Hz, 2 channels (default) Unsupported codec with id 0 for input stream 1 # avprobe output 

und weder Audio noch Video werden jetzt unterstützt ...

1
@Alex 1. Benötigen Sie besonders die Verwendung von avconf oder ffmpeg über die Befehlszeile, oder ist andere libre-Software in Ordnung? 2. Welches Modell ist das fragliche Fernsehgerät? 3. Ist es wichtig, wenn sich das Format ändert, solange die Qualität erhalten bleibt? wizzwizz2 vor 7 Jahren 0
[This] (http://www.thomsontv.eu/faq) ist sowohl hilfreich als auch völlig nutzlos: "Dies ist ein häufig auftretendes Problem mit Dateien im .AVI- und .DIVX-Format und hängt vom Codec ab Wird verwendet, wenn die Datei erstellt wird. Wenn die Datei nicht lesbar ist, bedeutet dies, dass ihr Codec nicht mit dem Fernsehgerät kompatibel ist. " wizzwizz2 vor 7 Jahren 0
Was ist die avprobe-Info für gedreht.mp4? harrymc vor 7 Jahren 0
@harrymc: Die Ausgabe wurde der Frage hinzugefügt Alex vor 7 Jahren 0
Ich habe die neueste Version verwendet und jetzt werden weder Audio noch Video unterstützt. Vielleicht werde ich nach einer Möglichkeit suchen, das Video vom Computerbildschirm aus aufzunehmen .... Alex vor 7 Jahren 0
Der von LordNeckbeard gegebene Befehl sollte nicht auf `gedreht.mp4` ausgeführt werden, sondern` input.mp4` (Ihre Originaldatei). In Ihrem `gedreht.mp4` ist das Audio PCM-codiert, was sich vom ursprünglichen AAC unterscheidet. Sie können das Original-Audio grundsätzlich kopieren (`-c: eine Kopie`), und Ihr Fernsehgerät sollte es lesen. Wird das Video abgespielt, wenn Sie `ffmpeg -i input.mp4 -c: v mpeg4 -qscale: v 2 -an output.mp4` verwenden, dh mit MPEG-4-Codec und ohne Audio? Oder alternativ mit `ffmpeg -i input.mp4 -c: v mpeg4 -qscale: v 2 -c: a libmp3lame output.mp4`? slhck vor 7 Jahren 0
Ich habe das 64-Bit-"johnvansickle" `ffmpeg 'für die folgenden zwei Experimente verwendet. 1. Konvertierung wie von LordNeckbeard vorgeschlagen: "Videoformat nicht unterstützt". 2. Mit dem von Ihnen vorgeschlagenen Befehl habe ich ein erwartetes "Audioformat nicht unterstützt" erhalten, das Video wird jedoch nicht abgespielt, es sieht aus wie ein beschädigtes Standbild. Es ist dieses Mal KEIN Fehler "Videoformat nicht unterstützt" aufgetreten. Alex vor 7 Jahren 0
@slhck: Deine zweite Befehlszeile: Rosa Standbild mit Audio. Also das Gleiche wie (2.) aber mit Audio. Vielleicht frage ich das Unmögliche ...? Alex vor 7 Jahren 0

2 Antworten auf die Frage

1
LordNeckbeard
ffmpeg -i input.mp4 -vf "scale=-2:1080,format=yuv420p" -c:a copy output.mp4 
  • Da das Fernsehgerät scheinbar die Seitendaten zum Drehen ignoriert, müssen Sie das Video erneut codieren, um es zu drehen. ffmpegmacht dies automatisch, so dass Sie nichts Besonderes tun müssen.

  • Wenn es immer noch nicht funktioniert, fügen Sie -profile:v baselinedie Kompatibilität hinzu. Ich empfehle auch zu versuchen -profile:v mainund wegzulassen -profile:v. Wenn Sie damit umgehen können -profile:v, vermeiden Sie, das nächstbeste ist hauptsächlich, das am wenigsten optimale ist die Grundlinie, aber für die Wiedergabe von lokalen Fernsehgeräten spielt es keine Rolle: Was am besten funktioniert, ist das Beste.

  • Mit dem Skalenfilter wird das Video auf eine Höhe von 1080 verkleinert. Andernfalls wird kein Video mit einer Größe von 1080 x 1920 wiedergegeben.

  • Durch die Verwendung des Formatfilters wird ein kompatibles Pixelformat sichergestellt. Ihre Eingabe ist bereits YUV 4: 2: 0 planar, dies ist jedoch nur eine Versicherung für andere Eingabetypen.

  • -c:a copywurde hinzugefügt, um das Audio zu kopieren (re-mux), um unnötiges Umcodieren zu vermeiden. Für Eingänge, die andere Audiosignale als AAC enthalten, -c:a aacanstelle von -c:a copy.

  • Fernsehgeräte können wählerisch sein, so dass weitere Experimente erforderlich sind. Um schnell ein 60 Sekunden langes Segment zu testen, können Sie hinzufügen -t 60.

  • Da das Tag verwendet wurde, nahm ich an, dass Sie dies zulassen würden avconv. Nichts davon kann zutreffen, avconvda ich es nicht benutze und nicht damit vertraut bin. Stellen Sie sicher, dass Sie eine aktuelle Version von verwenden ffmpeg. Für Linux können Sie eine aktuelle Versionffmpeg unter https://www.johnvansickle.com/ffmpeg/ herunterladen.

Danke für den Vorschlag, aber es geht nicht. Der Fernseher sagt noch einmal: "Videoformat wird nicht unterstützt". Alex vor 7 Jahren 0
@Alex Zeige Informationen zu einem Video, das funktioniert. LordNeckbeard vor 7 Jahren 0
Es steht am Anfang der Frage. Oder möchten Sie Infos aus einem anderen Video sehen? Alex vor 7 Jahren 0
@Alex Nein, entschuldige. Ich habe vermisst, dass es funktionierte und nicht funktionierte. Lassen Sie das Ratespiel beginnen: Versuchen Sie, `-brand mp42` hinzuzufügen. LordNeckbeard vor 7 Jahren 0
Vielen Dank für diesen Hinweis, aber ich bekomme immer noch die Fehlermeldung "Videoformat nicht unterstützt". Der Ton funktioniert jedoch wie zuvor ... Alex vor 7 Jahren 0
@Alex Können Sie überprüfen, ob Sie die aktuelle Version von ffmpeg aus dem Link verwendet haben, den ich in der Antwort angegeben habe, anstatt von ffmpeg oder avconv aus dem Repo? LordNeckbeard vor 7 Jahren 0
Ich habe die neueste Version von `ffmpeg` verwendet und damit weder Audio noch Video unterstützt !! Alex vor 7 Jahren 0
Nun, ich denke, die endgültige Antwort auf meine ursprüngliche Frage ist eine Mischung aus beiden Antworten hier ... Alex vor 7 Jahren 0
@Alex Funktioniert es jetzt, nachdem die oben angegebenen Befehle angewendet wurden, und eine erneute Skalierung? slhck vor 7 Jahren 0
Ja, es funktioniert jetzt! Alex vor 7 Jahren 0
1
harrymc

Es ist möglich, dass das gedrehte Video die Fähigkeiten Ihres Fernsehgeräts übersteigt.

Durch die Rotation wurde die Auflösung von 1920x1080 auf 1080x1920 geändert.

Wenn Ihr Fernseher 1080p (Full HD) hat, unterstützt er 1.920x1.080, und wenn nur 720p dann 1.280x720 ist.

In beiden Fällen ist die Videohöhe größer als die maximale. Für ein solches Video benötigen Sie einen Fernseher mit 2K oder 4K.

Vielleicht gibt es eine Möglichkeit, die Auflösung des Videos * zu reduzieren *? Das wäre der einfachere Weg ... Alex vor 7 Jahren 0
@Alex Zur Skalierung auf 1080 Pixel Höhe fügen Sie `-filter: v" scale = -2: 1080 "` zum Befehl ffmpeg hinzu (bevor Sie den Codec usw. angeben). slhck vor 7 Jahren 0
@slhck: Nun, ich denke, die endgültige Antwort auf meine ursprüngliche Frage ist eine Mischung aus beiden Antworten hier ... Alex vor 7 Jahren 0
Sie müssen entscheiden, welche Antwort für die endgültige Lösung wichtiger war. harrymc vor 7 Jahren 0
@Alex Sie könnten eine Antwort akzeptieren und die Prämie einer anderen geben oder umgekehrt. Für solche Fälle gibt es keine Regeln. slhck vor 7 Jahren 0
Alex: Tu, was du für richtig hältst. Das Teilen von Akzeptanz und Kopfgeld ist eine mögliche Lösung für Ihr Dilemma. harrymc vor 7 Jahren 0
@Alex Das Hauptproblem war anscheinend die nicht unterstützte Ausgabegröße von 1080x1920, wie von harrymc ausgeführt, die ich in meiner ursprünglichen Antwort nicht berücksichtigt habe. Ich habe meine Antwort aus Gründen der Bequemlichkeit mit einem neuen Befehl aktualisiert. Was Sie jedoch tun, ist gut für uns. LordNeckbeard vor 7 Jahren 0