2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-04 05:16:45 +00:00

49_SSCam: changed audiolink handling to new execution variant in camOp

git-svn-id: https://svn.fhem.de/fhem/trunk@22760 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2020-09-12 08:16:39 +00:00
parent 582fc2904b
commit acd870f610

View File

@ -164,6 +164,7 @@ BEGIN {
# Versions History intern # Versions History intern
my %vNotesIntern = ( my %vNotesIntern = (
"9.7.15" => "12.09.2020 changed audiolink handling to new execution variant in camOp ",
"9.7.14" => "10.09.2020 bugfix in reactivation HLS streaming ", "9.7.14" => "10.09.2020 bugfix in reactivation HLS streaming ",
"9.7.13" => "10.09.2020 optimize liveview handling ", "9.7.13" => "10.09.2020 optimize liveview handling ",
"9.7.12" => "09.09.2020 implement new getApiSites usage, httptimeout default value increased to 20s, fix setting motdetsc ", "9.7.12" => "09.09.2020 implement new getApiSites usage, httptimeout default value increased to 20s, fix setting motdetsc ",
@ -3736,6 +3737,18 @@ sub __runLiveview {
$hash->{HELPER}{CALL}{PART} = qq{api=_NAME_&version=_VER_&method=Open&cameraId=_CID_&format=hls&_sid=_SID_}; $hash->{HELPER}{CALL}{PART} = qq{api=_NAME_&version=_VER_&method=Open&cameraId=_CID_&format=hls&_sid=_SID_};
} }
if ($hash->{HELPER}{RUNVIEW} !~ m/snap|^live_.*hls$/x) {
if ($hash->{HELPER}{RUNVIEW} =~ m/live/x) {
if($hash->{HELPER}{API}{AUDIOSTM}{VER}) { # Audio aktivieren
$hash->{HELPER}{ACALL}{AKEY} = "AUDIOSTM";
$hash->{HELPER}{ACALL}{APART} = qq{api=_ANAME_&version=_AVER_&method=Stream&cameraId=_CID_&_sid=_SID_};
} else {
delete $hash->{HELPER}{AUDIOLINK};
}
}
}
setActiveToken($hash); setActiveToken($hash);
checkSid ($hash); checkSid ($hash);
@ -5901,39 +5914,44 @@ sub camOp {
my $httptimeout = AttrVal($name, "httptimeout", $todef); my $httptimeout = AttrVal($name, "httptimeout", $todef);
if($hash->{HELPER}{CALL}) { # neue camOp Ausführungsvariante if($hash->{HELPER}{CALL}) { # neue camOp Ausführungsvariante
my $akey = delete $hash->{HELPER}{CALL}{VKEY}; # API Key my $vkey = delete $hash->{HELPER}{CALL}{VKEY}; # API Key Video Parts
my $head = delete $hash->{HELPER}{CALL}{HEAD}; # vom Standard abweichende Serveradresse / Port my $head = delete $hash->{HELPER}{CALL}{HEAD}; # vom Standard abweichende Serveradresse / Port
my $part = delete $hash->{HELPER}{CALL}{PART}; # URL-Teilstring ohne Startsequenz (Server, Port, ...) my $part = delete $hash->{HELPER}{CALL}{PART}; # URL-Teilstring ohne Startsequenz (Server, Port, ...)
my $to = delete $hash->{HELPER}{CALL}{TO} // 0; # evtl. zuätzlicher Timeout Add-On my $to = delete $hash->{HELPER}{CALL}{TO} // 0; # evtl. zuätzlicher Timeout Add-On
delete $hash->{HELPER}{CALL}; delete $hash->{HELPER}{CALL};
$httptimeout += $to; $httptimeout += $to;
$part =~ s/_NAME_/$hash->{HELPER}{API}{$akey}{NAME}/x; $part =~ s/_NAME_/$hash->{HELPER}{API}{$vkey}{NAME}/x;
$part =~ s/_VER_/$hash->{HELPER}{API}{$akey}{VER}/x; $part =~ s/_VER_/$hash->{HELPER}{API}{$vkey}{VER}/x;
$part =~ s/_CID_/$hash->{CAMID}/x; $part =~ s/_CID_/$hash->{CAMID}/x;
$part =~ s/_SID_/$hash->{HELPER}{SID}/x; $part =~ s/_SID_/$hash->{HELPER}{SID}/x;
if($head) { if($head) {
$url = $head.qq{/webapi/$hash->{HELPER}{API}{$akey}{PATH}?}.$part; $url = $head.qq{/webapi/$hash->{HELPER}{API}{$vkey}{PATH}?}.$part;
} else { } else {
$url = qq{$proto://$serveraddr:$serverport/webapi/$hash->{HELPER}{API}{$akey}{PATH}?}.$part; $url = qq{$proto://$serveraddr:$serverport/webapi/$hash->{HELPER}{API}{$vkey}{PATH}?}.$part;
} }
} }
if($hash->{HELPER}{ACALL}) { # neue camOp Audio Ausführungsvariante
my $akey = delete $hash->{HELPER}{CALL}{AKEY}; # API Key Audio Parts
my $apart = delete $hash->{HELPER}{CALL}{APART}; # URL-Teilstring Audio
$apart =~ s/_ANAME_/$hash->{HELPER}{API}{$akey}{NAME}/x;
$apart =~ s/_AVER_/$hash->{HELPER}{API}{$akey}{VER}/x;
$apart =~ s/_CID_/$hash->{CAMID}/x;
$apart =~ s/_SID_/$hash->{HELPER}{SID}/x;
$hash->{HELPER}{AUDIOLINK} = qq{$proto://$serveraddr:$serverport/webapi/$hash->{HELPER}{API}{$akey}{PATH}?}.$apart;
}
if ($OpMode eq "runliveview" && $hash->{HELPER}{RUNVIEW} !~ m/snap|^live_.*hls$/x) { if ($OpMode eq "runliveview" && $hash->{HELPER}{RUNVIEW} !~ m/snap|^live_.*hls$/x) {
$exturl = AttrVal($name, "livestreamprefix", "$proto://$serveraddr:$serverport"); $exturl = AttrVal($name, "livestreamprefix", "$proto://$serveraddr:$serverport");
$exturl = ($exturl eq "DEF") ? "$proto://$serveraddr:$serverport" : $exturl; $exturl = ($exturl eq "DEF") ? "$proto://$serveraddr:$serverport" : $exturl;
if ($hash->{HELPER}{RUNVIEW} =~ m/live/x) { if ($hash->{HELPER}{RUNVIEW} =~ m/live/x) {
if($apiaudiostmver) { # API "SYNO.SurveillanceStation.AudioStream" vorhanden ? (removed ab API v2.8)
$hash->{HELPER}{AUDIOLINK} = "$proto://$serveraddr:$serverport/webapi/$apiaudiostmpath?api=$apiaudiostm&version=$apiaudiostmver&method=Stream&cameraId=$camid&_sid=$sid";
} else {
delete $hash->{HELPER}{AUDIOLINK} if($hash->{HELPER}{AUDIOLINK});
}
if($apivideostmsver) { # API "SYNO.SurveillanceStation.VideoStream" vorhanden ? (removed ab API v2.8) if($apivideostmsver) { # API "SYNO.SurveillanceStation.VideoStream" vorhanden ? (removed ab API v2.8)
$exturl .= "/webapi/$apivideostmspath?api=$apivideostms&version=$apivideostmsver&method=Stream&cameraId=$camid&format=mjpeg&_sid=$sid"; # externe URL $exturl .= "/webapi/$apivideostmspath?api=$apivideostms&version=$apivideostmsver&method=Stream&cameraId=$camid&format=mjpeg&_sid=$sid"; # externe URL
$url = "$proto://$serveraddr:$serverport/webapi/$apivideostmspath?api=$apivideostms&version=$apivideostmsver&method=Stream&cameraId=$camid&format=mjpeg&_sid=$sid"; # interne URL $url = "$proto://$serveraddr:$serverport/webapi/$apivideostmspath?api=$apivideostms&version=$apivideostmsver&method=Stream&cameraId=$camid&format=mjpeg&_sid=$sid"; # interne URL
@ -8218,6 +8236,7 @@ sub _streamDevMJPEG { ## no critic 'complexity not
} else { } else {
if($apivideostmsver) { if($apivideostmsver) {
$link = "$proto://$serveraddr:$serverport/webapi/$apivideostmspath?api=$apivideostms&version=$apivideostmsver&method=Stream&cameraId=$camid&format=mjpeg&_sid=$sid"; $link = "$proto://$serveraddr:$serverport/webapi/$apivideostmspath?api=$apivideostms&version=$apivideostmsver&method=Stream&cameraId=$camid&format=mjpeg&_sid=$sid";
} elsif ($hash->{HELPER}{STMKEYMJPEGHTTP}) { } elsif ($hash->{HELPER}{STMKEYMJPEGHTTP}) {
$link = $hash->{HELPER}{STMKEYMJPEGHTTP}; $link = $hash->{HELPER}{STMKEYMJPEGHTTP};
} }