Форум программистов, компьютерный форум, киберфорум
Наши страницы
DirectX
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
1

Directshow два видеофайла в одном окне

27.07.2014, 16:52. Просмотров 921. Ответов 10
Метки нет (Все метки)

взял за основу "...Samples\multimedia\directshow\players\dshowplayer" этот пример, который воспроизводит видео

как бы видео плеер. я пишу свой, который должен выводить два видео файла

т.е. нужно будет указывать первый и второй файлы, и они будут воспроизводиться на своей половине экрана (слева/справа)

как я понял, нужно использовать один и тот же экземпляр IGraphBuilder, но вот рендеры видео должны быть разные?
можете мне привести пример кода, как проинициализировать каждое видео по-отдельности, а то у меня не получается преобразовать код примера под себя

спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2014, 16:52
Ответы с готовыми решениями:

Как в одном окне объединить 3D-графику с привычными WinForms контролами?
Каждому читающему по привету! Я пользуюсь Visual Studio, C#, давно программирую информационные...

Построить в одном окне два графика
Добрый день! Требуется построить два графика в одном окне на языке C# по точкам таблицы в виде...

[ZedGraph] Нарисовать два графика в одном окне
Здравствуйте. Такая проблема - не хочет рисовать два графика в одном окне using System; using...

Как построить два графика в одном окне, чтоб ось x была общей и две оси y справа и слева
Добрый день! Необходимо построить два графика на одном поле с общей осью абцисс и двумя осями...

DirectShow, проиграть видео в своем окне?
IGraphBuilder::RenderFile играет в отдельном окне, реально ли как то проиграть файл в своем уже...

10
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
27.07.2014, 19:16 2
Воспроизводить звук прямо из видео

Создаете две цепочки графов и выводите VideoWindow через метод put_Owner(свой Handle окна) интерфейса IVideoWindow, каждый в свое окно. Эти два окна в одном общем контейнере - окне.
0
igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
28.07.2014, 15:24  [ТС] 3
raxp, получается, IGraphBuilder - один на двоих, IMediaControl, IBasicAudio, IMediaSeeking тоже одни, а BaseVideoRenderer у каждого свой и каждый привязывается к своему окну?
а как потом их совместить в одно окно?
0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
28.07.2014, 22:31 4
...вы мимо ушей пропустили то, о чем ранее говорил вам: строите свой граф для каждого видеопотока. Вот вы не потренировались в графстудии, было бы понятнее. Строите всю цепочку фильтров полностью отдельно. Ферштеен?
0
igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
28.07.2014, 23:02  [ТС] 5
raxp, ферштейн) завтра попробую на работе

Добавлено через 18 секунд
Спасибо!
0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
29.07.2014, 00:11 6
...
1
Вложения
Тип файла: zip raxp_видео на два окна.zip (1.67 Мб, 17 просмотров)
igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
29.07.2014, 15:28  [ТС] 7
raxp, то, что нужно! я наверное, очень наглый юзер, но можно у вас попросить исходники?

Добавлено через 13 часов 34 минуты
raxp, у меня получилось вывести два видео в окно, но вывод очень сильно лагает, иногда подвисает, путаются пикселы, такой вывод картинки, будто антенна у телека плохо настроена

в чем может быть проблема?
все таки попрошу у вас исходники примера выше, очень нужны, пожалуйста

Добавлено через 1 час 40 минут
raxp,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
HRESULT DShowPlayer::Play()
{
    if (m_state != STATE_PAUSED && m_state != STATE_STOPPED)
    {
        return VFW_E_WRONG_STATE;
    }
 
    assert(m_pGraph); // If state is correct, the graph should exist.
    assert(m_pGraph2);
 
    HRESULT hr = m_pControl->Run();
    if (SUCCEEDED(hr))
    {
        m_pControl2->Run();
    }
    if (SUCCEEDED(hr))
    {
        m_state = STATE_RUNNING;
    }
 
    return hr;
}
все проинициализировал, если запускать одновременно, то ужасно лагает, перекрывает друг друга и т.п.
что можете посоветовать?
0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
29.07.2014, 17:53 8
...ваш код не показывает куда вы выводите. Если назначили для вывода хэндл одного и того же окна, то ручки повырывать.
0
igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
30.07.2014, 15:03  [ТС] 9
raxp, я не очень понял, как совместить вывод в одном окне
если я укажу в разных окнах, то они в разных и выведутся.. объясните пожалуйста этот момент
0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
30.07.2014, 21:30 10
...а в предыдущей вашей теме показал вам как в окно контейнер поместить два окна. Вот эти дочерние хэндлы окон и использвать для назначения рендеринга.
0
igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
31.07.2014, 02:46  [ТС] 11
raxp, ааааа, всееее, что-то я очень тугой, спасибо большое
попробую, как буду на работе, отпишусь
0
31.07.2014, 02:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2014, 02:46

Выделить текст в RichTextBox в одном окне, сохранив фокус на другом окне
Добрый день! Пытаюсь реализовать поиск с помощью дополнительного окна (в данной теме сам поиск не...

Передача данных из listBox в одном окне, в textBox в другом окне
Доброго времени суток! Есть два окна, на одном находиться сам textBox, а на другом listBox с...

DirectShow вывод видео в текстуру для отображения его в окне игры
Пытаюсь разобраться в коде для воспроизведения видео в текстуру с собственным Allocator-Presenter...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru