视频直播生成推流和播放地址的PHP代码示例

本文涉及的产品
.cn 域名,1个 12个月
视频直播,500GB 1个月
简介: 直播推流地址和播放地址本身没有API接口,需要在客户端自行拼接地址,然后使用推流工具或者播放器对其推流或播放。本文主要介绍如何生成直播的推流以及播放地址(PHP示例代码)
<?php

function push_url($push_domain,$push_key,$expireTime,$appName,$streamName){

        $push_url = '';
        //未开启鉴权Key的情况下
        if($push_key==''){
                $push_url = 'rtmp://'.$push_domain.'/'.$appName.'/'.$streamName;
                echo $push_url;
                return;
        }
        $timeStamp = time() + $expireTime;
        $sstring = '/'.$appName.'/'.$streamName.'-'.$timeStamp.'-0-0-'.$push_key;
        $md5hash = md5($sstring);
        $push_url = 'rtmp://'.$push_domain.'/'.$appName.'/'.$streamName.'?auth_key='.$timeStamp.'-0-0-'.$md5hash;
        echo $push_url;
        echo PHP_EOL;
        return;
}

function play_url($play_domain,$play_key,$expireTime,$appName,$streamName){
        //未开启鉴权Key的情况下
        if($play_key==''){
                $rtmp_play_url = 'rtmp://'.$play_domain.'/'.$appName.'/'.$streamName;
                $flv_play_url = 'http://'.$play_domain.'/'.$appName.'/'.$streamName.'.flv';
                $hls_play_url = 'http://'.$play_domain.'/'.$appName.'/'.$streamName.'.m3u8';
        }else{
                $timeStamp = time() + $expireTime;

                $rtmp_sstring = '/'.$appName.'/'.$streamName.'-'.$timeStamp.'-0-0-'.$play_key;
                $rtmp_md5hash = md5($rtmp_sstring);
                $rtmp_play_url = 'rtmp://'.$play_domain.'/'.$appName.'/'.$streamName.'?auth_key='.$timeStamp.'-0-0-'.$rtmp_md5hash;

                $flv_sstring = '/'.$appName.'/'.$streamName.'.flv-'.$timeStamp.'-0-0-'.$play_key;
                $flv_md5hash = md5($flv_sstring);
                $flv_play_url = 'http://'.$play_domain.'/'.$appName.'/'.$streamName.'.flv?auth_key='.$timeStamp.'-0-0-'.$flv_md5hash;

                $hls_sstring = '/'.$appName.'/'.$streamName.'.m3u8-'.$timeStamp.'-0-0-'.$play_key;
                $hls_md5hash = md5($hls_sstring);
                $hls_play_url = 'http://'.$play_domain.'/'.$appName.'/'.$streamName.'.m3u8?auth_key='.$timeStamp.'-0-0-'.$hls_md5hash;
        }

        echo 'rtmp播放地址: '.$rtmp_play_url;
        echo PHP_EOL;
        echo 'flv播放地址: '.$flv_play_url;
        echo PHP_EOL;
        echo 'hls播放地址: '.$hls_play_url;
        echo PHP_EOL;
        return;
}

//推流域名
$push_domain = 'testpush.cn';
//推流域名配置的鉴权Key
$push_key = 'test_Push_key';
//生成随机的AppName
$appName = md5(uniqid(microtime(true),true));
//生成随机的StreamNmae
$streamName = md5(uniqid(microtime(true),true));
//配置过期时间为1小时
$expireTime = 3600;

//播放域名
$play_domain = 'testPlay.cn';
//播放域名配置的鉴权Key
$play_key = 'test_play_key';

push_url($push_domain,$push_key,$expireTime,$appName,$streamName);
play_url($play_domain,$play_key,$expireTime,$appName,$streamName);

?>
相关文章
|
5月前
|
Web App开发 缓存 Linux
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
《FFmpeg开发实战》书中第10章提及轻量级流媒体服务器MediaMTX,适合测试RTSP/RTMP协议,但不适合生产环境。推荐使用SRS或ZLMediaKit,其中SRS是国产开源实时视频服务器,支持多种流媒体协议。本文简述在华为欧拉系统上编译安装SRS和FFmpeg的步骤,包括安装依赖、下载源码、配置、编译以及启动SRS服务。此外,还展示了如何通过FFmpeg进行RTMP推流,并使用VLC播放器测试拉流。更多FFmpeg开发内容可参考相关书籍。
136 2
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
|
小程序 JavaScript 视频直播
Vue视频直播,解决Web端+小程序端同时播放问题
Vue视频直播,解决Web端+小程序端同时播放问题
583 0
|
编解码 视频直播 开发工具
《从 SDK 到编解码:视频直播架构解析》电子版地址
从 SDK 到编解码:视频直播架构解析
139 0
《从 SDK 到编解码:视频直播架构解析》电子版地址
|
Ubuntu 编译器 Linux
linux(arm、hi3531A)交叉编译live555最新代码
linux(arm、hi3531A)交叉编译live555最新代码
412 0
linux(arm、hi3531A)交叉编译live555最新代码
|
Ubuntu Linux
Linux(Ubuntu)下编译 Live555最新代码
Linux(Ubuntu)下编译 Live555最新代码
772 0
Linux(Ubuntu)下编译 Live555最新代码
《Fast and Scalable VMM Live Upgrade in Large Cloud Infrastructure》电子版地址
Fast and Scalable VMM Live Upgrade in Large Cloud Infrastructure
92 0
《Fast and Scalable VMM Live Upgrade in Large Cloud Infrastructure》电子版地址
|
视频直播 调度
《视频直播的智能流量调度系统》电子版地址
视频直播的智能流量调度系统
163 0
《视频直播的智能流量调度系统》电子版地址
|
编解码 视频直播 Android开发
安卓实现视频直播(rtmp)以及直播推流(NDK实现)
安卓实现视频直播(rtmp)以及直播推流
950 0