Когда я пытаюсь играть свои 5,1 flac файлов с ffplay, он автоматически обнаруживает поток таким образом:
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)
Как Вы видите, это обнаруживает файлы как наличие расположения канала 5.1 (сторона). Это делает динамики стороны (который должен действительно быть задними динамиками), очень тихий. Если я добавляю усиление к тем каналам, они искажают. Я просто хочу, чтобы они играли правильно, с другими 5,1 расположениями канала в ffplay документации, описанной как FL, FR, C, LFE, RL, RR.
Вот выборка из 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
Обе из вышеупомянутых разметок имеют 6 каналов. Таким образом, как я могу указать, что хочу использовать '5.1' и не '5.1 (сторона)'?
Это для этого расположения, аудио было смешано, и именно это расположение, я настроил с динамиками.
Как я могу достигнуть этого?
Можно использовать фильтр channelmap:
ffmpeg -i input.flac -af "channelmap=channel_layout=5.1" output.flac
Или каналы перекарты после воспроизведения, если Вы не хотите повторно кодировать:
ffplay -af "channelmap=channel_layout=5.1" input.flac
mpv --audio-channels=5.1 input.flac
То, что я сделал, было взятием Ваши 5.1 (сторона) flac файл, и разделение в 6 .wav файлов с ffmpeg (должна быть относительность недавний ffmpeg.
Таким образом для запуска, в пустой папке поместило .flac, затем cd'd к той папке в терминале. Эта команда разделит к .wav's. (использующий voltest.flac как пример
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
После разделения затем повторно закодированного назад к flac, использующему эту команду
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
Таким образом, output.flac будет отображен, как Вы требовали. Вы могли, вероятно, создать сценарий, чтобы сделать много .flacs сразу назад к имени orig. с небольшим экспериментированием..