Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: [РЕШЕНО] Получилось сделать захват с web камеры, а как быть с tv-тюннером?
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Мультимедиа
Revil
Я уже, как две недели начал изучать QT и то из-острой необходимости, в последний раз кодил наверное 6-7 лет назад и мое кунг-фу может быть не таким хорошим :). Собственно сабж. В качестве Бэкенда использую Phonon-backend-vlc, ОС Ubuntu 10.10.
в системе стоит веб-камера (/dev/video0) и тв-тюннер (/dev/video1).
видео с веб камеры получаю вот так вот :

QString url("v4l2://///dev/video0");
void MainWindow::on_pushButton_clicked()
{
    ui->Player_1->play(Phonon::MediaSource(url));
}


при QString url("v4l2://///dev/video1"); получаю помехи. Ну еще бы, ведь в тюнере несколько входов.

Вопрос в том, как получить картинку с входа s-video, и указать стандарты PAL/SECAM ...думаю есть такая возможность. В самом VLC получается получить картинку с любого входа тюнера, а как быть в этом случае?
Обещаю, что если тут кого то задел своим быдлокодерством, то больше не буду. Но в данный момент очень нужна ваша помощь.

думаю нужно, как то параметры вскормить v4l2 драйверу, но как?
Revil
если терминале vlc v4l2:///dev/video1 :v4l2-input=2, vlc захватывает виде с канала s-video, а в программе не могу так как проблема с пробелом..его как то можно экранировать?
kwisp
Revil,
попробуй это
Цитата
QUrl::QUrl ( const QString & url, ParsingMode parsingMode )
This is an overloaded function.

Parses the url using the parser mode parsingMode.


Цитата
enum QUrl::ParsingMode
The parsing mode controls the way QUrl parses strings.

Constant Value Description
QUrl::TolerantMode 0 QUrl will try to correct some common errors in URLs. This mode is useful when processing URLs entered by users.
QUrl::StrictMode 1 Only valid URLs are accepted. This mode is useful for general URL validation.
In TolerantMode, the parser corrects the following invalid input:

Spaces and "%20": If an encoded URL contains a space, this will be replaced with "%20". If a decoded URL contains "%20", this will be replaced with a single space before the URL is parsed.
Single "%" characters: Any occurrences of a percent character "%" not followed by exactly two hexadecimal characters (e.g., "13% coverage.html") will be replaced by "%25".
Reserved and unreserved characters: An encoded URL should only contain a few characters as literals; all other characters should be percent-encoded. In TolerantMode, these characters will be automatically percent-encoded where they are not allowed: space / double-quote / "<" / ">" / "[" / "" / "]" / "^" / "`" / "{" / "|" / "}"

ну либо попробуй заменить пробел на "%20" вручную :)
Revil
kwisp
вечером буду дома, попробую :)

когда
QString url("v4l2://///dev/video1 :v4l2-input=2");

по логам видно, что идет преобразование в "v4l2:///dev/video1%20:v4l2-input=2", что не есть гуд...то есть приемник его считает одним целым. Если писать слитно без пробела то плеер работает, так же как и без параметра :v4l2-input=2. Уже не воспринимает параметр.
Для проверки переменную url вставляю в label
т.е
ui->label->setText(url);

то label показывает все как есть...даже слэши не урезает.
kwisp
Revil,
вишь в чем дело у MediaSource есть конструкторы:
Цитата
MediaSource ( const QString & fileName )
MediaSource ( const QUrl & url )

ты задаешь первый, по-моему. Может явно указать что ты передаешь QUrl ?
Revil
kwisp
вроде я пробовал оба варианта....но все же еще раз попробую когда буду дома. Кто его знает может, что то упустил т. к. не спал до 9 утра :)
Revil
чета не разобрался я ... уже мысли настроить модули для тв-тюннера так чтоб работал только S-video или создать видео устройство к примеру /dev/svideo0 откуда можно будет напрямую схватит видео со входа S-video тюнера. мля...уже гоняю.
kwisp
Revil,
если получится, выложи код и описание действий сюда, интересная штуковина.
Revil
kwisp
к счастью не пришлось прибегнуть к тем выше мною описанным извращениям...все оказалось намного проще, настолько просто, что мне щас стыдно показывать решение :)


QString url("v4l2://///dev/video1:input=2");
void MainWindow::on_pushButton_clicked()
{
ui->Player_1->play(Phonon::MediaSource(url));
}

А я как в терминале для vlc пытался пихнуть параметр в виде :v4l2-input=2 и то через пробел. :)

Теперь можно смело покупать Video Capture card AVer-EZCapture для захвата видео. Думаю чем использовать целый комбайн типа тюнера, лучше юзать плату с двумя видеовходами тем более она том же чипе BT-878 (хотя и устаревшем), что и мой тюнер.

Если можно добавь пожалуйста в названии темы [РЕШЕНО]...возможно тема, чем нибудь поможет новичку. Спасибо
sibmail
Цитата(Revil @ 14.10.2010, 5:06) *
kwisp
к счастью не пришлось прибегнуть к тем выше мною описанным извращениям...все оказалось намного проще, настолько просто, что мне щас стыдно показывать решение :)


QString url("v4l2://///dev/video1:input=2");
void MainWindow::on_pushButton_clicked()
{
ui->Player_1->play(Phonon::MediaSource(url));
}

А я как в терминале для vlc пытался пихнуть параметр в виде :v4l2-input=2 и то через пробел. :)

Теперь можно смело покупать Video Capture card AVer-EZCapture для захвата видео. Думаю чем использовать целый комбайн типа тюнера, лучше юзать плату с двумя видеовходами тем более она том же чипе BT-878 (хотя и устаревшем), что и мой тюнер.

Если можно добавь пожалуйста в названии темы [РЕШЕНО]...возможно тема, чем нибудь поможет новичку. Спасибо


подскажите под windows такое будет работать? и что писать в url?
RazrFalcon
Цитата(sibmail @ 28.3.2011, 17:55) *
подскажите под windows такое будет работать? и что писать в url?

Скорее всего нет.
Revil
Цитата(sibmail @ 28.3.2011, 17:55) *
подскажите под windows такое будет работать? и что писать в url?


на виндовс нет v4l2. Для захвата видео с тюнера в виндовс придется юзать Direct Show ... вроде как то так.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.