Maison  >  Article  >  développement back-end  >  Comment implémenter la fonction de diffusion en direct en ligne en php

Comment implémenter la fonction de diffusion en direct en ligne en php

藏色散人
藏色散人original
2021-12-27 11:12:286728parcourir

Comment implémenter la fonction de diffusion en direct en PHP : 1. Recherchez le service cloud de diffusion en direct dans la console et créez un espace cloud de diffusion en direct ; 2. Analysez le nom de domaine si nécessaire 3. Installez le package composer ; Diffusion en direct via la méthode liveStart.

Comment implémenter la fonction de diffusion en direct en ligne en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur Dell G3.

Comment implémenter la fonction de diffusion en direct en ligne en php ?

php Qiniu Cloud réalise la fonction de diffusion en direct :

1 : Récemment, je travaille sur un projet de vente de diffusion en direct L'arrière-plan est configuré et prêt à être connecté à la diffusion en direct. J'ai recherché plusieurs Alibaba, TX. et Qiniu, et j'ai découvert que le PHP de diffusion en direct d'Alibaba n'avait que du code et aucune documentation. Mon ami de Texas a dit que le code était compliqué et ne serait pas pris en compte. Lorsque j'ai postulé pour l'espace de diffusion en direct, le nom de domaine a été bloqué par le propriétaire. Le nom de domaine qui a été enregistré doit être enregistré auprès de la sécurité publique du site Web. Une fois

https://developer.qiniu.com/af/kb/3987/how-to-make-website-and-inquires-the-police-put-on-record-information?ref=support.qiniu.com

effectué une nouvelle recherche et constaté que les personnes impliquées dans le secteur des performances en ligne doivent demander une « licence commerciale de culture Internet ». ". Veuillez consulter le service de l'administration culturelle du gouvernement populaire local et attendre que la demande soit complétée avant de passer à l'étape suivante.

Deuxième : L'enregistrement du nom de domaine est enfin terminé. Commençons la deuxième étape pour implémenter la fonction de diffusion en direct. Pour le terminal mobile, vous pouvez vous référer au SDK Qiniu Cloud. côté push cas.Cette fois, rtmp est utilisé. Pour implémenter la diffusion en direct, recherchez le service cloud de diffusion en direct dans la console et créez un espace cloud de diffusion en direct, plusieurs noms de domaine de deuxième niveau seront générés. les noms de domaine selon vos besoins, puis cela ressemblera à ce qui suit
Comment implémenter la fonction de diffusion en direct en ligne en php
Code en cours d'exécution Après vous être levé, vous verrez l'historique de lecture et d'autres informations du flux en direct que vous avez créé dans le flux en direct
Comment implémenter la fonction de diffusion en direct en ligne en php
Installez le compositeur. package

php composer.phar require qiniu/php-sdk
Comment implémenter la fonction de diffusion en direct en ligne en php Ensuite, vous pouvez trouver deux cas dans supplier/pili-engineering/pili-sdk-php.v2, l'un c'est une diffusion en direct, et l'autre est pour Lianmai Cette fois, la diffusion en direct sera implémentée en premier, et le prochain article sera mis à jour avec Lianmai
<?php namespace App\Modules\Api\Http\Controllers;

use App\Modules\Live\Models\Broadcast;
use App\Modules\Live\Repositories\BroadcastRepositoryEloquent;
use Illuminate\Http\Request;
use Qiniu\Pili\Client;
use Qiniu\Pili\Mac;
use function Qiniu\Pili\RTMPPlayURL;
use function Qiniu\Pili\RTMPPublishURL;
use function Qiniu\Pili\SnapshotPlayURL;

class LiveController extends ApiBaseController
{
    private $auth;
    private $accessKey;
    private $secretKey;
    private $hubName;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->accessKey = config("qiniu.accessKey");
        $this->secretKey = config("qiniu.secretKey");
        $this->hubName = config("qiniu.bucket");
        parent::__construct();
    }
    /**
     *开启直播
     */
    public function liveStart(Request $request)
    {
        $userInfo = parent::getAuthenticatedUser($msg);
        if (isset($userInfo['user']) && !empty($userInfo['user'])) {
            $request->offsetSet('user_id', $userInfo['user']['id']);
        } else {
            return $this->sendResponse($msg, 'error', '', 401);
        }
        $data = $request->all();
        $broadcast = app(BroadcastRepositoryEloquent::class)->findWhere(['type' => $data['type'], 'user_id' => $data['user_id']])->first();
        if (empty($broadcast)) {
            return $this->sendResponse(trans('admin.operate_failed') . '未找到直播间');
        }
        $broadcast['name'] = $data['name'];
        //创建hub
        $mac = new Mac($this->accessKey, $this->secretKey);
        $client = new Client($mac);
        $hub = $client->hub($this->hubName);
        //获取stream
        $streamKey = $broadcast['show_id'];
        $stream = $hub->stream($streamKey);
        $list = $hub->listStreams($streamKey, 1, "");
        //如果没找到对应的直播流创建新直播流
        if (count($list['keys']) == 0) {
            //获取stream
            $hub->create($streamKey);
        }
        if ($data['type'] == 0) {
            $result = $this->updateShop($broadcast, $streamKey, $msg);
            if ($result == false) {
                return $this->sendResponse(trans('admin.operate_failed') . $msg);
            }
        } else {
            $result = $this->updateCurriculum($broadcast, $streamKey, $msg);
            if ($result == false) {
                return $this->sendResponse(trans('admin.operate_failed') . $msg);
            }
        }
        return $this->sendResponse(trans('admin.operate_succeeded'), 'succ', ['p_href' => $broadcast['p_href']]);
    }

    //更新商城直播间
    public function updateShop($broadcast, $streamKey, &$msg = '')
    {
        //获取推流地址
        $p_href = RTMPPublishURL("pili-publish.chengdulihong.com", $this->hubName, $streamKey, 3600, $this->accessKey, $this->secretKey);
        //获取播放地址
        $g_href = RTMPPlayURL("pili-publish.chengdulihong.com", $this->hubName, $streamKey);
        //截图直播地址
        $pic = SnapshotPlayURL("pili-publish.chengdulihong.com", $this->hubName, $streamKey);
        //更新直播间状态
        $u_broadcast = $broadcast->fill(['name' => $broadcast['name'], 'chatroom_status' => 0, 'p_href' => $p_href, 'g_href' => $g_href, 'pic' => $pic])->save();
        if ($u_broadcast == false) {
            return $this->sendResponse(trans('admin.operate_failed') . '更新直播间出错');
        }
        return true;
    }

Apprentissage recommandé : "

Tutoriel vidéo PHP

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn