Итак, передо мной встал вопрос - чем кодировать. Т.к. с форматом вещания мы уже разобрались, то выбор стандарта видеокодека осуществлялся теперь автоматически - выбор пал на видеокодек H.264. Естественно, изобретать велосипед мы не стали, а взяли готовый, проверенный временем и отлично работающий open source видеокодек x264. Я успешно прикрутил его к своей системе, и он также успешно стал работать и кодировать видео. Но дальше меня ждал один неприятный момент.
Как я уже указывал (методика разработки), моей целью было - написать программу с полным отсутствием каких бы то ни было утечек памяти. Так вот, с x264 видеокодеком у меня это не получалось. Анализатор постоянно показывал утечку, хотя я всё делал согласно документации к x264 - вызывал соответствующие функции очистки памяти и пр. Причем это была плавающая утечка - при каждом запуске программы она была разной. Возможно, непосредственно при самой работе кодека память и не текла, а утечка возникала лишь при завершении - не знаю. Тут необходимо было детально разбираться в исходных кодах x264, а делать это мне совсем не хотелось. Итого - наличие утечек памяти стало первой причиной, по которой я поставил под сомнение использование x264 в своём проекте.
Второй причиной стал банальный интерес - мне было интересно понять, как работает видеокодирование, с чем его едят, какие технологии при этом используются и как всё это работает. В итоге я принял решение о разработке собственного видеокодека стандарта H.264. Данному вопросу я посвятил заметку Разработка видеокодека H.264. Именно этот, разработанный собственными силами видеокодек, сейчас используется при вещании на сайте.
Игорь, Октябрь 2012.
|
Нет комментариев