Wie kann ich Videos für Sony Xperia U auf meiner Linux-Box konvertieren?

1204
Konstantin

Ich würde gerne ein paar Videos für meine Freundin schicken, aber ich würde sicherstellen, dass sie auf ihrem Handy abspielbar sind. Ich möchte die Kodierungsaufgaben auf meiner Arch Linux-Box ausführen, da mein PC ein Low-End ist. Ich kann nur ffmpeg oder mencoder oder ein anderes CLI-Tool verwenden. Sie kann Youtube-Videos abspielen, aber ich möchte solche Videos nicht auf Youtube hochladen. Gibt es Voreinstellungen für bestimmte Mobiltelefone? Und wenn sie einfach einen direkten Video-Link anklickt, wird sie direkt auf dem Handy abgespielt oder sollte ich sie in einen html5 / flash-Player einbetten, wie auf youtube?

1

1 Antwort auf die Frage

2
LordNeckbeard

Was das Gerät unterstützt

Laut dem Xperia U White Paper kann dieses Gerät H.264-Videos, High-Profile, Level 3.2 im MP4-Container mit AAC-Audio decodieren.

Beispiel ffmpegBefehl

ffmpeg -i input -codec:v libx264 -crf 23 -preset medium -profile high -level 3.2 \ -pix_fmt yuv420p -movflags +faststart -codec:a aac -strict experimental out.mp4 

Was machen diese Optionen?

  • -codec:v libx264- Wählen Sie den Video-Encoder libx264, um das H.264-Video zu codieren.

  • -crf 23- Videoqualitätsstufe ausgeben. 23ist die Standardeinstellung und ein niedrigerer Wert ist eine höhere Qualität.

  • -preset medium- Kodierungsgeschwindigkeit vs. Kompromiss zwischen Komprimierungseffizienz. Standardeinstellung ist medium.

  • -profile high - Setzt das H.264-Videoprofil auf Hoch.

  • -level 3.2 - Stellt den H.264-Videopegel auf 3,2 ein.

  • -pix_fmt yuv420p- ffmpegVersuche, Chroma-Subsampling zu minimieren oder zu vermeiden (abhängig von Eingang, Encoder, ffmpegVersion usw.). Dies ist technisch gesehen eine gute Sache, kann aber zu einer Ausgabe führen, die von nicht auf FFmpeg basierenden Playern nicht verarbeitet werden kann. Dies gewährleistet ein kompatibles Chroma-Subsampling-Schema.

  • -movflags +faststart - Verschiebt das "moov-Atom" an den Anfang der Datei, so dass die Wiedergabe beginnen kann, bevor die Datei vollständig heruntergeladen wird, wenn der Download progressiv ist (z. B. Ansehen über einen Browser).

  • -codec:a aac -strict experimental- Kodieren Sie AAC-Audio mit dem experimentellen nativen AAC-Encoder von FFmpeg. Es ist nicht der schlechteste AAC-Encoder, aber wenn es beschissen klingt, verwenden Sie eine höhere Bitrate -b:a(Standardeinstellung ist 128k).

Zusätzliche Bemerkungen

  • Verwenden Sie eine aktuelle Version von ffmpeg. Alte Versionen erzwingen bei der Verwendung nicht die korrekte Anzahl von Referenzframes -level(behobener Fehler # 3307 ), aber da Sie Arch Linux verwenden, müssen Sie sich darüber keine Gedanken machen.

  • Das ffmpeg-Paket aus dem Arch Linux Extra-Repository unterstützt nur den nativen AAC-Encoder von FFmpeg. Rekompilieren Sie aus ABS mit --enable-libfdk-aac --enable-nonfree(mit dem Paket libfdk-aac als Abhängigkeiten) oder verwenden Sie das Paket ffmpeg-git in AUR, um Unterstützung für die Codierung mit libfdk_aac zu erhalten, dem besten von FFmpeg unterstützten AAC-Codierer. Die Verwendung des ABS-Pakets wird gegenüber dem AUR-Paket empfohlen, wenn Sie dies versuchen möchten.

  • Wenn das Eingangsvideo und / oder -audio bereits kompatibel ist, können Sie es einfach streamen, anstatt es neu zu kodieren, z. B. mit -codec:a copy.

  • Das mobile Gerät verfügt möglicherweise über zusätzliche Einschränkungen, die mir nicht bekannt sind. Sie müssen also experimentieren. Ich bin mir auch nicht sicher, ob das Gerät mit einem einfachen Link zum Video arbeitet, aber das wäre leicht zu testen.

  • Weitere Informationen finden Sie im FFmpeg H.264 Encoding Guide und im FFmpeg AAC Encoding Guide .

@Konstantin Hat dieses Beispiel für Sie funktioniert? LordNeckbeard vor 9 Jahren 0