• 30-06-2015, 14:10:42
    #1
    rtsp üzerinden ip adresi ile vlc webplugin kullanarak görüntü alıyorum. Örneğin rtsp://192.168.100.1 ip adresini embed kodunda target alanına eklediğimde bu kameradan görüntü geliyor buraya kadar problem yok. Fakat ben IP adresini gizleyip bunu view/kamera_id şeklinde yapmaya çalıştım. Yazdığım uygulamayı laravel ile yazıyorum fakat bu sorunun laravel le bir ilgisi yok o yüzden kullandığım kodu şu şekilde göstereyim:

    public function live($id, Response $response){
    		$device = $this->device->find($id);
    		$stream = "rtsp://".$device->ip;
    		return response($stream)->header('Content-Type', 'application/sdp');
    	}
    $stream değişkenini return ettiğimde ip bilgisi geliyor burada bir problem yok. Header bilgisi için content-type'ın application/sdp olması gerektiğini internetten buldum. view/1 linkine girdiğim zaman karşıma player geliyor fakat görüntü alamıyorum. Sizce sorun neyden kaynaklanıyor olabilir? Aynı URL bilgisini VLC Player da girdiğim zaman da görüntü alamadığımı belirteyim.
  • 30-06-2015, 14:44:01
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @loc; "Controller" üzerinden dönen veri "string" olduğu gözüküyor. Normal olarak bunun "mime" türü "text/html" oluyor. Sen bunu "application/sdp" yapıyorsun. Burada yapman gereken şey aslında şu şekildedir. Oluşturduğun akış bağlantısından akışı "controller" üzerine aktarmak ve oradan da "view" üzerine aktarmak olacaktır.

    pseudo kod;
    public function live($id, Response $response)
    {
    	$device = $this->device->find($id);
    
    	$streamUri = sprintf('rtsp://%s', $device->ip);
    
    	/**
    	 * $streamUri elde edikten sonra;
    	 * tam olarak bu kısımda URI üzerindeki veriyi alıp
    	 * paralel olarak viewe aktarman gerekiyor.
    	 **/
    
    	return response($akisdanDonenVeri)->header('Content-Type', 'application/sdp');
    }
  • 30-06-2015, 14:54:07
    #3
    saintx adlı üyeden alıntı: mesajı görüntüle
    @loc; "Controller" üzerinden dönen veri "string" olduğu gözüküyor. Normal olarak bunun "mime" türü "text/html" oluyor. Sen bunu "application/sdp" yapıyorsun. Burada yapman gereken şey aslında şu şekildedir. Oluşturduğun akış bağlantısından akışı "controller" üzerine aktarmak ve oradan da "view" üzerine aktarmak olacaktır.

    pseudo kod;
    public function live($id, Response $response)
    {
    	$device = $this->device->find($id);
    
    	$streamUri = sprintf('rtsp://%s', $device->ip);
    
    	/**
    	 * $streamUri elde edikten sonra;
    	 * tam olarak bu kısımda URI üzerindeki veriyi alıp
    	 * paralel olarak viewe aktarman gerekiyor.
    	 **/
    
    	return response($akisdanDonenVeri)->header('Content-Type', 'application/sdp');
    }
    Şimdi şöyle bir sıkıntı keşfettim. Oturum kontrolü için kullandığım auth middleware'ı iptal edip localhost/devices/live/1 yazdığımda 1 nolu cihazın ip adresi üzerinden vlc player ile yayın aldım. Yani sorun vlc player'ın benim sistemimde login olamamasıymış. İşin ilginç yanı da ben bunu zaten web plugin olarak kullanıp login olduktan sonra sayfaya gömüyorum. Yani izlemeye çalıştığım sayfada oturum aktif durumda. Sence neden böyle birşey yapıyor olabilir?
  • 30-06-2015, 16:45:52
    #4
    @loc; VLC için ekstra bir bağlantı oluşturabilirsin. Bu bağlantı "access_token" içerir. Gönderilen "access_token" ile o kullanıcıyı tanıyıp yayını gösterebilirsin. Bunun ayrı bir "middleware" oluşturman gerekebilir. Laravel 4.1'de ise "filters.php" üzerinden bu doğrulamayı yapabilirsin.