29 дек. 2008 г.

ALSA и FFmpeg

На днях задался целью дописать поддержку захвата звука к одному свободному приложению (если быть точным, то это Motion).

С инструментарием определился быстро:
Для захвата звука - ALSA, так как моя звуковая карта работает именно с ней.
Для сжатия и сохранения в файл - FFmpeg (его библиотеки avcodec и avformat), так как именно ими пользуется Motion для сохранения видео.

С ALSA все более-менее понятно, есть немного внятная документация и автоматически сгенерированное описание API там же. Также я смотрел исходники программы aplay и arecord (которые на самом деле - одна и та же программа).
А вот с FFmpeg всё оказалось сложнее - никакой внятной документации для него нет, даже на английском языке. Есть автоматически сгенерированное описание API и несколько примеров:
  1. В самом проекте - показано, как использовать avcodec на примере кодирования/декодирования аудио и видео отдельно друг от друга. При этом работа с медиафайлами реализована напрямую без использования avformat.
  2. Пример от Martin Böhme рассказывает о том, как с помощью avformat и avcodec открыть и декодировать видеофайл. Он не касается звука, а также кодирования аудио/видео информации.
  3. Пример от dranger являет собой урок по созданию с нуля простенького видеоплеера, который для чтения и декодирования файлов использует avformat и avcodec, а для воспроизведения видео и звука, а также для взаимодействия с клавиатурой использует библиотеку SDL. Здесь тоже не затрагиваются вопросы кодирования.
Поскольку я до этого никогда не программировал с использованием ALSA и FFmpeg, то, прежде чем что-то внедрять в Motion, я решил написать простенькую програмку для захвата звука со звуковой карты и сжатия его в формат ogg.

Вот что у меня получилось: http://ls-it.googlecode.com/svn/trunk/alsa-capture/
Для сборки просто введите make. После запуска программа попытается записать несколько секунд звука с ALSA-устройства default в файл output.ogg, который будет создан в папке с программой.

Я постарался снабдить исходный код большим количеством комментариев на русском языке, чтобы было легче разобраться в нём. Ваши комментарии, доработки и предложения всячески приветсвуются. :)

24 дек. 2008 г.

Открытие

Всем, как говорится, доброго здравия!
В последнее время накопилось много всего, чем хочется или просто необходимо поделиться с миром.

Поэтому я решился на создание блога, да не просто блога - а серии блогов.

В блоге "L-S: IT" я планирую размещать свои мнения и предложения относительно различных проявлений такой области как Информационные Технологии. :)