Vos fichiers ne se joindront pas correctement car quelque chose ne correspond pas.
Comme beaucoup d'autres, j'ai eu des problèmes de synchronisation du son dans les vidéos fusionnées. et bien que MP4Box fonctionne bien si les clips ont des spécifications identiques, dans certains cas, je serais frappé par le "Aucune piste de destination appropriée trouvée - en créant une nouvelle", auquel cas Totem (alias Vidéos) ne jouerait pas ce segment dans le fichier joint Après quelques essais et erreurs et d'autres recherches, j'ai développé la méthode suivante pour gérer la jonction de vidéos qui, jusqu'à présent, a toujours fonctionné avec une qualité acceptable (pour moi).
Si les tailles d'images ne correspondent pas (erreurs de jonction relatives aux pistes vidéo):
Normaliser la vidéo sans perturber l'audio (-c: une copie) en définissant des contraintes (divisibles par 8 pour une compatibilité maximale du codec) pour des segments inégalés
Exemples de commandes
width=856
height=480
avconv -i input.mp4 -filter:v "scale=iw*min($width/iw\,$height/ih):ih*min($width/iw\,$height/ih), pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2" -c:a copy output.mp4
Si l'audio ne correspond pas (jonction des erreurs relatives aux pistes audio):
Normaliser l'audio
Traitez l'audio sans perturber la vidéo (copie c: v) de sorte que tous les clips correspondent au codec, à la fréquence et au débit binaires souhaités avec c: un codec-fréquence de voiture comme -ar 48000 et et débit binaire avec b: a 128k pour la stéréo (64K par canal semble une bonne cible) ou quoi que ce soit correspond.
Exemple: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4
(notez que libmp3lame est un codec pour l'audio mp3) Vous pouvez obtenir une liste des encodeurs pris en charge par avconv en émettant la commande avconv -codecs
ou pour affiner les choses vers un codage spécifique avconv -codecs|grep *codecname*
par exempleavconv -codecs|grep mp3
Maintenant que nous avons normalisé les fichiers, nous pouvons les rejoindre. Dans cet exemple, je vais joindre les fichiers avec MP4Box. Si vous ne l'avez pas, vous pouvez l'obtenir en lançant la commandesudo apt-get install gpac
Joignez les fichiers avec la commande MP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4
(notez qu'il n'y a pas de chat avant le premier fichier et que chaque fichier supplémentaire est précédé de -cat et le fichier cible est précédé de -out)
Si vous utilisez MP4Box (recommandé pour MP4) pour rejoindre, vous pouvez constater que vous devez traiter tous les clips avec avconv, que les spécifications semblent correspondre ou non pour éviter l'erreur "Aucune piste de destination appropriée trouvée - création d'une nouvelle (type vide)"
Remarque: J'ai trouvé que Avidemux avait des problèmes avec les vidéos encodées en utilisant des fichiers H.264 / AVC (par totem) en raison des images B comme référence. Cela semble entraîner une désynchronisation audio lors de la jonction, même lorsque vous choisissez de copier à la fois l'audio et la vidéo sans remux. Se bloque lorsque vous ne choisissez pas le mode sans échec et n'est pas synchronisé lorsque vous utilisez le mode sans échec
Sources:
/superuser/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player
/programming/20703160/problems-with-setting-constant-bitrate-by-using-avconv
https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr
Remarque: Pour autant que je sache, d'autres formats (conteneurs) ont des contraintes similaires pour faire correspondre la taille de la trame et les taux audio, donc cela peut également fonctionner pour avi si vous essayez de vous joindre via cat ou mencoder après la normalisation de la vidéo et de l'audio .
Facultatif: utilisez Handbrake pour ré-encoder le fichier joint pour une taille plus petite si vous le souhaitez avec un taux de rafraîchissement variable et un paramètre de qualité constante de 25 (paramètres suggérés - ajustez si nécessaire en fonction de vos attentes en matière de matériau et de qualité)