25 Oct 2023
В OBS при записи видео с экрана можно записать в две раздельные аудиодорожки звук с комьютера и звук с микрофона.
Это очень удобно, впоследствии можно менять громкость звука, убирать шум и делать прочую обработку, не влияя на звуки с другой дорожки.
Но OBS такое поддерживает только для формата видео mkv - потому что только в mkv можно иметь несоколько аудидорожек. Кстати, оказывается, этот формат разработан в России и имеет красивое название “матрёшка” - потому что это по-сути контейнер для хранения видео и аудио в каких-то своих форматах внутри “матрёшки”.
Но некоторый софт (например, от adobe) mkv читать не может. С помощью программы ffmpeg можно извлечь и видео и аудио без перекодирования.
Команда сразу для всего:
ffmpeg -i "$1.mkv" -codec copy "$1.mp4"
ffmpeg -i "$1.mkv" -map 0:a:0 -codec copy "$1_game.m4a"
ffmpeg -i "$1.mkv" -map 0:a:1 -codec copy "$1_voice.m4a"
В mp4 останется только одна аудиодорожка из двух. Для удобства обработки я явно сохраняю обе аудиодорожки в виде файлов (а то вдруг сохраню ту же самую, котороя будет в mp4, а другую потеряю).
“перекладывание” данных из файла в файл работает очень быстро и упирается в скорость чтения диска. Например, на nvme у меня конвертация была раза в три быстрее, чем на SSD через sata 3. (примерно в 260 раз быстрее, чем просмотр видео)