Videostreaming auf ein SIP Phone

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Videostreaming auf ein SIP Phone

    Moin zusammen,

    ich eine Frage an euch. Ich habe vor kurzem ein Projekt angefangen. Eine Türsprechstelle(Kamera), die Verbunden ist mit einem Mitel 6873i Telefon. Dazu kann das 6873i IP Phone, Bilder aus einem Video-Stream entnehmen von der Türsprechstelle selber über eine Funktionstaste des Telefons. Als Brücke verwende ich einen Raspberry Pi, der für das lagern des Scriptes zuständig ist. Das Script kommt immer mit einem ERROR zurück. Vielleicht könnt ihr mir ja helfen.

    IP von PI: 192.168.100.106
    Apache2(XML SERVER): 192.168.100.106:81
    RPI 4b -> IP: 192.168.100.106 mit den Ports: HTTP Server (81), Kamera-Webinterface (876) und der Video-Stream roh (877

    IP des Telefons; 192.168.100.103

    IP vom Netserver: 192.168.100.1

    <?php

    ###################################################################################################
    # Image Server for LevelOne IP Cam with Mitel 6869 SIP Phone
    # Copyright Aastra Telecom 2011
    #
    # Script needs PHP5 or higher.
    # GD module must enabled!
    # Windows based systems: Uncomment the line 'extension=php_gd2.dll' in php.ini
    #
    # CONFIGURATION AND USAGE:
    # Setup a XML softkey on 6739i phone.
    # Key type: XML
    # Key label: Doorcam
    # Key value: http://<Webserver name or IP>/levelone/imageServer.php?levelone_addr=LEVELONE_IP_ADDR&image_title=OPTIONAL_IMAGE_TITLE
    #
    ###################################################################################################


    ########################################### Configuration #########################################

    # Page refresh interval on phone in seconds. Don't go below 2 seconds.
    $REFRESH = 2;

    ############################################### Program code #######################################

    $XML_SERVER="http://192.168.100.106:81".$_SERVER['http://192.168.100.106'].$_SERVER['imageServer.php'];

    $imageMode = $_GET['image_mode'];
    $levelone_addr = $_GET['levelone_addr'];
    $image_title = $_GET['image_title'];
    $dtmf_open = $_GET['dtmf_open'];
    $key_press = $_GET['key_press'];

    if (!empty($key_press)) {
    print('<AastraIPPhoneExecute>');

    $digits = str_split($key_press);
    foreach($digits as $digit) {
    if ($digit=='*') {$digit='Star';}
    if ($digit=='#') {$digit='Pound';}
    print('<ExecuteItem URI="Key:KeyPad'.$digit.'"/>');
    }
    print('</AastraIPPhoneExecute>');
    exit;
    }

    if (empty($imageMode)) {
    header("Refresh: ".$REFRESH."; url=".$XML_SERVER.'?levelone_addr='.$levelone_addr.'&image_title='.$image_title.'&dtmf_open='.$dtmf_ open);
    print('<AastraIPPhoneImageScreen Timeout="10" destroyOnExit="yes" allowDTMF="yes">');
    print('<Image width="480" height="192">'.$XML_SERVER.'?image_mode=1&amp;levelone_addr='.$levelone_addr.'&amp;image_title='.$im age_title.'&amp;dtmf_open='.$dtmf_open.'</Image>');
    if (!empty($dtmf_open)) {print('<SoftKey index="8" icon="1"><Label>Open</Label><URI>'.$XML_SERVER.'?key_press='.$dtmf_open.'</URI></SoftKey>');}
    print('<SoftKey index="5"><Label>Exit</Label><URI>SoftKey:Exit</URI></SoftKey>');
    print('</AastraIPPhoneImageScreen>');
    exit;
    }

    # Image source
    $src = "http://192.168.100.106:876/picture/1/current";

    # Connection header must be set to "close", otherwise file_get_contents() will take a long time to finish!
    $context = stream_context_create(array('http' => array('header'=>'Connection: close')));

    # Get still image from LevelOne IP
    $content= file_get_contents($src, false, $context);

    # Create image
    $im = imagecreatefromstring($content);

    # Scale image to 480x192 pixel
    $im = scaleImage($im);
    $color = imagecolorallocate($im, 255, 255, 255);
    $font = "./fonts/DejaVuSans-Bold.ttf";

    if (!empty($image_title)) {
    // measure text width
    $bbox = imagettfbbox(15, 0, $font, $image_title);

    // This is our cordinates for X and Y
    $x = (480 / 2) - ($bbox[4] / 2);
    $y = 240;

    // Write text
    imagettftext($im, 15, 0, $x, $y, $color, $font, $image_title);
    }

    # Write time
    imagefttext($im, 15, 0, 138, 332, $color, $font, date("H:i:s"));

    # send image in the HTTP response
    header ("Content-type: image/png");
    imagepng($im);

    exit;

    ############################################### Subroutines #######################################

    function scaleImage($im) {

    $canvas_width = 410;
    $canvas_height = 210;

    # create emtpy output image. use true color to avoid color palette problems
    $im_output = imagecreatetruecolor($canvas_width, $canvas_height);

    # get size of input image
    $im_width = imagesx($im);
    $im_height = imagesy($im);

    # check if image is smaller than $canvas_width x $canvas_height pixels
    if (($im_width < $canvas_width) && ($im_height < $canvas_height)) {

    # simply copy the image in the center of the output image.
    imagecopy($im_output, $im, (($canvas_width-$im_width)/2) ,(($canvas_height-$im_height)/2), 0, 0, $im_width, $im_height);

    } else {

    # check aspect ratio of source image
    if ($im_width / $im_height <= ($canvas_width / $canvas_height)) {

    # Scale to $canvas_height pixel height and center horizontally
    $new_im_width = $im_width * ($canvas_height / $im_height);
    imagecopyresampled($im_output, $im, (($canvas_width-$new_im_width)/2), 0, 0, 0, $new_im_width, $canvas_height, $im_width, $im_height);

    } else {

    # Scale to $canvas_width pixel width and center vertically
    $new_im_height = $im_height * ($canvas_width / $im_width);
    imagecopyresampled($im_output, $im, 0, (($canvas_height-$new_im_height)/2), 0, 0, $canvas_width, $new_im_height, $im_width, $im_height);
    }
    }
    return $im_output;
    }

    ?>
    Zuletzt geändert von Luis-g-; 14.05.2020, 12:12.
Lädt...
X