УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

Реализация Phonon бекенда для Media виджета


Автор Сообщение
Сообщение создано: 06. 03. 2012 [00:44]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"roman" wrote:

Замена так и не реализована. Просто выполняется подмена в лайоуте, что неэффективно в отношении потребления памяти.
Реализация проигрывания видео с помощью Phonon не внесена в существующий тип "Movie".

Реализовал как нужно!

Learn, learn and learn better than work, work and work.
Сообщение создано: 11. 03. 2012 [15:29]
aleax
Alexey Bondarchuk
Создатель темы
Зарегистрирован(а) с: 27.01.2010
Сообщения: 73
"roman" wrote:

Реализовал как нужно!


Наблюдается падение, при использовании Full Video:
1. Запустить проект с медиа-виджетом.
2. Остановить проект.
3. Снова запустить проект.
Либо при редактировании:
1. Открыть виджет в редакторе (Ctrl+E).
2. Закрыть.
3. Снова открыть.

UPD. добавил crash от сборки с отладочными сиволами

[Сообщение редактировалось 1 раз(а), в последний раз 11.03.2012 в 15:46.]
Вложенный файл

crash_2012-03-11_15:23.txt (Тип файла: text/plain, Размер: 32.05 килобайт) — 631 загрузок
crash_2012-03-11_15:44.txt (Тип файла: text/plain, Размер: 42.48 килобайт) — 653 загрузок
Сообщение создано: 11. 03. 2012 [16:05]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"aleax" wrote:

Наблюдается падение, при использовании Full Video:

Это не проблема OpenSCADA ибо валится VLC бекенд при установке обычного нулевого смещения, т.е. начало проигрывания. Даже если поток не seekable падать бекенд не должен. Что проигрываете, если не seekable поток то добавлю проверку на seekable?

С XINE бекендом у меня нет никаких падений!

Learn, learn and learn better than work, work and work.
Сообщение создано: 11. 03. 2012 [17:20]
aleax
Alexey Bondarchuk
Создатель темы
Зарегистрирован(а) с: 27.01.2010
Сообщения: 73
"roman" wrote:

Это не проблема OpenSCADA ибо валится VLC бекенд при установке обычного нулевого смещения, т.е. начало проигрывания. Даже если поток не seekable падать бекенд не должен. Что проигрываете, если не seekable поток то добавлю проверку на seekable?

С XINE бекендом у меня нет никаких падений!


Действительно, с xine не падает.
Проирываю plant.avi из тестового проекта, что в первом сообщении.
Бекенды phonon по-видиому тот еще глюкодром: с gstreamer, например, не работает loop потока.
А VLC устойчиво валится, даже если не выставлять флаг проигрования.

Попробую собрать еще VLC бекенд посвежее, а то в сквизи версия 0.2, а в тестинге уже 0.5.
Сообщение создано: 13. 03. 2012 [11:37]
aleax
Alexey Bondarchuk
Создатель темы
Зарегистрирован(а) с: 27.01.2010
Сообщения: 73
"aleax" wrote:

Действительно, с xine не падает.
Проирываю plant.avi из тестового проекта, что в первом сообщении.
Бекенды phonon по-видиому тот еще глюкодром: с gstreamer, например, не работает loop потока.
А VLC устойчиво валится, даже если не выставлять флаг проигрования.

Попробую собрать еще VLC бекенд посвежее, а то в сквизи версия 0.2, а в тестинге уже 0.5.


С бекпортом phonon-backend-vlc ничего сходу не вышло, потому решил попробовать аналогично с phonon-backend-gstreamer.
В итоге в связке phonon-4.6.0 и phonon-backend-gstreamer-4.6.0 получилось достаточно безглючно проигрывать как локальные файлы, так и потоковое видео. (вещал с помощью VLC. как будут реальные камеры, отпишусь отдельно, если возникнут какие-то специфические нюансы).

Также предлагаю изменить условие для определения видеопотока:
JAVASCRIPT
Index: src/moduls/ui/Vision/vis_shapes.cpp
===================================================================
--- src/moduls/ui/Vision/vis_shapes.cpp	(revision 1759)
+++ src/moduls/ui/Vision/vis_shapes.cpp	(working copy)
@@ -1249,8 +1249,8 @@
 		if(shD->mediaSrc.compare(0,5,"file:") == 0)
 		    mSrc = MediaSource(QString(shD->mediaSrc.substr(5).c_str()));
 		//> Try play Stream by URL
-		else if(shD->mediaSrc.compare(0,5,"http:") == 0 || shD->mediaSrc.compare(0,4,"ftp:") == 0)
-		    mSrc = MediaSource(QUrl(shD->mediaSrc.c_str()));
+		else if(shD->mediaSrc.compare(0,7,"stream:") == 0)
+		    mSrc = MediaSource(QUrl(shD->mediaSrc.substr(7).c_str()));
 		//> Try remote VCAEngine resource at last
 		if(shD->mediaSrc.size() && (mSrc.type() == MediaSource::Invalid || mSrc.type() == MediaSource::Empty))
 		{

так, как форматов потоков множество (сейчас конкретно тестировал rtsp://) и удобнее было бы указать в качестве источника "stream:rtsp://127.0.0.1:5540/ch1" и дальше пусть бекенд phonon’а отображает, если конечно сможет ;-)
Сообщение создано: 13. 03. 2012 [13:12]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"aleax" wrote:

так, как форматов потоков множество (сейчас конкретно тестировал rtsp://) и удобнее было бы указать в качестве источника "stream:rtsp://127.0.0.1:5540/ch1" и дальше пусть бекенд phonon’а отображает, если конечно сможет ;-)

Принято!

Learn, learn and learn better than work, work and work.
Сообщение создано: 22. 03. 2012 [08:50]
yozhik
Алексей Николаев
Зарегистрирован(а) с: 29.11.2010
Сообщения: 127
--disable-Phonon не работает
Сообщение создано: 22. 03. 2012 [09:02]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"yozhik" wrote:

--disable-Phonon не работает

И не должно. Он включается/выключается автоматом по наличию библиотек и хедеров.

Learn, learn and learn better than work, work and work.
Сообщение создано: 23. 03. 2012 [12:40]
gsxr
Андрей Ехлаков
Зарегистрирован(а) с: 03.03.2010
Сообщения: 58
При сборке:

vis_shapes.cpp:963: ошибка: ‘Phonon’ is not a namespace-name
vis_shapes.cpp:963: ошибка: expected namespace-name before ‘;’ token
vis_shapes.cpp: In member function ‘void VISION::ShapeMedia::clear(VISION::WdgView*)’:
vis_shapes.cpp:1003: ошибка: нет декларации ‘VideoPlayer’ в этой области видимости
vis_shapes.cpp:1003: ошибка: нет декларации ‘player’ в этой области видимости
vis_shapes.cpp:1003: ошибка: expected type-specifier before ‘VideoPlayer’
vis_shapes.cpp:1003: ошибка: expected ‘>’ before ‘VideoPlayer’
vis_shapes.cpp:1003: ошибка: expected ‘(’ before ‘VideoPlayer’
vis_shapes.cpp:1003: ошибка: expected primary-expression before ‘>’ token
vis_shapes.cpp:1003: ошибка: expected ‘)’ before ‘;’ token
vis_shapes.cpp: In member function ‘virtual bool VISION::ShapeMedia::attrSet(VISION::WdgView*, int, const std::string&)’:
vis_shapes.cpp:1015: ошибка: нет декларации ‘VideoPlayer’ в этой области видимости
vis_shapes.cpp:1015: ошибка: нет декларации ‘player’ в этой области видимости
vis_shapes.cpp:1114: ошибка: expected type-specifier before ‘VideoPlayer’
vis_shapes.cpp:1114: ошибка: expected ‘>’ before ‘VideoPlayer’
vis_shapes.cpp:1114: ошибка: expected ‘(’ before ‘VideoPlayer’
vis_shapes.cpp:1114: ошибка: expected primary-expression before ‘>’ token
vis_shapes.cpp:1115: ошибка: expected ‘)’ before ‘{’ token
vis_shapes.cpp:1127: ошибка: expected type-specifier before ‘VideoPlayer’
vis_shapes.cpp:1127: ошибка: expected ‘>’ before ‘VideoPlayer’
vis_shapes.cpp:1127: ошибка: expected ‘(’ before ‘VideoPlayer’
vis_shapes.cpp:1127: ошибка: expected primary-expression before ‘>’ token
vis_shapes.cpp:1128: ошибка: expected ‘)’ before ‘{’ token



Как собрать?
Сообщение создано: 23. 03. 2012 [12:46]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"gsxr" wrote:

Как собрать?

Не знаю. У меня собирается.

Learn, learn and learn better than work, work and work.



4672