web-dev-qa-db-fra.com

ffplay pense que le flux est 5.1 (côté) et non 5.1

Lorsque j'essaie de lire mes fichiers 5.1 flac avec ffplay, il détecte automatiquement le flux de la manière suivante:

  Duration: xx:xx:xx.xx, start: 0.000000, bitrate: xxxx kb/s
    Stream #0:0: Audio: flac, 48000 Hz, 5.1(side), s32 (24 bit)

Comme vous pouvez le constater, il détecte que les fichiers ont la disposition des canaux 5.1 (côté). Cela rend les haut-parleurs latéraux (qui devraient vraiment être des haut-parleurs arrière) très silencieux. Si j'ajoute un gain à ces canaux, ils se déforment. Je veux juste qu'ils jouent correctement, avec l'autre disposition de canaux 5.1 dans la documentation de ffplay, décrite comme FL, FR, C, LFE, RL, RR.

Voici un extrait de la documentation de ffplay:

Standard channel layout compositions can be specified by using the following identifiers:

‘5.1’

    FL+FR+FC+LFE+BL+BR

‘5.1(side)’

    FL+FR+FC+LFE+SL+SR 

Les deux configurations ci-dessus ont 6 canaux. Alors, comment puis-je spécifier que je veux utiliser "5.1" et non "5.1 (côté)"?

C’est pour cette disposition que l’audio a été mixé, et c’est cette disposition que j’ai configurée avec des haut-parleurs.

Comment puis-je atteindre cet objectif?

2
Nectar

Vous pouvez utiliser le filtre channelmap :

ffmpeg -i input.flac -af "channelmap=channel_layout=5.1" output.flac

Ou re-mappez les canaux lors de la lecture si vous souhaitez éviter le réencodage:

ffplay -af "channelmap=channel_layout=5.1" input.flac
mpv --audio-channels=5.1 input.flac
3
llogan

Ce que j’ai fait, c’est de prendre votre fichier flac 5.1 (côté) et de le scinder en 6 fichiers .wav avec ffmpeg (doit être une relativité récente ffmpeg.

Donc pour commencer, dans un dossier vide placé le .flac, puis cd dans ce dossier dans un terminal. Cette commande sera scindée en .wav. (en utilisant voltest.flac comme exemple

ffmpeg -i ./voltest.flac -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]" -map "[FL]" front_left.wav -map "[FR]" front_right.wav -map "[FC]" front_center.wav -map "[LFE]" lfe.wav -map "[SL]" back_left.wav -map "[SR]" back_right.wav

Après la scission, puis recodé sur un flac en utilisant cette commande

ffmpeg -i front_left.wav -i front_right.wav -i front_center.wav -i lfe.wav -i back_left.wav -i back_right.wav -filter_complex "[0:a][1:a][2:a][3:a][4:a][5:a]amerge=inputs=6[aout]" -map "[aout]" output.flac

Donc, output.flac sera mappé comme vous le souhaitez. Vous pourriez probablement créer un script pour faire un certain nombre de .flacs à la fois. nommer avec un peu d'expérimentation ..

3
doug