2017-11-17 6 views
0

Ich habe einen Befehl, der eine .mpg-Datei in eine .mp4-Datei konvertiert. Aber irgendwie werden die mp4-Dateien asynchron, das Audio hat eine Verzögerung von 0,5 Sekunden.FFmpeg creating mp4 wird asynchron

Jede Idee, wie dies zu beheben, da die mpg-Datei synchron ist.

ffmpeg -i test.mpg -deinterlace -r 25 -s 1024x576 -pix_fmt yuv420p -vcodec libx264 -preset slow -vprofile high -b:v 1350k -minrate 1400k -maxrate 1400k -bufsize 1400k -trellis 2 -x264opts nal-hrd=cbr -acodec mp3 -ab 192k -async 1 test.mp4 

aktualisiert

Mein schlechter der obige Befehl richtig funktioniert, ich habe folgende Befehle, die mir eine m2v und mp2-Datei von einem geben Zeitstempel erstellen, danach habe ich diese 2 Dateien auf eine mp4-Datei zusammenführen, die werden asynchron.

ffmpeg -v quiet -y -i fulltest.m2v -c:v copy -ss 00:00:00 -to 00:00:30 -sn test.m2v 
ffmpeg -v quiet -y -i fulltest.mp2 -c:v copy -ss 00:00:00 -to 00:00:30 -sn test.mp2 

ffmpeg -i test.m2v -i test.mp2 -target pal-dvd -vcodec copy -acodec copy fulltest.mpg 

ffmpeg -i fulltest.mpg -deinterlace -r 25 -s 1024x576 -pix_fmt yuv420p -vcodec libx264 -preset slow -vprofile high -b:v 1350k -minrate 1400k -maxrate 1400k -bufsize 1400k -trellis 2 -x264opts nal-hrd=cbr -acodec mp3 -ab 192k fulltest.mp4 
+0

Was '-async 1 'geschieht ohne? – Mulvya

+0

@Mulvya Entschuldigung für die späte Antwort, es wird immer noch aysnkronous, ich habe einmal hinzugefügt -async 1, weil ich gelesen habe, dass es mein Problem lösen kann – Jaan

+0

Zeige vollständige Protokoll des Befehls und auch Ausgabe von 'ffprobe -show_streams -of compact test.mpg ' – Mulvya

Antwort

1

Verwenden

ffmpeg -ss 0 -t 30 -i fulltest.m2v -ss 0 -t 30 -i fulltest.mp2 
     -vf yadif,scale=1024:576,format=yuv420p -r 25 
     -vcodec libx264 -preset slow -vprofile high -b:v 1350k -minrate 1400k -maxrate 1400k -bufsize 1400k 
     -trellis 2 -x264opts nal-hrd=cbr 
     -acodec mp3 -ab 192k fulltest.mp4 

Sie können die temporären Dateien überspringen. -t Option ist Dauer, nicht -to Endpunkt. Berechnen Sie also die Dauer z.B. von 10s bis 17s beträgt 7 Sekunden.


Um die temporären Dateien zu halten,

ffmpeg -v quiet -y -i fulltest.m2v -ss 00:00:00 -to 00:00:30 -vf yadif,scale=1024:576,format=yuv420p -r 25 
     -vcodec libx264 -preset slow -vprofile high -b:v 1350k -minrate 1400k -maxrate 1400k -bufsize 1400k 
     -trellis 2 -x264opts nal-hrd=cbr 
     -an -sn tempvideo.mp4 

ffmpeg -v quiet -y -i fulltest.mp2 -c:a copy -ss 00:00:00 -to 00:00:30 -sn tempaudio.mp2 

ffmpeg -i tempvideo.mp4 -i tempaudio.mp2 -c:v copy -c:a mp3 -b:a 192k fulltest.mp4 
+0

Hallo danke für die Antwort, ich habe es noch nicht probiert, also was genau habe ich falsch gemacht. Könntest du mir den Befehl zeigen, wie ich die temporären Dateien für mich benutzt habe? – Jaan

+0

Wenn Sie '-c: v kopieren' mit einem Zeitbereich verwenden, entspricht die Ausgabe möglicherweise nicht dem angeforderten Bereich, da Videos nur auf Keyframes geschnitten werden können. Da Sie die Streams in Ihren Befehlen schließlich neu codieren, überspringe ich die Zwischenschritte. – Mulvya

+0

Wäre es möglich, diese Befehle zu ändern? Ffmpeg -v quiet -y -i fulltest.m2v -c: v kopieren -ss 00:00:00 -to 00:00:30 -sn test.m2v ffmpeg -v quiet - y -i fulltest.mp2 -c: v kopieren -ss 00:00:00 -bis 00:00:30 -sn test.mp2', damit es synchron wird, muss ich in meinem Fall Timecodes – Jaan

Verwandte Themen