Cara melaksanakan fungsi siaran langsung dalam talian dalam PHP: 1. Cari perkhidmatan awan siaran langsung dalam konsol dan cipta ruang awan siaran langsung 2. Parsing nama domain seperti yang diperlukan 3. Pasang komposer pakej; 4. Laksanakannya melalui kaedah liveStart Hanya siaran langsung.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer Dell G3.
Bagaimana untuk melaksanakan fungsi siaran langsung dalam talian dalam PHP?
php Qiniu Cloud melaksanakan fungsi siaran langsung:
1: Saya sedang mengusahakan projek penjualan siaran langsung Latar belakang disediakan dan sedia untuk disambungkan ke siaran langsung saya mencari Alibaba, TX dan Qiniu, dan mendapati bahawa siaran langsung Alibaba PHP hanya mempunyai kod dan tiada dokumentasi. Saya telah mendaftar akaun dengan Qiniu, tetapi apabila saya memohon ruang siaran langsung, saya telah disekat oleh nama domain Pemiliknya tersekat Nama domain yang telah didaftarkan perlu didaftarkan dengan keselamatan awam laman web itu semula
https://developer.qiniu.com/af/kb/3987/how-to-make-website-and-inquires-the-police-put-on-record-information?ref=support.qiniu.com
Saya mencari sekali lagi dan mendapati jika ia melibatkan perniagaan prestasi dalam talian, anda perlu memohon "Lesen Perniagaan Budaya Internet", sila rujuk kerajaan tempatan Jabatan pentadbiran kebudayaan akan menunggu permohonan selesai sebelum meneruskan ke langkah seterusnya.
Dua: Pendaftaran nama domain akhirnya siap Mari kita mulakan langkah kedua untuk melaksanakan fungsi siaran langsung Anda boleh merujuk kepada Seven pada terminal mudah alih Niuyun SDK, berikut adalah kes penstriman tolak sisi pelayan Kali ini, strim rtmp digunakan untuk melaksanakan siaran langsung perkhidmatan awan dalam konsol dan mencipta awan siaran langsung ruang
Selepas ruang siaran langsung dicipta, ia akan dihasilkan Beberapa nama domain peringkat kedua, menghuraikan nama domain mengikut keperluan, dan kemudian ia akan kelihatan seperti berikut
Selepas kod dijalankan, anda akan melihat sejarah main balik dan maklumat lain strim langsung yang anda buat dalam strim langsung
Pasang pakej komposer
php composer.phar require qiniu/php-sdk
Anda boleh menemui dua kes dalam vendor/pili-engineering/pili-sdk-php.v2, satu adalah siaran langsung dan satu lagi adalah gandum berterusan Ya, kali ini siaran langsung akan dilaksanakan terlebih dahulu, dan artikel seterusnya akan dikemas kini dengan 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; }
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi siaran langsung dalam talian dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!