В настоящее время я пишу простой видеокодер Theora, который использует libogg, libvorbis и libtheora.В настоящее время я могу отправить кадры в кодировщик Theora и образцы PCM в кодировщик Vorbis, передать полученные пакеты в потоки Ogg (один для Theora и один для Vorbis) и получить страницы.
Когда программа запускаетсяон сбрасывает заголовки сначала из кодировщика Theora, затем из кодировщика Vorbis в выходной файл (очевидно, оба потока имеют уникальные серийные номера).Затем я записываю чередующиеся страницы в файл из обоих потоков.
При записи только видео или только аудио я могу нормально воспроизводить вывод в mplayer, однако при попыткенаписать оба, я получаю следующее:
Ошибка Ogg демультиплексора: мы встретили неизвестный поток
Я предполагаю, что я неправильно выполняю мультиплексирование.Я прочитал документацию по мультиплексированию потоков на Xiph.org, и я не вижу, где я различаюсь.Я не могу найти какой-либо пример кода для этого, если не брать в расчет исходный кодировщик с открытым исходным кодом (что мне трудно понять).Кто-нибудь сможет объяснить, как правильно мультиплексировать потоки, используя libogg?Я пытаюсь сделать это в C на Ubuntu 10.04, используя библиотеки из репозитория Ubuntu.
Заранее большое спасибо!
Tom