Von vorne beginnen: Eine einfache Möglichkeit, Alibaba Cloud-Liveübertragungen mit PHP zu implementieren!

Fügen Sie hier eine Bildbeschreibung ein

1. Konfigurieren Sie die Push-Adresse und die Wiedergabeadresse von Alibaba Cloud Live

Bevor Sie die Live-Übertragungsfunktion von Alibaba Cloud verwenden können, müssen Sie zunächst eine Live-Übertragungsanwendung in der Alibaba Cloud-Konsole erstellen und dann die Push-Adresse und die Wiedergabeadresse abrufen.

Das allgemeine Format der Push-Adresse ist:

rtmp://{Domain}/{AppName}/{StreamName}?auth_key={AuthKey}-{Timestamp}-{RandomNum}

In,

{Domain}Stellt den Push-Domänennamen von Alibaba Cloud Live Broadcast dar;

{AppName}Stellt den Anwendungsnamen dar, normalerweise „live“, der auch angepasst werden kann;

{StreamName}Stellt den Stream-Namen dar, der angepasst werden kann;

{AuthKey}Stellt den Autorisierungsschlüssel dar;

{Timestamp}Stellt den aktuellen Zeitstempel dar;

{RandomNum}Stellt eine Zufallszahl dar.

Das allgemeine Format der Wiedergabeadresse ist:

http://{Domain}/{AppName}/{StreamName}.m3u8

{Domain}Stellt den Wiedergabedomänennamen von Alibaba Cloud Live Broadcast dar;

{AppName}Stellt den Anwendungsnamen dar, normalerweise „live“, der auch angepasst werden kann;

{StreamName}Stellt den Streamnamen dar und kann angepasst werden.

Konfigurieren Sie die erhaltene Push-Adresse und Wiedergabeadresse im Code. Der Code lautet wie folgt:

class LiveAction extends Action {
    // 推流地址
    private $pushUrl = 'rtmp://{Domain}/{AppName}/{StreamName}?auth_key={AuthKey}-{Timestamp}-{RandomNum}';

    // 播放地址
    private $playUrl = 'http://{Domain}/{AppName}/{StreamName}.m3u8';

    // 阿里云直播的推流域名
    private $pushDomain = 'xxx.xxx.com';

    // 阿里云直播的播放域名
    private $playDomain = 'xxx.xxx.com';

    // 应用名称
    private $appName = 'live';

    // 流名称
    private $streamName = 'test';

    // 授权密钥
    private $authKey = '1234567890';

    // 获取推流地址
    private function getPushUrl() {
        $randomNum = rand(100000, 999999);
        $timestamp = time();
        $authKey = md5($this->authKey . $this->appName . $this->streamName . $timestamp . $randomNum);
        $pushUrl = str_replace(array('{Domain}', '{AppName}', '{StreamName}', '{AuthKey}', '{Timestamp}', '{RandomNum}'), array($this->pushDomain, $this->appName, $this->streamName, $authKey, $timestamp, $randomNum), $this->pushUrl);
        return $pushUrl;
    }

    // 获取播放地址
    private function getPlayUrl() {
        $playUrl = str_replace(array('{Domain}', '{AppName}', '{StreamName}'), array($this->playDomain, $this->appName, $this->streamName), $this->playUrl);
        return $playUrl;
    }
}

definiert eine Reihe von Variablen inLiveAction, einschließlich des Formats der Push-Adresse und der Wiedergabeadresse sowie einiger grundlegender Konfigurationsinformationen. Außerdem werden zwei private Methoden zum Abrufen der Push-Adresse und der Wiedergabeadresse definiert.

IngetPushUrl Methode wird zunächst eine sechsstellige Zufallszahl und der aktuelle Zeitstempel generiert, dann der Autorisierungsschlüssel berechnet und schließlich diese Parameter an den entsprechenden Positionen der Push-Adresse ersetzt. Abschließend wird eine vollständige Push-Adresse zurückgegeben.

IngetPlayUrl Methode, ersetzen Sie einfach die entsprechende Position der Wiedergabeadresse direkt. Gibt schließlich eine vollständige Wiedergabeadresse zurück.

Fügen Sie hier eine Bildbeschreibung ein

2. Integrieren Sie die Streaming-Funktion von Alibaba Cloud Live in ThinkPHP

Im ThinkPHP-Framework können Sie die Fmpeg-Bibliothek verwenden, um die Streaming-Funktion zu implementieren. Fmpeg ist ein sehr leistungsfähiges Audio- und Videoverarbeitungstool. Es kann nicht nur Audio und Video abspielen und transkodieren, sondern auch Audio und Video usw. bearbeiten und bearbeiten.

Bevor Sie Fmpeg verwenden, müssen Sie die Fmpeg-Bibliothek installieren und ihren Pfad zur Umgebungsvariablen konfigurieren.

Code wie folgt anzeigen:

class LiveAction extends Action {
    // 推流地址
    private $pushUrl = 'rtmp://{Domain}/{AppName}/{StreamName}?auth_key={AuthKey}-{Timestamp}-{RandomNum}';

    // 阿里云直播的推流域名
    private $pushDomain = 'xxx.xxx.com';

    // 应用名称
    private $appName = 'live';

    // 流名称
    private $streamName = 'test';

    // 授权密钥
    private $authKey = '1234567890';

    // 获取推流地址
    private function getPushUrl() {
        $randomNum = rand(100000, 999999);
        $timestamp = time();
        $authKey = md5($this->authKey . $this->appName . $this->streamName . $timestamp . $randomNum);
        $pushUrl = str_replace(array('{Domain}', '{AppName}', '{StreamName}', '{AuthKey}', '{Timestamp}', '{RandomNum}'), array($this->pushDomain, $this->appName, $this->streamName, $authKey, $timestamp, $randomNum), $this->pushUrl);
        return $pushUrl;
    }

    // 推流
    public function push() {
        $pushUrl = $this->getPushUrl();
        $command = 'ffmpeg -re -i test.flv -vcodec copy -acodec aac -f flv ' . $pushUrl;
        exec($command);
    }
}

Eine -Methode inLiveAction hinzugefügt, die die Fmpeg-Bibliothek verwendet, um die lokale test.flv-Datei an Alibaba Cloud Live zu übertragen. push
Fügen Sie hier eine Bildbeschreibung ein

3. Integrieren Sie die Wiedergabefunktion von Alibaba Cloud Live in ThinkPHP

Im ThinkPHP-Framework können Sie die Hls.js-Bibliothek verwenden, um die Live-Übertragungswiedergabefunktion zu implementieren. Hls.js ist eine auf HTML5 basierende JavaScript-Bibliothek, die Livestreams im M3U8-Format in ein simuliertes FLV-Format konvertieren und in Echtzeit abspielen kann.

Code wie folgt anzeigen:

class LiveAction extends Action {
    // 播放地址
    private $playUrl = 'http://{Domain}/{AppName}/{StreamName}.m3u8';

    // 阿里云直播的播放域名
    private $playDomain = 'xxx.xxx.com';

    // 应用名称
    private $appName = 'live';

    // 流名称
    private $streamName = 'test';

    // 获取播放地址
    private function getPlayUrl() {
        $playUrl = str_replace(array('{Domain}', '{AppName}', '{StreamName}'), array($this->playDomain, $this->appName, $this->streamName), $this->playUrl);
        return $playUrl;
    }

    // 播放
    public function play() {
        $playUrl = $this->getPlayUrl();
        $this->assign('playUrl', $playUrl);
        $this->display();
    }
}

Eine-Methode inLiveAction hinzugefügt, die die Wiedergabeadresse abruft, sie der Vorlage zuweist und dann die Vorlage übergibt< a i= 3>Die Methode wird auf der Seite angezeigt. playdisplay

Sie können die Hls.js-Bibliothek verwenden, um Live-Streams auf der Seite abzuspielen.

Der vollständige Code lautet wie folgt:

class LiveAction extends Action {
    // 推流地址
    private $pushUrl = 'rtmp://{Domain}/{AppName}/{StreamName}?auth_key={AuthKey}-{Timestamp}-{RandomNum}';


    // 阿里云直播的推流域名
    private $pushDomain = 'xxx.xxx.com';


    // 播放地址
    private $playUrl = 'http://{Domain}/{AppName}/{StreamName}.m3u8';


    // 阿里云直播的播放域名
    private $playDomain = 'xxx.xxx.com';


    // 应用名称
    private $appName = 'live';


    // 流名称
    private $streamName = 'test';


    // 授权密钥
    private $authKey = '1234567890';


    // 获取推流地址
    private function getPushUrl() {
        $randomNum = rand(100000, 999999);
        $timestamp = time();
        $authKey = md5($this->authKey . $this->appName . $this->streamName . $timestamp . $randomNum);
        $pushUrl = str_replace(array('{Domain}', '{AppName}', '{StreamName}', '{AuthKey}', '{Timestamp}', '{RandomNum}'), array($this->pushDomain, $this->appName, $this->streamName, $authKey, $timestamp, $randomNum), $this->pushUrl);
        return $pushUrl;
    }


    // 获取播放地址
    private function getPlayUrl() {
        $playUrl = str_replace(array('{Domain}', '{AppName}', '{StreamName}'), array($this->playDomain, $this->appName, $this->streamName), $this->playUrl);
        return $playUrl;
    }


    // 推流
    public function push() {
        $pushUrl = $this->getPushUrl();
        $command = 'ffmpeg -re -i test.flv -vcodec copy -acodec aac -f flv ' . $pushUrl;
        exec($command);
    }


    // 播放
    public function play() {
        $playUrl = $this->getPlayUrl();
        $this->assign('playUrl', $playUrl);
        $this->display();
    }
}

Projektanhang:​​Klicken Sie hier zum Herunterladen​​

Supongo que te gusta

Origin blog.csdn.net/CRMEB/article/details/134689231
Recomendado
Clasificación