オンラインライブブロードキャスト機能をphpで実装する方法

藏色散人
リリース: 2023-03-14 16:04:01
オリジナル
6747 人が閲覧しました

オンライン ライブ ブロードキャスト機能を PHP で実装する方法: 1. コンソールでライブ ブロードキャスト クラウド サービスを見つけ、ライブ ブロードキャスト クラウド スペースを作成します; 2. 必要に応じてドメイン名を解析します; 3. Composer をインストールしますパッケージ; 4. liveStart メソッドで実装する ライブブロードキャストするだけです。

オンラインライブブロードキャスト機能をphpで実装する方法

この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、Dell G3 コンピューター。

オンラインライブブロードキャスト機能をphpで実装するにはどうすればよいですか?

php Qiniu Cloud はライブ ブロードキャスト機能を実装しています:

1: 現在、ライブ ブロードキャスト販売プロジェクトに取り組んでいます。背景はセットアップされ、準備ができています。アリババ、テキサス州、Qiniu を検索したところ、アリババのライブ ブロードキャスト PHP にはコードのみがあり、ドキュメントはありませんでした。テキサス州の友人はコードが汚いと言っていたので、検討しませんでした。 Qiniuにアカウントを登録しましたが、ライブブロードキャストスペースに申請したところ、ドメイン名でブロックされました。カード所有者がスタックしました。すでに登録されているドメイン名をWebサイトの公安に登録する必要がありますまたまた

https://developer.qiniu.com/af/kb/3987/how-to-make-website-and-inquires-the-police-put-on-record-information?ref=support.qiniu.com
ログイン後にコピー

再度調べてみたところ、オンライン公演事業に関わる場合は「インターネット文化事業許可証」の申請が必要とのことです。地方人民政府文化行政部門に相談し、申請をお待ちください。次のステップに進む前に完了する必要があります。

2: ドメイン名の登録の準備がついに完了しました。ライブ ブロードキャスト機能を実装するための 2 番目のステップを開始しましょう。モバイル端末 Niuyun SDK のセブンを参照してください。以下はサーバーサイド プッシュ ストリーミングの例です。今回は、rtmp ストリームを使用してライブ ブロードキャストを実装します。コンソールでライブ ブロードキャスト クラウド サービスを見つけて、ライブ ブロードキャスト クラウド スペースを作成します。 .
オンラインライブブロードキャスト機能をphpで実装する方法
は、ライブ ブロードキャスト スペースの作成後に生成されます。いくつかの第 2 レベル ドメイン名が必要に応じてドメイン名を解析すると、次のようになります。 ## コードを実行すると、ライブ ストリームで作成したライブ ストリームの再生履歴やその他の情報が表示されます
オンラインライブブロードキャスト機能をphpで実装する方法
コンポーザー パッケージをインストールします

php composer.phar require qiniu/php-sdk
ログイン後にコピー
オンラインライブブロードキャスト機能をphpで実装する方法2 つあります。 Vendor/pili-engineering/pili-sdk-php.v2 のケース、1 つはライブ ブロードキャスト、もう 1 つは連続小麦です。今回は最初にライブ ブロードキャストを実装し、次の記事で 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[&#39;user&#39;]) && !empty($userInfo[&#39;user&#39;])) {
            $request->offsetSet(&#39;user_id&#39;, $userInfo[&#39;user&#39;][&#39;id&#39;]);
        } else {
            return $this->sendResponse($msg, &#39;error&#39;, &#39;&#39;, 401);
        }
        $data = $request->all();
        $broadcast = app(BroadcastRepositoryEloquent::class)->findWhere([&#39;type&#39; => $data[&#39;type&#39;], &#39;user_id&#39; => $data[&#39;user_id&#39;]])->first();
        if (empty($broadcast)) {
            return $this->sendResponse(trans(&#39;admin.operate_failed&#39;) . &#39;未找到直播间&#39;);
        }
        $broadcast[&#39;name&#39;] = $data[&#39;name&#39;];
        //创建hub
        $mac = new Mac($this->accessKey, $this->secretKey);
        $client = new Client($mac);
        $hub = $client->hub($this->hubName);
        //获取stream
        $streamKey = $broadcast[&#39;show_id&#39;];
        $stream = $hub->stream($streamKey);
        $list = $hub->listStreams($streamKey, 1, "");
        //如果没找到对应的直播流创建新直播流
        if (count($list[&#39;keys&#39;]) == 0) {
            //获取stream
            $hub->create($streamKey);
        }
        if ($data[&#39;type&#39;] == 0) {
            $result = $this->updateShop($broadcast, $streamKey, $msg);
            if ($result == false) {
                return $this->sendResponse(trans(&#39;admin.operate_failed&#39;) . $msg);
            }
        } else {
            $result = $this->updateCurriculum($broadcast, $streamKey, $msg);
            if ($result == false) {
                return $this->sendResponse(trans(&#39;admin.operate_failed&#39;) . $msg);
            }
        }
        return $this->sendResponse(trans(&#39;admin.operate_succeeded&#39;), &#39;succ&#39;, [&#39;p_href&#39; => $broadcast[&#39;p_href&#39;]]);
    }

    //更新商城直播间
    public function updateShop($broadcast, $streamKey, &$msg = &#39;&#39;)
    {
        //获取推流地址
        $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([&#39;name&#39; => $broadcast[&#39;name&#39;], &#39;chatroom_status&#39; => 0, &#39;p_href&#39; => $p_href, &#39;g_href&#39; => $g_href, &#39;pic&#39; => $pic])->save();
        if ($u_broadcast == false) {
            return $this->sendResponse(trans(&#39;admin.operate_failed&#39;) . &#39;更新直播间出错&#39;);
        }
        return true;
    }
ログイン後にコピー

推奨学習: 「

PHP ビデオ チュートリアル

以上がオンラインライブブロードキャスト機能をphpで実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート