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