mercredi 13 juin 2018

Encore plus de magie ffmpeg

Je me suis plongé dans les tréfonds du Web pour comprendre s'il était possible d'enregistrer 2 sources audio dans le même fichier avec ffmpeg. Et la réponse est oui ! Alors, accrochez-vous.

D'une part, il faut enregistrer. Pour cela, il faut ajouter autant de sources que voulu avec des séries de -f pulse -i [votre source]. Pour la source, l'on peut utiliser les index que l'on retrouve avec la commande "pacmd list-sources", ou plus simplement mettre n'importe quel index et bidouiller ensuite dans pavuctrl pour sélectionner l'audio désiré. Voici donc comment j'ai pu capturer à la fois l'audio des applications (chez moi, index 16, correspondant au moniteur de mon casque) et le micro (chez moi, index 19, correspondant au micro).

Ensuite, il faut s'assurer que tous les flux, et pas seulement le premier, se retrouvent dans le fichier de sortie. Pour cela, il faut utiliser la commande "map", pour mapper les flux d'entrée (commodément décrits dans la sortie ffmpeg lorsque vous démarrez l'enregistrement). On laisse le défaut se débrouiller pour l'encodage, et l'on pousse tout ceci dans un conteneur qui sait faire du multi flux (c'est à dire, pas un bête .wav, mais du mkv par exemple).

Au final, cela donne cette commande:

ffmpeg -f pulse -i 16 -f pulse -i 19 -map 0:0 -map 1:0 output.mkv

En creusant un petit peu plus, il sera possible d'également capturer la vidéo, et d'avoir un encodage sans pertes, ce qui permettrait par exemple d'enregistrer un tutorial en étant capable par la suite de travailler le son des applications et du commentaire séparément, ce qui permet d'ajuster les niveaux, ou de faire des coupes. Je posterai la commande complète quand je l'aurai.

Blender VSE n'a pas l'air trop d'accord pour charger les différents canaux, mais Audacity semble en revanche parfaitement heureux, et devrait donc pouvoir être utilisé pour séparer les canaux dans des fichiers différents avant mixage.

Aucun commentaire: