Всего несколько причин использования суррогатных ключей:
Устойчивость : Изменение ключа из-за бизнес-или естественной потребности будет негативно связанные с влиянием таблицы. Суррогатные ключи редко, если когда-нибудь, должны быть изменены, потому что нет никакого значения, связанного со значением.
Соглашение : Позволяет Вам иметь стандартизированное соглашение о присвоении имен столбца Primary Key вместо того, чтобы иметь необходимость думать о как к объединяющим таблицам с различными названиями их PKs.
Скорость : В зависимости от значения PK и типа, суррогатный ключ целого числа может быть меньшим, быстрее чтобы индексировать и искать.
Я смог заставить его работать, используя решение libVLC. Я не могу гарантировать, что это лучшее решение, хотя, поскольку я просто прекратил поиски после этого.
Насколько я понимаю, Phonon работает по крайней мере в Windows, так это то, что QT предоставляет подключаемый модуль phonon backend для DirectShow (\ plugins \ phonon_backend \ phonon_ds94.dll) и GStreamer в вашем случае. Затем вы должны либо получить, либо написать свой собственный фильтр DirectShow, который может принимать потоки RTP в качестве источника. DirectShow позаботится о декодировании, а Phonon позаботится о рендеринге.
Итак, если бэкэнд работает, код приложения будет таким же простым, как:
Phonon::MediaObject *media = new Phonon::MediaObject();
Phonon::VideoWidget *video = new Phonon::VideoWidget();
Phonon::createPath(media, video);
media->setCurrentSource(source);
media->play();
Похоже, проблема заключается в том, что бэкэнд GStreamer принимает RTP в качестве источника . Можете ли вы без проблем воспроизвести этот источник в автономном GStreamer?