浏览器中通过内嵌swf推rtmp流的javascript库
可在任何http容器中加载项目目录来运行demo
如 http-server:
$ http-server -p 8888
$ php -S 0.0.0.0:8888
访问 http://localhost:8888/demo
$ npm install rtmp-streamer
OR
$ bower install rtmp-streamer
rtmp-streamer
遵循AMD规范,可通过require.js
等方式加载, 另外, 请确保在页面中引入了RtmpStreamer.swf
, 否则rtmp-streamer
将无法正确载入。
<object>
<embed id="rtmp-streamer" src="../RtmpStreamer.swf" bgcolor="#999999" quality="high"
width="320" height="240" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>
</object>
require(["rtmp-streamer"], function (RtmpStreamer) {
var streamer = new RtmpStreamer(document.getElementById('rtmp-streamer'));
streamer.publish(url, name);
});
/**
* Push video to RTMP stream from local camera.
*
* @param url - The RTMP stream URL
* @param name - The RTMP stream name
*/
function publish(url, name);
/**
* Pull video from RTMP stream.
*
* @param url - The RTMP stream URL
* @param name - The RTMP stream name
*/
function play(url, name);
/**
* Disconnect from RTMP stream
*/
function disconnect();
/**
* Set the screen width and height.
*
* @param width - The screen width (pixels). The default value is 320.
* @param height - The screen height (pixels). The default value is 240.
*/
function setScreenSize(width, height);
/**
* Set the screen position.
*
* @param x - The screen horizontal position (pixels). The default value is 0.
* @param y - The screen vertical position (pixels). The default value is 0.
*/
function setScreenPosition(x, y);
/**
* Set the camera mode.
*
* @param width - The requested capture width (pixels). The default value is 640.
* @param height - The requested capture height (pixels). The default value is 480.
* @param fps - The requested capture frame rate, in frames per second. The default value is 15.
*/
function setCamMode(width, height, fps);
/**
* Set the camera frame interval.
*
* @param frameInterval - The number of video frames transmitted in full (called keyframes) instead of being interpolated by the video compression algorithm.
* The allowed values are 1 through 300.
* The default value is 15, which means that every 15th frame is a keyframe. A value of 1 means that every frame is a keyframe.
*/
function setCamFrameInterval(frameInterval);
/**
* Set the camera quality.
*
* @param bandwidth - Specifies the maximum amount of bandwidth that the current outgoing video feed can use, in bytes per second (bps).
* To specify that the video can use as much bandwidth as needed to maintain the value of quality, pass 0 for bandwidth.
* The default value is 200000.
* @param quality - An integer that specifies the required level of picture quality, as determined by the amount of compression
* being applied to each video frame. Acceptable values range from 1 (lowest quality, maximum compression) to 100
* (highest quality, no compression). To specify that picture quality can vary as needed to avoid exceeding bandwidth, pass 0 for quality.
* The default value is 90.
*/
function setCamQuality(bandwidth, quality);
/**
* Set the microphone quality.
*
* @param quality - The encoded speech quality when using the Speex codec. Possible values are from 0 to 10.
* Higher numbers represent higher quality but require more bandwidth, as shown in the following table.
* The bit rate values that are listed represent net bit rates and do not include packetization overhead.
* ------------------------------------------
* Quality value | Required bit rate (kbps)
*-------------------------------------------
* 0 | 3.95
* 1 | 5.75
* 2 | 7.75
* 3 | 9.80
* 4 | 12.8
* 5 | 16.8
* 6 | 20.6
* 7 | 23.8
* 8 | 27.8
* 9 | 34.2
* 10 | 42.2
*-------------------------------------------
* The default value is 9.
*/
function setMicQuality(quality);
/**
* Set the microphone rate.
*
* @param rate - The rate at which the microphone is capturing sound, in kHz. Acceptable values are 5, 8, 11, 22, and 44.
* The default value is 44.
*/
function setMicRate(rate);
快速搭建一个RTMP服务器?试试Wowza(https://www.wowza.com/free-trial)
以七牛云为例:
设置参数的方式和用OBS等工具推流时的方式类似, 地址为直播云的空间名, 数据流名称为直播流的名称加鉴权参数:
在七牛的直播云管理后台中预览推流视频: