Remux / encode / convert MPG in MP4

1505
zarko

Ich verstehe, dass es nicht möglich ist, Metadaten von MPG-Dateien zu bearbeiten (dh erstellt), also suche ich nach einem anderen Weg, um meine MPGs in ein neueres Dateiformat "zu aktualisieren" (bevorzugt sind Formate, die sowohl unter Windows als auch für iOS funktionieren).

Was soll ich tun, um dieses Ziel zu erreichen? Remux / encode / convert meine MPG-Videos in MP4 oder MOV und welche Einstellungen sollten für das Remuxing / Encoding / Converting der Dateien verwendet werden? Welche Aktion würde das beste Ergebnis erzielen? so nah wie möglich an den ursprünglichen MPG-Videos?

Hier ist die Mediainfo-Spezifikation einer meiner MPG-Dateien:

General Complete name : E:\Users\Owner\Desktop\test\MOV03521.MPG Format : MPEG-PS File size : 25.1 MiB Duration : 20s 124ms Overall bit rate mode : Variable Overall bit rate : 10.5 Mbps  Video ID : 224 (0xE0) Format : MPEG Video Format version : Version 1 Format settings, BVOP : No Format settings, Matrix : Default Format settings, GOP : N=1 Duration : 20s 100ms Bit rate mode : Variable Bit rate : 10.2 Mbps Width : 640 pixels Height : 480 pixels Display aspect ratio : 4:3 Frame rate : 30.000 fps Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Compression mode : Lossy Bits/(Pixel*Frame) : 1.105 Time code of first frame : 00:00:00:00 Time code source : Group of pictures header GOP, Open/Closed : Closed Stream size : 24.4 MiB (97%)  Audio ID : 192 (0xC0) Format : MPEG Audio Format version : Version 1 Format profile : Layer 2 Duration : 20s 124ms Bit rate mode : Constant Bit rate : 64.0 Kbps Channel(s) : 1 channel Sampling rate : 32.0 KHz Compression mode : Lossy Stream size : 157 KiB (1%)  
3
MPEG-1-Video? Das scheint ziemlich alt zu sein. Aber aus welchem ​​Grund möchten Sie sie konvertieren? Die Bearbeitung von Metadaten sollte sogar mit MPEG-PS-Containern möglich sein. Eine Konvertierung in MP4 / MOV würde die Qualität beeinträchtigen oder zumindest etwas Platz beanspruchen (das ist der Kompromiss hier). Oder willst du Kompatibilität mit iOS (von dem ich annehme, dass es nicht mit MPEG-1 umgehen kann)? slhck vor 9 Jahren 1
Alles, was ich möchte, ist, ein "createate" -Tag in meine Dateien einzufügen, da diese sonst in meiner Dropbox-Timeline nicht korrekt angezeigt werden. Ich habe versucht, meinen MPG-Film mit EXIFTOOL zu bearbeiten, und es hat nicht funktioniert. Es funktioniert mit vielen verschiedenen Formaten, aber nicht mit MPG. Ich möchte meine Dateien nicht konvertieren, ich möchte nur das Zeit-Tag mit meinen MPG-Dateien verknüpfen (dies sind eigentlich Kameravideos). Die Konvertierung hat auf meinen iOS-Geräten zu Qualitätsverlust geführt. Ich weiß nicht, was ich tun soll, und deshalb suche ich Rat von Experten. zarko vor 9 Jahren 0
Ah, bitte ignorieren Sie die "Bearbeitung von Metadaten sollte möglich sein". Das stimmt natürlich nicht immer. Siehe meine Antwort unten. Lassen Sie mich wissen, wenn Sie Hilfe benötigen, um ffmpeg von einer Befehlszeile aus auszuführen, oder ein anderes Videokonvertierungstool, das die Arbeit für Sie erledigt. slhck vor 9 Jahren 0

2 Antworten auf die Frage

2
slhck

Das Erstellungsdatum (wie viele andere Metadatenfelder) ist eine Eigenschaft, die Sie für MP4 / MOV- und MKV-Container (sowie mehrere andere) festlegen können, nicht jedoch für MPEG-Programmstreams oder Transportstreams. Tatsächlich gibt es keinen Standard für Video-Metadaten wie EXIF ​​für Fotos. Und als sie MPEG-Container entwarfen, haben sie wahrscheinlich (noch) nicht über diese Anwendung nachgedacht.

Sie müssen sich der Tatsache bewusst sein, dass MPEG-1 sehr alt ist - sie haben mit meiner Entwicklung begonnen, als ich geboren wurde - und Sie könnten die Videos wahrscheinlich besser in einen neueren und kompressionseffizienten Codec wie H.264 konvertieren. Ihr MPEG-1-Video mit 10 MBit / s wird bei 1 MBit / s H.264 wahrscheinlich genauso gut aussehen, oder sogar weniger.

Wenn das eigentliche Problem darin besteht, dass die Videos in der richtigen Reihenfolge in einem Dateimanager angezeigt werden müssen und Sie den Dateimanager nicht ändern oder eine Metadatenplattform verwenden können, müssen Sie die Videos neu muxieren oder neu codieren .

Beim Remuxing wird der Video- / Audio-Bitstream nicht berührt, wodurch die Dateigröße und die Qualität erhalten bleiben. Mit ffmpeg könnten Sie Folgendes versuchen:

ffmpeg -i input.mpeg -c copy output.mkv 

Dies kann funktionieren oder nicht. Als ich es versucht habe, hat es nicht funktioniert, aber theoretisch unterstützt Matroska MPEG-1-Video . Matroska wird jedoch unter Windows oder iOS nicht nativ unterstützt.

Sie können also Video und Audio in einem MP4-Container in H.264 / AAC umcodieren:

ffmpeg -i input.mpeg -c:v libx264 -preset slow -crf 18 -c:a aac -strict experimental -b:a 128k output.mp4 

Hier legt die CRF-Option die Qualität fest. 18 bedeutet sehr gut. 23 ist die Standardeinstellung. Niedrig bedeutet besser. Wenn Sie also die Qualität beibehalten möchten, sollten Sie sogar unter 18 gehen. Eine CRF von ± 6 führt zu etwa der Hälfte der doppelten Dateigröße. Die H.264-Kodierungsanleitung ist sehr hilfreich. Beachten Sie, dass Ihre Ergebnisdatei zwar kleiner als die Eingabedatei sein kann, aber dennoch genauso gut aussieht. Das liegt daran, dass der Codec wesentlich effizienter ist. Ich empfehle Ihnen, den CRF zu ändern, bis Sie den Wert finden, bei dem Sie keinen Unterschied mehr zwischen dem ursprünglichen und dem neu codierten Wert feststellen können.

H.264 / AAC in MP4 wird unter (neueren) Windows und iOS unterstützt. Ältere Windows-Versionen (einschließlich Windows 7 IIRC) können nur abgespielt werden, wenn ein Codec-Pack installiert ist. Für die iOS-Kompatibilität auf älteren Geräten müssen Sie möglicherweise-profile:v baseline eine Option festlegen .

Nach der Konvertierung in MKV oder MP4 können Metadaten wie das Erstellungsdatum festgelegt werden.

Danke slhck! Gut erklärt und leicht zu folgen. Wenn ich drei MPGs haben möchte, die ich separat neu codieren möchte, muss ich sie dann einzeln neu codieren, oder gibt es einen intelligenteren Weg? Meine Dateien sind: MOV03521.mpg, MOV03552.mpg, MOV03553.mpg und ich möchte sie in die gleichnamigen Dateien mit der Erweiterung Mp4 umcodieren. Wissen Sie, ob und durch welchen Befehl / welches Programm dies möglich ist? zarko vor 9 Jahren 0
Kommt auf dein Betriebssystem an! Ich bin ein Fan von Befehlszeilenskripts, also entweder Windows-Batchdateien oder Linux-Skripts. Hier finden Sie einige Codebeispiele: http://superuser.com/a/440639/48078 slhck vor 9 Jahren 0
Danke - ich versuche es :-) Ich bin auf Win8. Startconvert.bat enthält Folgendes: für %% i IN (* .mpg) DO (convert-to-mp4.bat "%% i") pausieren Convert-to-mp4.bat enthält Folgendes: IF EXIST "% 1. mp4 "GOTO-Exit-Echo Die Konvertierung für% 1 wurde am% DATE%% TIME% ffmpeg -i% 1 -c gestartet: v libx264 -preset langsam -crf 18 -c: ein aac -strict-experimentelles -b: ein 128k% 1.mp4 : exit echo% 1.mp4 ist bereits vorhanden zarko vor 9 Jahren 0
(der obige Kommentar fehlt @ vor dem Echo) - es ist einfacher hier zu lesen: http://pastebin.com/zy4FcbM2 zarko vor 9 Jahren 0
Könnten Sie bitte sehen, ob ich Ihren Befehl in der Datei convert-to-mp4.bat richtig angewendet habe (ffmpeg -i% 1 -c: v libx264 -preset langsam -crf 18 -c: a aac -strict experimental -b: a 128k% 1.mp4) zarko vor 9 Jahren 0
Ich bin kein Windows-Experte - daher kann ich Ihnen nicht sagen, ob es für Sie funktioniert. Hast du es versucht? Wenn etwas über die Batch-Datei nicht funktioniert, empfehle ich Ihnen, eine neue Frage zu stellen, dann können andere sie beantworten :) slhck vor 9 Jahren 0
Die Batchdatei funktioniert. Ich wollte, dass Sie prüfen, ob ich die Teile des Beispielbefehls korrekt ausgetauscht habe. Beispielbefehl aus Ihrem Beitrag superuser.com/a/440639/48078: ffmpeg -i% 1 -c: v copy -c: eine Kopie% 1.mp4 in meinem Fall: ffmpeg -i% 1 -c: v libx264 -preset langsam-crf 18 -c: aac -strikt experimentell -b: a 128k% 1.mp4 zarko vor 9 Jahren 0
Ja, das sieht gut aus für mich! slhck vor 9 Jahren 0
Vielen Dank! Letzte Frage: Wissen Sie, ob wir die MPG-Datei irgendwie überlisten und zB ihren Video- oder Audiostream (datumsmäßig) bearbeiten könnten? Könnten wir XMP-Daten irgendwie in die MPG-Datei einbetten? Oder kann die MPG-Datei hexadezimal bearbeitet werden? Wäre es möglich, ein Sidecar / xmp für die ursprüngliche MPG-Datei zu erstellen? Was ich anstrebe, ist, Karussell zu überlisten oder zu helfen, die MPG-Datei gemäß der gleichnamigen Xmp-Datei in der Timeline zu positionieren. Es ist ein Weitschuss, aber ich würde es trotzdem gerne ausprobieren. zarko vor 9 Jahren 0
Das hängt ganz davon ab, was Karussell unterstützt. Ich würde lieber in ihren Foren oder Unterstützung fragen. Ich würde bezweifeln, dass sie Metadatenunterstützung für alles andere als Standard haben (gelesen: Nicht-EXIF oder andere Container als vielleicht MP4 und MKV). Das Problem ist eigentlich, dass es keine Standardmethode gibt, um Metadaten zu MPEG-Dateien hinzuzufügen. Sie können das, was Sie möchten, in sogenannte "User Private Streams" setzen, aber Sie müssten auch einen speziellen Decoder dafür haben. Ich würde lieber zum Umcodieren gehen. Oder versuchen Sie es erneut mit dem Remuxing-Ansatz - vielleicht sogar mit anderen Tools wie MKVToolNix. Sie könnten eine neue Frage dazu stellen. slhck vor 9 Jahren 0
Hey slhck! Zum Vergleich der beiden Befehle: ffmpeg -i input.mpeg -c: v libx264 -preset slow -crf 18 -c: a aac -strict experimental -b: a 128k output.mp4 und ffmpeg -i input -c: v libx264 -preset langsam -crf 18 -pix_fmt yuv420p -c: a aac -strict experimentell -b: a 128 k -movflags + faststart output.mp4 Die einzigen verschiedenen Teile sind: -pix_fmt yuv420p -movflags + faststart Verbessern sie die Konvertierung? Würde mich über Ihre Einsicht freuen :-) zarko vor 9 Jahren 0
Die Einstellung "-pix_fmt" kann die Kompatibilität mit einigen Playern oder Geräten verbessern. Wenn nicht festgelegt, kann es bei einigen Eingaben (z. B. Bildern) vorkommen, dass das Video nicht [chroma subsampled] (http://en.wikipedia.org/wiki/Chroma_subsampling) ist. Sie können diese Option für jede Konvertierung sicher einstellen. Die Option `faststart` verschiebt den Dateiindex an den Anfang. Dadurch wird die Videowiedergabe schneller, wenn Sie sie von einem Server streamen. Sie können dies immer für MP4-Container festlegen. slhck vor 9 Jahren 0
Herrlich erklärt, schlampig! Vielen Dank! Und was ist mit den -movflags? Weißt du was es tut? zarko vor 9 Jahren 0
"-movflags + faststart" gehören zusammen. Es heißt nur, verwenden Sie die MOV-Option (MP4 und MOV sind ähnlich) `faststart` :) slhck vor 9 Jahren 0
0
Salman A

Ich habe erfolgreich dafür gebraucht exiftool. Hier sind die Metadaten einer MPG-Datei vor der Korrektur:

C:\>exiftool.exe -s test.mp4  ExifToolVersion : 10.01 FileName : test.mp4 Directory : . FileSize : 14 MB FileModifyDate : 2015:09:04 22:33:16+05:00 FileAccessDate : 2015:09:05 14:10:08+05:00 FileCreateDate : 2015:09:05 14:10:08+05:00 FilePermissions : rw-rw-rw- FileType : MP4 FileTypeExtension : mp4 MIMEType : video/mp4 MajorBrand : MP4 Base Media v1 [IS0 14496-12:2003] MinorVersion : 0.2.0 CompatibleBrands : isom, iso2, avc1, mp41 MovieHeaderVersion : 0 CreateDate : 0000:00:00 00:00:00 ModifyDate : 0000:00:00 00:00:00 TimeScale : 1000 Duration : 0:01:22 -- snip -- TrackHeaderVersion : 0 TrackCreateDate : 0000:00:00 00:00:00 TrackModifyDate : 0000:00:00 00:00:00 -- snip -- MediaHeaderVersion : 0 MediaCreateDate : 0000:00:00 00:00:00 MediaModifyDate : 0000:00:00 00:00:00 -- snip -- 

Ich habe alle Termine geändert :

C:\>exiftool.exe ^ -Quicktime:CreateDate="2007-01-02 03:04:05" ^ -Quicktime:ModifyDate="2007-01-02 03:04:05" ^ -TrackCreateDate="2007-01-02 03:04:05" ^ -TrackModifyDate="2007-01-02 03:04:05" ^ -MediaCreateDate="2007-01-02 03:04:05" ^ -MediaModifyDate="2007-01-02 03:04:05" ^ test.mp4 

Hier sind die Metadaten nach der Korrektur:

FileModifyDate : 2015:09:05 14:20:54+05:00 FileAccessDate : 2015:09:05 14:20:54+05:00 FileCreateDate : 2015:09:05 14:10:08+05:00 -- snip -- CreateDate : 2007:01:02 03:04:05 ModifyDate : 2007:01:02 03:04:05 -- snip -- TrackCreateDate : 2007:01:02 03:04:05 TrackModifyDate : 2007:01:02 03:04:05 -- snip -- MediaCreateDate : 2007:01:02 03:04:05 MediaModifyDate : 2007:01:02 03:04:05 -- snip -- 

Ich würde vorschlagen, dass Sie sich zuerst Metadaten von guten, bekannten MPG-Dateien ansehen und notieren, welches Datum welches ist. Sichern Sie Ihre Dateien vor dem Experimentieren (exiftool erstellt standardmäßig eine Sicherung). Bei meinen Tests bleibt die Größe der ursprünglichen und aktualisierten Dateien genau gleich.