2017-01-21 5 views
0

J'ai essayé de concaténer 2 vidéos mkv avec ffmpeg, en utilisant les commandes suivantes:Problème lors de la concaténation de mkvs en utilisant ffmpeg: Comment régler correctement les horodatages?

ffmpeg -i file-01.mkv -f mpegts -c copy -bsf:v h264_mp4toannexb file-01.mpeg.ts 
ffmpeg -i file-02.mkv -f mpegts -c copy -bsf:v h264_mp4toannexb file-02.mpeg.ts 
ffmpeg -isync -i "concat:file-01.mpeg.ts|file-02.mpeg.ts" -f matroska 
-c copy output.mkv 

Cependant, je reçois l'erreur suivante:

[matroska @ 0x7fc72a000600] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly [matroska @ 0x7fc72a000600] Can't write packet with unknown timestamp av_interleaved_write_frame(): Invalid argument

Comment puis-je faire pour régler les horodateurs?

+0

'-isync' a été désactivé il y a quelques années. Supprimez-le à moins que votre ffmpeg est si vieux. Ajoutez '-fflags + genpts' avant le' -i' – Mulvya

+0

Merci, @Mulvya. J'ai essayé cela en utilisant '-fflags + genpts' mais j'ai reçu la même erreur à propos des horodatages non réglés. –

+0

Le résultat est-il correct? – Mulvya

Répondre

0

Pas nécessairement une solution en soi, mais mkvmerge a fonctionné pour moi à la fin. Était beaucoup plus simple, aussi:

mkvmerge -o "merged.mkv" "file1.mkv" +"file2.mkv" 
0

Ok, essayez ces étapes:

ffmpeg -i file-01.mkv -c copy -map v 01.mp4 
ffmpeg -i file-02.mkv -c copy -map v 02.mp4 
ffmpeg -i 01.mp4 -i file-01.mkv -map 0:v -map 1:a -c copy -bsf:v h264_mp4toannexb file-01.mpeg.ts 
ffmpeg -i 02.mp4 -i file-02.mkv -map 0:v -map 1:a -c copy -bsf:v h264_mp4toannexb file-02.mpeg.ts 
ffmpeg -i "concat:file-01.mpeg.ts|file-02.mpeg.ts" -f matroska 
-c copy output.mkv 

Certains flux H.264 ont des paquets sans valeurs PTS. FFmpeg prend en charge de manière aléatoire le multiplexage de ces flux.

+0

Ne fonctionne toujours pas, @Mulvya. Les mêmes erreurs entraînant une conversion échouée: '[matroska @ 0x7f869c000000] Les horodatages sont désactivés dans un paquet pour le flux 0. Ceci est obsolète et cessera de fonctionner dans le futur. Corrigez votre code pour définir correctement les horodatages [matroska @ 0x7f869c000000] Impossible d'écrire le paquet avec un horodatage inconnu av_interleaved_write_frame(): Argument invalide frame = 1143 fps = 0.0 q = -1.0 Taille L = 8381kB time = 00: 00: 45.60 bitrate = 1505.7kbits/s vitesse = 667x vidéo: 7857kB audio: 528kB sous-titre: 0kB autres flux: 0kB en-têtes globaux: 0kB muxing overhead: inconnu La conversion a échoué! ' –

+0

Téléchargez les fichiers. – Mulvya

+0

J'ai fini par utiliser mkvmerge à la place. N'a eu aucun problème. Beaucoup plus simple. –