ffmpeg "filtergraph join", чтобы использовать копию каналов и сохранить конфигурацию входного канала (формат - s32_le) - PullRequest
1 голос
/ 27 апреля 2020

Команда, которую я использую, приведена ниже, с этой командой я получаю 8-канальный выходной файл. Wav.

ffmpeg.exe    -i one.wav -i two.wav -i three.wav -i four.wav \
-i five.wav -i six.wav -i seven.wav -i eight.wav \
-filter_complex '[0:0][1:0][2:0][3:0][4:0][5:0][6:0] \
[7:0]join=8:channel_layout=octagonal'  output.wav

Все входные файлы one.wav, two.wav, так что на восьмом.wav, 32 кГц, s32le и один канал. но, сгенерированный вывод является output.wav, который является s16le, 32 кГц.

Я могу сделать вывод s32le с помощью команды ниже,

ffmpeg.exe -i one.wav -i two.wav -i three.wav -i four.wav \
-i five.wav -i six.wav -i seven.wav -i eight.wav \
-filter_complex '[0:0][1:0][2:0][3:0][4:0][5:0][6:0] \
[7:0]join=8:channel_layout=octagonal'  -acodec pcm_s32le output.wav

Но, похоже, вышеприведенная команда выполняет преобразование из s16_le в s32_le (то есть one.wav не совпадает с первым каналом output.wav полностью). Однако я хочу напрямую скопировать данные из входных каналов, так как аудиоформат всех входных файлов такой же, как и ожидаемый аудиоформат каналов выходного файла (output.wav)

есть способ проинструктировать обработку задачи filter_graph в pcm_s32le ?

Вот ссылка на журнал с уровнем логирования, установленным на отладку, https://pastebin.com/ms4x1fLz

MediaInfo.exe one.wav
General
Complete name                            : one.wav
Format                                   : Wave
File size                                : 6.50 MiB
Duration                                 : 53 s 280 ms
Overall bit rate mode                    : Constant
Overall bit rate                         : 1 024 kb/s

Audio
Format                                   : PCM
Format settings                          : Little / Signed
Codec ID                                 : 1
Duration                                 : 53 s 280 ms
Bit rate mode                            : Constant
Bit rate                                 : 1 024 kb/s
Channel(s)                               : 1 channel
Sampling rate                            : 32.0 kHz
Bit depth                                : 32 bits
Stream size                              : 6.50 MiB (100%)

1 Ответ

0 голосов
/ 28 апреля 2020

Полагаю, вы пришли к неверному выводу, используя Audacity для сравнения. Не должно быть никакого преобразования s16 с вашей командой, использующей -acodec pcm_s32le. Вы можете проверить, добавив -loglevel debug к вашей команде и обратившись к строкам auto_resampler в журнале.

Вход и выход должны совпадать. Использование ha sh muxer для проверки:

ffmpeg -loglevel error -i one.wav -c:a copy -f hash -
SHA256=e56af84aea634ba4686348a90b657e1536610bf977b3604a9eb5b2901ccdeea3

ffmpeg -loglevel error -i output.wav -af "channelsplit=channel_layout=octagonal:channels=FL" -c:a pcm_s32le -f hash -
SHA256=e56af84aea634ba4686348a90b657e1536610bf977b3604a9eb5b2901ccdeea3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...