Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including rtmp-streamer with all npm packages installed. Try it out:

var rtmpStreamer = require("rtmp-streamer")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

rtmp-streamer v1.0.2

a javascript rtmp streamer library.

rtmp-streamer

浏览器中通过内嵌swf推rtmp流的javascript库

Demo

可在任何http容器中加载项目目录来运行demo

http-server:

 $ http-server -p 8888 

PHP build-in web server:

 $ php -S 0.0.0.0:8888 

访问 http://localhost:8888/demo

screenshot

Install

 $ npm install rtmp-streamer

OR

 $ bower install rtmp-streamer

Tutorial

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);
});

Document

  /**
   * 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)

Install & Configuration

wowza

采用直播云服务

七牛云为例:

设置参数的方式和用OBS等工具推流时的方式类似, 地址为直播云的空间名, 数据流名称为直播流的名称加鉴权参数:

在七牛的直播云管理后台中预览推流视频:

Metadata

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free