Идентификация стримов при multiple stream recording

Pmisters

New Member
Добрый день.
Подскажите, пожалуйста, как можно определить какие видео и аудио дорожки в файле, записанном multi-recorder, к каким входным стримам относятся ?
ffprobe (ffmpeg) не показывает подобной информации.
 

Max

Administrator
Staff member
Названия дорожек записываются внутри mp4 контейнера. Далее offline-mixer-tool эти дорожки читает и объединяет.
Мы посмотрим, можно ли информацию о дорожках извлечь распространенным софтом. Если удастся это сделать, отпишем.
Опишите пожалуйста что конкретно вы планируете делать с дорожками? Возможно мы могли бы добавить валидации и информационный вывод в offline-mixer, который умеет эти дорожки читать и разбирать.
 

Pmisters

New Member
Нам нужно при пост обработке позиционировать конкретные стримы в конкретные места миксованного видео. Дополнительно нужна возможность проигрывать как оригинальные аудио потоки, так и миксованный.
 

Max

Administrator
Staff member
Сейчас имя стрима и mediaSessionId записывабтся в атом tnam для конкретной дорожки:
Code:
[ftyp] size=8+24
  ...
[moov] size=8+56602
  [mvhd] size=12+96
    ...
  [trak] size=8+25060
    [tkhd] size=12+80, flags=1
      enabled = 1
      id = 1
      duration = 35453
      width = 0.000000
      height = 0.000000
    [udta] size=8+138
      [tnam] size=8+126
      ...
К сожалению, сторонние инструменты извлекать эти данные не умеют, кроме Bento4 mp4extract, но он умеет это делать только для первой дорожки в файле. Поэтому, чтобы получить эти данные, нужно использовать любую библиотеку для парсинга атома moov.
Завели тикет WCS-3329, чтобы добавлять имена потоков в тэги (например, как creation_time или language). Сообщим здесь о готовности.
Нам нужно при пост обработке позиционировать конкретные стримы в конкретные места миксованного видео.
В этом случае Вы можете использовать Инструмент для микширования записанных потоков, указав собственный вариант размещения картинок в файле /usr/local/FlashphonerWebCallServer/conf/offline_mixer.json
Code:
{
  "hasVideo": "true",
  "hasAudio": "true",
  "mixerDisplayStreamName": true,
  "mixerLayoutClass": "com.flashphoner.mixerlayout.CustomLayout"
}
 

Max

Administrator
Staff member
Извлечь данные о стримах (название и media session id) можно с помощью библиотеки https://formats.kaitai.io/quicktime_mov/index.html
Нужно только чуть поправить, добавив парсинг User Data Atom (udta).
В тикете WCS-3329 мы добавляем функцию вывода информации о дорожках в файле multi-recorder в offline_mixer_tool. Сейчас тикет на предварительном тестировании, сообщим о готовности в этой теме.
 
Top