O ponto de interrogação é usado no URI como um separador de um caminho para os argumentos de recurso e de consulta. Por RFC 3986 :
foo://example.com:8042/over/there?name=ferret#nose
\_/ \______________/\_________/ \_________/ \__/
| | | | |
scheme authority path query fragment
E na seção 3.3 :
The path is terminated by the first question mark ("?") or number sign ("#") character, or by the end of the URI.
Então, seu primeiro exemplo está correto.
O segundo (sem ?
) está errado, porque combina argumentos de consulta em um caminho para o recurso solicitado.
Como observação: os navegadores (pelo menos as versões atuais do Chrome ou Firefox) serão alterados automaticamente:
http://192.168.2.33:554?user=admin&password=&channel=2&stream=1.sdp
em:
http://192.168.2.33:554/?user=admin&password=&channel=2&stream=1.sdp