Изменение в реальном времени источника ip в конвейер gstreamer - PullRequest
1 голос
/ 12 августа 2011

У меня есть два IP-адреса, связанные с двумя камерами.Я могу транслировать один IP-адрес.Мне нужно переключиться с одной камеры на другую, поэтому мой источник в конвейере должен измениться с одного IP-адреса на другой.Есть ли способ сделать это с помощью плагина gstreamer?Или из командной строки?Есть ли приложение, которое может это сделать?Должен ли я создать собственное приложение?

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Вот функция, которую я перечисляю, если вы используете gstreamer-java. Возможно, вам придется изменить это в соответствии с вашими требованиями. В вашем случае вам нужны src_bin_new, src_bin_old вместо dest_bin_new, dest_bin_old. Следующая функция изменится, но это даст вам представление.

private static void dynamic_bin_replacement(Pipeline pipe, Element src_bin, Element dst_bin_new, Element dst_bin_old) {
    pipe.pause();
    src_bin.unlink(dst_bin_old);                     
    pipe.remove(dst_bin_old);
    pipe.add(dst_bin_new);
    dst_bin_new.syncStateWithParent();
    src_bin.link(dst_bin_new);
    pipe.ready();                    
    pipe.play();
}

Также посмотрите следующий пост http://gstreamer -devel.966125.n4.nabble.com / Добавление нового-tee-src-d-to-a-running-pipeline-td2304488.html (см. последнее сообщение на этой странице)

1 голос
/ 16 августа 2011

Вам следует создать собственное приложение.

Непонятно, что вы делаете с потоком, исходящим из любой камеры; давайте пока предположим, что вы просто отображаете это.

Создание корзины с исходным элементом для камеры и элементом декодирования для декодирования.

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

Затем настройте весь конвейер на игру.

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

...