Как правило, мультимедийные контейнеры ограничены определенными кодеками, которые могут быть встроены. Некоторые больше, чем другие. Например, контейнер Matroska может содержать практически любой кодек видео, аудио или субтитров. С другой стороны, контейнеры, такие как MPEG-4 Part 14 (.mp4), весьма ограничены. Контейнеры, такие как транспортные потоки MPEG-2, очень гибкие, поскольку они позволяют вам определять "частные потоки", в которых могут передаваться нестандартизированные кодеки.
Вы найдете обширный обзор Википедии.
Конечно, в принципе, вы можете встраивать любые произвольные данные, которые маскируются под видео или аудио, в контейнер. Контейнер только для того, чтобы связать полезную нагрузку. Но я не вижу никакого практического использования для этого, так как вы не могли бы декодировать данные без анализатора, который понимает полезную нагрузку.
Вы также можете быть заинтересованы в: Что такое кодек (например, DivX?) И чем он отличается от формата файла (например, MPG)?
Что касается вашего конкретного вопроса, вы обнаружите, что контейнеры Ogg могут нести следующие кодеки:
- Видео: Theora, Dirac, OggUVS, MNG
- Аудио: Vorbis, FLAC, Speex, Opus, OggPCM
И даже более конкретно, ffmpeg не может преобразовывать произвольные данные в контейнер. Он скажет вам, когда определенный кодек не подходит для формата.