У меня есть 12-канальный отдельный аудиопоток QuickTime, который я пытаюсь разделить на отдельные 12 аудиопотоков в одном выходном файле. Из MediaInfo моя исходная аудио конфигурация выглядит следующим образом:
ID : 2
Format : PCM
Format settings, Endianness : Little
Format settings, Sign : Signed
Codec ID : lpcm
Duration : 1mn 40s
Bit rate mode : Constant
Bit rate : 12.8 Mbps
Channel(s) : 12 channels
Я сделал это успешно с 6 каналами, но не уверен, как это сделать с 12 каналами. Команде из 6 каналов нравится следующее:
ffmpeg -i "C:\FFMPEG\bin\SomeTestFile.mov" -filter_complex "channelsplit=channel_layout=5.1[0:2][0:3][0:4][0:5][0:6]" -map "[0:2]" -acodec pcm_s16le -ar 44.1k -ac 1 -map "[0:3]" -acodec pcm_s16le -ar 44.1k -ac 1 -map "[0:4]" -acodec pcm_s16le -ar 44.1k -ac 1 -map "[0:5]" -acodec pcm_s16le -ar 44.1k -ac 1 -map "[0:6]" -acodec pcm_s16le -ar 44.1k -ac 1 -threads 1 "Output.mov"
Но из списка параметров макета в ffmpeg это не представляется возможным, так как оно идет только до 8.1. Я попытался изменить "channel_layout = 11.1" и добавить дополнительные параметры отображения, но я получаю:
[Parsed_channelsplit_0 @ 0000000000338820] Error parsing channel layout '12.0'.
[AVFilterGraph @ 0000000000352420] Error initializing filter 'channelsplit' with args 'channel_layout=11.1'
Error configuring filters.
Я нашел команду в сообщении на форуме с этим:
ffmpeg -i "C:\FFMPEG\bin\SomeTestFile.mov" -acodec copy -filter_complex channelsplit -f mov "Output.mov"
но получите:
[auto-inserted resampler 0 @ 0000000002bf3d00] [SWR @ 0000000002bc82c0] Rematrix is needed between 12 channels and stereo but there is not enough
information to do it
[auto-inserted resampler 0 @ 0000000002bf3d00] Failed to configure output pad on auto-inserted resampler 0
Я попробовал следующую команду:
ffmpeg -i "C:\FFMPEG\bin\input.mov" -map 0:2 -acodec pcm_s16le -ar 44.1k -ac 1 -map 0:3 -acodec pcm_s16le -ar 44.1k -ac 1 -map 0:4 -acodec pcm_s16le -ar 44.1k -ac 1 -map 0:5 -acodec pcm_s16le -ar 44.1k -ac 1 -map 0:6 -acodec pcm_s16le -ar 44.1k -ac 1 -map 0:7 -acodec pcm_s16le -ar 44.1k -ac 1 -map 0:8 -acodec pcm_s16le -ar 44.1k -ac 1 -map 0:9 -acodec pcm_s16le -ar 44.1k -ac 1 -map 0:10 -acodec pcm_s16le -ar 44.1k -ac 1 -map 0:11 -acodec pcm_s16le -ar 44.1k -ac 1 -threads 1 output.mov
но получаю следующую ошибку вывода ..
ffmpeg version N-66639-g6b347f5 Copyright (c) 2000-2014 the FFmpeg developers
built on Oct 5 2014 22:10:17 with gcc 4.9.1 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 54. 9.100 / 54. 9.100
libavcodec 56. 2.101 / 56. 2.101
libavformat 56. 7.104 / 56. 7.104
libavdevice 56. 1.100 / 56. 1.100
libavfilter 5. 1.102 / 5. 1.102
libswscale 3. 1.100 / 3. 1.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 1.100 / 53. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\FFMPEG\bin\input.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2015-08-20 21:58:39
Duration: 00:01:40.18, start: 0.000000, bitrate: 149980 kb/s
Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le, 1920x1080, 136073 kb/s, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 24k tbn, 24k tbc (default)
Metadata:
creation_time : 2015-08-20 21:58:39
handler_name : Apple Alias Data Handler
encoder : Apple ProRes 422 (HQ)
timecode : 00:00:00:00
Stream #0:1(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 12 channels, s32 (24 bit), 13824 kb/s (default)
Metadata:
creation_time : 2015-08-20 21:58:39
handler_name : Apple Alias Data Handler
timecode : 00:00:00:00
Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
Metadata:
creation_time : 2015-08-20 21:58:39
handler_name : Apple Alias Data Handler
timecode : 00:00:00:00
Stream map '0:3' matches no streams.
Обновить: После недолгой борьбы с этой проблемой и выяснения, что мне удалось разделить каналы, я заметил, что некоторые наборы программного обеспечения для видео и плееры распознают только один из каналов вместо всех 12 при воспроизведении по умолчанию. У меня был параметр «-map 0: a» после графика фильтра, и как только я удалил его, он заработал. Я обнаружил, правильная команда выглядит следующим образом:
C:\FFMPEG\bin\ffmpeg -i "C:\Test\TESTCLIP.mov" -filter_complex "[0:a]pan=mono|c0=c0[a0];[0:a]pan=mono|c0=c1[a1];[0:a]pan=mono|c0=c2[a2];[0:a]pan=mono|c0=c3[a3];[0:a]pan=mono|c0=c4[a4];[0:a]pan=mono|c0=c5[a5];[0:a]pan=mono|c0=c6[a6];[0:a]pan=mono|c0=c7[a7];[0:a]pan=mono|c0=c8[a8];[0:a]pan=mono|c0=c9[a9];[0:a]pan=mono|c0=c10[a10];[0:a]pan=mono|c0=c11[a11]" -map 0 -map "[a0]" -map "[a1]" -map "[a2]" -map "[a3]" -map "[a4]" -map "[a5]" -map "[a6]" -map "[a7]" -map "[a8]" -map "[a9]" -map "[a10]" -map "[a11]" -c copy -c:a pcm_s24le "C:\TEST\OUTPUT.mov"
Консольный вывод:
ffmpeg version N-66639-g6b347f5 Copyright (c) 2000-2014 the FFmpeg developers
built on Oct 5 2014 22:10:17 with gcc 4.9.1 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 54. 9.100 / 54. 9.100
libavcodec 56. 2.101 / 56. 2.101
libavformat 56. 7.104 / 56. 7.104
libavdevice 56. 1.100 / 56. 1.100
libavfilter 5. 1.102 / 5. 1.102
libswscale 3. 1.100 / 3. 1.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 1.100 / 53. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Test\TESTCLIP.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2015-08-25 22:11:49
Duration: 00:01:40.18, start: 0.000000, bitrate: 148100 kb/s
Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le, 1920x1080, 134192 kb/s, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 24k tbn, 24k tbc (default)
Metadata:
creation_time : 2015-08-25 22:11:49
handler_name : Apple Alias Data Handler
encoder : Apple ProRes 422 (HQ)
timecode : 00:00:00:00
Stream #0:1(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 12 channels, s32 (24 bit), 13824 kb/s (default)
Metadata:
creation_time : 2015-08-25 22:11:49
handler_name : Apple Alias Data Handler
timecode : 00:00:00:00
Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
Metadata:
creation_time : 2015-08-25 22:11:49
handler_name : Apple Alias Data Handler
timecode : 00:00:00:00
[Parsed_pan_0 @ 0000000005d32500] Pure channel mapping detected: 0
[Parsed_pan_1 @ 00000000003956c0] Pure channel mapping detected: 1
[Parsed_pan_2 @ 00000000003958a0] Pure channel mapping detected: 2
[Parsed_pan_3 @ 0000000000395a80] Pure channel mapping detected: 3
[Parsed_pan_4 @ 00000000003adf00] Pure channel mapping detected: 4
[Parsed_pan_5 @ 0000000000395d00] Pure channel mapping detected: 5
[Parsed_pan_6 @ 00000000003bfcc0] Pure channel mapping detected: 6
[Parsed_pan_7 @ 00000000003bfee0] Pure channel mapping detected: 7
[Parsed_pan_8 @ 00000000003bfd80] Pure channel mapping detected: 8
[Parsed_pan_9 @ 00000000051b2840] Pure channel mapping detected: 9
[Parsed_pan_10 @ 0000000000332680] Pure channel mapping detected: 10
[Parsed_pan_11 @ 0000000000332740] Pure channel mapping detected: 11
[mov @ 00000000051ca260] You requested a copy of the original timecode track so timecode metadata are now ignored
Output #0, mov, to 'C:\TEST\OUTPUTFILE.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
encoder : Lavf56.7.104
Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 134192 kb/s, 23.98 fps, 24k tbn, 24k tbc (default)
Metadata:
creation_time : 2015-08-25 22:11:49
handler_name : Apple Alias Data Handler
encoder : Apple ProRes 422 (HQ)
timecode : 00:00:00:00
Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 12 channels, s32 (24 bit), 13824 kb/s (default)
Metadata:
creation_time : 2015-08-25 22:11:49
handler_name : Apple Alias Data Handler
timecode : 00:00:00:00
encoder : Lavc56.2.101 pcm_s24le
Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
Metadata:
creation_time : 2015-08-25 22:11:49
handler_name : Apple Alias Data Handler
timecode : 00:00:00:00
Stream #0:3: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream #0:4: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream #0:5: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream #0:6: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream #0:7: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream #0:8: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream #0:9: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream #0:10: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream #0:11: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream #0:12: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream #0:13: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream #0:14: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
Metadata:
encoder : Lavc56.2.101 pcm_s24le
Stream mapping:
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:1 (pcm_s24le) -> pan (graph 0)
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (pcm_s24le (native) -> pcm_s24le (native))
Stream #0:2 -> #0:2 (copy)
pan (graph 0) -> Stream #0:3 (pcm_s24le)
pan (graph 0) -> Stream #0:4 (pcm_s24le)
pan (graph 0) -> Stream #0:5 (pcm_s24le)
pan (graph 0) -> Stream #0:6 (pcm_s24le)
pan (graph 0) -> Stream #0:7 (pcm_s24le)
pan (graph 0) -> Stream #0:8 (pcm_s24le)
pan (graph 0) -> Stream #0:9 (pcm_s24le)
pan (graph 0) -> Stream #0:10 (pcm_s24le)
pan (graph 0) -> Stream #0:11 (pcm_s24le)
pan (graph 0) -> Stream #0:12 (pcm_s24le)
pan (graph 0) -> Stream #0:13 (pcm_s24le)
pan (graph 0) -> Stream #0:14 (pcm_s24le)
Press [q] to stop, [?] for help
frame= 118 fps=0.0 q=-1.0 size= 854kB time=00:00:04.87 bitrate=1433.4kbits/s
frame= 314 fps=313 q=-1.0 size= 70872kB time=00:00:13.05 bitrate=44472.7kbits/s
frame= 412 fps=272 q=-1.0 size= 123393kB time=00:00:17.14 bitrate=58967.9kbits/s
frame= 516 fps=256 q=-1.0 size= 172269kB time=00:00:21.47 bitrate=65700.3kbits/s
frame= 617 fps=245 q=-1.0 size= 277313kB time=00:00:25.69 bitrate=88421.2kbits/s
frame= 715 fps=237 q=-1.0 size= 376683kB time=00:00:29.77 bitrate=103620.3kbits/s
frame= 859 fps=244 q=-1.0 size= 528409kB time=00:00:35.78 bitrate=120962.3kbits/s
frame= 957 fps=238 q=-1.0 size= 633018kB time=00:00:39.87 bitrate=130054.3kbits/s
Как вы можете видеть в Adobe Premiere. Я могу правильно воссоздать сопоставления. Слева - мой отрезок ffmpeg с 12 отдельными моноканалами, использующий фильтр панорамирования, а справа - 12-канальный сингл с одним потоком. Оба совпадают! Отдельное спасибо LordNeckBeard!
-filter_complex
фильтровать / отображать потоки. Что произойдет, если вы попробуете это:ffmpeg -i infile.mov -map 0:1 1.wav -map 0:2 2.wav [etc...]
? Обратите внимание, что я также не использую двойные кавычки или скобки для определения потоков. Проверьте страница справки для большего объяснения и примеров.ffmpeg
Команда, чтобы убедиться, что это будет работать.Ответы:
Что пошло не так
Вы пытаетесь отобразить потоки ввода, которые не существуют. Вот ваши входные потоки:
Ты говоришь
ffmpeg
на карту0:0
-0:11
, но только0:0
,0:1
, а также0:2
существовать.Пример решения
Вы можете использовать фильтр панорамирования превратить один многоканальный поток в несколько потоков одного канала.
Другой метод будет использовать
-map
а также-map_channel
, но синтаксис более запутанный.картографирование
В этом случае вы не можете положиться на значение по умолчанию выбор потока поведение, так что вы должны сказать
ffmpeg
какие потоки вы хотите с-map
вариант , Различные-map
варианты в примере могут показаться запутанными на первый взгляд:-map 0
- Включают все входные потоки с первого (и единственного) входа на выход.-map -0:a
- Отрицательное отображение для пропуска всех входных аудиопотоков на выход. Это применяется после-map 0
, Исходный аудиопоток исключен, поскольку вместо него будут использоваться аудиовыходы из фильтров.-map 0 -map -0:a
и использовать-map 0:v -map 0:d
вместо этого, чтобы отобразить видео и потоки данных, но что если ваш ввод также содержит субтитры? Тогда вам нужно будет добавить-map 0:s
, Вы можете видеть, как использование «включить все, кроме аудио» является более гибким, эффективным и ленивым.-map "[a0]" ... -map "[a11]"
- Включите аудиопотоки, которые выводятся из фильтров панорамирования.Таким образом, после всех этих карт ваш вход будет содержать: видео поток, данные
tmcd
поток и 12 аудиопотоков.Ваш
ffmpeg
СтарыйРазработка очень активная. Скачать последнюю сборку ,
источник
-map_channel
?Я наконец получил это. По какой-то причине, когда я использую решение «filter_complex», предоставленное богом FFMPEG LordNeckBeard, оно правильно разделяет каналы, но проигрыватели и программное обеспечение для видео распознают только первую аудиодорожку. Это решение работает правильно. Каналы разделены, и звук распознается!
Надеюсь, что это поможет некоторым из вас в некоторых из ваших проблем!
источник