Здравствуйте, задался тут целью написать мьюксер, объединяющий видео и аудио потоки в контейнер. Решил выбрать AVI как наиболее простой и перспективный для моих задач вариант. Спецификацию контейнера AVI прочитал, реальные авишки в HEX редакторе поковырял... Но всё равно не понимаю, что делать дальше.
Есть ряд вопросов.
1) Что со структурой потока? Я так понимаю, в чанке должно в идеале быть целое число кадров? Как парсить кадры из сырого H264 потока?
2) Аналогично - мне неизвестна структура AAC потока (кодировщик - Nero Encoder). Если можете описать вкратце и на русском, буду признателен (сайт про AAC на английском читать пробовал, там не очень понятно).
3) Как делать корректную синхронизацию (по какому принципу разбивать звуковую дорожку)?
4) Может ли кадр быть распределён по нескольким чанкам? Я посмотрел размер чанков в AVI, которое формирует ffmpeg, так вот при битрейте 15 мбит/с (такой битрейт я по факту использую) у меня получается, что для записи одного видеокадра примерно 16 чанков понадобится...
Почему не использовать готовые решения? Всё просто - мне нужна возможность добавлять данные в контейнер «на лету», в процессе кодирования... Конечная цель - попытаться сделать кодирование с одновременной загрузкой на YouTube.
Индекс в AVI пишется в конце, так что тут ОК. С размерами будет шляпа - это да, заранее размер списков не просчитать. Но мне кажется, ютьюб это восстановит, это типичная ситуация, когда AVI файл недописан - обычно он всё равно воспроизводится, только перемотка не работает. С Bandicam проверял, и там даже есть утилита, восстанавливающая индекс, как раз для таких случаев :)