Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: v4l программирование c++  (Прочитано 3250 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн todeus

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
v4l программирование c++
« : 05 Сентября 2008, 05:29:26 »
Подскажите пожалуйста где можно прочитать про работу с картами видеозахвата в linux на c++
допустим хочу написать программу чтобы в отдельном окне была картинка с камеры подключенной к тюнеру...

Можт есть какие библиотеки с набоор функций, что то типа получить видеопоток с /dev/video0 , обработать его, сохранить...

P.S.: Знаю что mplayer такое умеет =) Там ключевое слово "допустим". Хочу попробовать написать программу для работы с картами видеозахвата...

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: v4l программирование c++
« Ответ #1 : 05 Сентября 2008, 12:25:26 »
ffmpeg тоже умеет.
точнее, ейные библиотеки libavformat, libavdevice, libavcodec, libavutil и libswscale
Не интересовался, может быть, есть libmplayer (о, кстати, надо бы ::) ).
Точно знаю, есть libvlc.

Уточните, что Вам хочется, разбора отдельных байтов, битов и регистров (типа разработки драйвера) или же работы с готовыми картинками.

libav* предоставляют достаточно высокоуровневый интерфейс - они выдают пользователю за один вызов функции уже готовые закодированные видео кадры или аудио-фреймы и позволяют декодировать их.
Или же, если у юзера есть раскодированный кадр или аудиосемплы, позволяют их закодировать и записать в файл.
При этом детали обработки аудио-видеопотока остаются внутри библиотек и пользователю не показываются.

openCV тоже, кажется, работает с v4l

« Последнее редактирование: 05 Сентября 2008, 12:27:59 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: v4l программирование c++
« Ответ #2 : 05 Сентября 2008, 12:33:34 »
На gstreamer можно поглядеть.
Под линухом он очень неплох и бесплатен, под винду хуже.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн nitx

  • Участник
  • *
  • Сообщений: 243
    • Просмотр профиля
Re: v4l программирование c++
« Ответ #3 : 05 Сентября 2008, 13:40:48 »
Наверно есть какая нибудь документация (может только на англ) для v4l. Гугл смотрел?

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: v4l программирование c++
« Ответ #4 : 05 Сентября 2008, 14:05:20 »
Есть, разумеется.
http://linuxtv.org/v4lwiki/index.php/Main_Page
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: v4l программирование c++
« Ответ #5 : 05 Сентября 2008, 14:54:44 »
захват с видеокамер libdv

Оффлайн todeus

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Re: v4l программирование c++
« Ответ #6 : 08 Сентября 2008, 01:39:45 »
Уточните, что Вам хочется, разбора отдельных байтов, битов и регистров (типа разработки драйвера) или же работы с готовыми картинками.

Не... Разработка драйверов для меня это круто слишком )

Почитал в гугле про libdv вроде как то что мне нужно...

Вот примерно что я хочу:
Написать программу на c++, которая будет выглядеть как окошко, в которое будет выводится картинка с тв-тюнера... Ну как вариант, что можно самое простое придумать.
Тоесть я так понимаю надо подключить к моей программке библиотеку libdv и юзать ее функции(типа получить картинку с /dev/video0, вывести ее на экран, сделать чтонибудь еще), я же так понимаю библиотека - это набор таких функций.
Так вот где можно почитать какие функции есть в этой библиотеке, и что каждая из них делает? )

P.S.: На первый вопрос темы уже ответили )
Можт есть какие библиотеки с набоор функций, что то типа получить видеопоток с /dev/video0 , обработать его, сохранить...
Я так понимаю это и есть libdv...

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: v4l программирование c++
« Ответ #7 : 08 Сентября 2008, 10:42:02 »
Вот примерно что я хочу:
Написать программу на c++, которая будет выглядеть как окошко, в которое будет выводится картинка с тв-тюнера... Ну как вариант, что можно самое простое придумать.

Переформулируем: написать программу, которая будет рисовать на экране окно, захватывать видепоток с /dev/video0, декодировать кадры и выводить их в это окно.
Рисовать чем будем?
Средствами Х, средствами SDL, средствами OpenGL, еще чем-то?

Тоесть я так понимаю надо подключить к моей программке библиотеку libdv и юзать ее функции(типа получить картинку с /dev/video0, вывести ее на экран, сделать чтонибудь еще), я же так понимаю библиотека - это набор таких функций.
Так вот где можно почитать какие функции есть в этой библиотеке, и что каждая из них делает? )

libdv - это кодек для формата DV, c контейнером (если таковой будет) придется разбираться самостоятельно.


Что такое кодеки и контейнеры

Он (она) будет полезен только в том случае, если в видеопотоке будут данные, записанные в этом формате.
И понадобится, скорей всего, одна функция - декодировать кадр, т.е. превратить указанный буфер в картинку, которую можно нарисовать на экране.

Рекомендую openCV и конкретно ее часть под названием highgui - там есть и рисование окон и захват видео.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

Страница сгенерирована за 0.069 секунд. Запросов: 25.