|LiveStream newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|LiveStream newQuery() * @method static \Illuminate\Database\Eloquent\Builder|LiveStream query() * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereDescription($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereDiscoverable($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereLiveAt($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereLiveChat($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereModIds($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereProfileId($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereSettings($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereStreamId($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereStreamKey($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereThumbnailPath($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|LiveStream whereVisibility($value) * * @mixin \Eloquent */ class LiveStream extends Model { use HasFactory; public function getHlsUrl() { $path = Storage::url("live-hls/{$this->stream_id}/index.m3u8"); return url($path); } public function getStreamServer(): string { $proto = 'rtmp://'; $host = config('livestreaming.server.host'); $port = ':'.config('livestreaming.server.port'); $path = '/'.config('livestreaming.server.path'); return $proto.$host.$port.$path; } public function getStreamKeyUrl(): string { $path = $this->getStreamServer().'?'; $query = http_build_query([ 'name' => $this->stream_key, ]); return $path.$query; } public function getStreamRtmpUrl(): string { return $this->getStreamServer().'/'.$this->stream_id; } }