1

我使用 Javascript 和 Agora.IO 为直播应用程序编写了一个客户端,我想获得一个流 URL,例如 RTMP 或 HLS 格式,用户可以将其粘贴到 VLC 等外部播放器中以查看直播。

流对象有一个 play() 方法,我可以使用它在 Web 浏览器中播放流,但是是否有可能生成/获取流的链接?感谢您的帮助/提示如何做到这一点!下面是我到目前为止的代码,我通过它连接到带有room_numberuser_id的直播。

var client = AgoraRTC.createClient({
  mode: "live",
  codec: "h264"
});

client.init('my_app_ID', function() {
  console.log("AgoraRTC client initialized");

}, function(err) {
  console.log("AgoraRTC client init failed", err);
});
client.join(null, room_number + "", user_id, function(user_id) {
  console.log(user_id);
});

client.on("stream-added", function(t) {
  var stream = t.stream;

  client.subscribe(stream, {
    video: !0,
    audio: !0
  });

  client.on("stream-subscribed", function(e) {
    var t = e.stream;
    t.play('agora_remote'); // plays the stream into a DIV element
  });
});
4

2 回答 2

2

Agora.io 的 Web SDK 没有提供任何通过 RTMP 访问流的方法,因为 Agora Web SDK 是基于 Web RTC 的,这是一个不同的协议。

setLiveTranscodingAgora.io 的 Web SDK 确实支持使用、startLiveStreaming和方法将 Agora 流推送到 RTMP url(由 Facebook Live、YouTube live、Vimeo live 等服务提供)stopLiveStreaming

// CDN transcoding settings.
var LiveTranscoding = {
            // Width of the video (px). The default value is 640.
            width: 640,
            // Height of the video (px). The default value is 360.
            height: 360,
            // Bitrate of the video (Kbps). The default value is 400.
            videoBitrate: 400,
            // Frame rate of the video (fps). The default value is 15. Agora adjusts all values over 30 to 30.
            videoFramerate: 15,
            audioSampleRate: AgoraRTC.AUDIO_SAMPLE_RATE_48000,
            audioBitrate: 48,
            audioChannels: 1,
            videoGop: 30,
            // Video codec profile. Choose to set as Baseline (66), Main (77), or High (100). If you set this parameter to other values, Agora adjusts it to the default value of 100.
            videoCodecProfile: AgoraRTC.VIDEO_CODEC_PROFILE_HIGH,
            userCount: 1,
            userConfigExtraInfo: {},
            backgroundColor: 0x000000,
            // Sets the output layout for each user.
            transcodingUsers: [{
                    x: 0,
                    y: 0,
                    width: 640,
                    height: 360,
                    zOrder: 0,
                    alpha: 1.0,
                   // The uid must be identical to the uid used in Client.join.
                    uid: 1232,
                  }],
          };

client.setLiveTranscoding(LiveTranscoding);

// Adds a URL to which the host pushes a stream. Set the transcodingEnabled parameter as true to enable the transcoding service. Once transcoding is enabled, you need to set the live transcoding configurations by calling the setLiveTranscoding method. We do not recommend transcoding in the case of a single host.
client.startLiveStreaming("your RTMP URL", true)


// Removes a URL to which the host pushes a stream.
client.stopLiveStreaming("your RTMP URL")

完整指南:https ://docs.agora.io/en/Interactive%20Broadcast/cdn_streaming_web?platform=Web

于 2019-10-21T03:54:11.313 回答
0

感谢您提供详细的指南和参考代码。我正在遵循上面的代码,但无法设置实时转码。

"03:16:14:369 Agora-SDK [DEBUG]: setLiveTranscoding: {"width":640,"height":360,"videoBitrate":400,"videoFramerate":15,"audioSampleRate":48000,"audioBitrate ":48,"audioChannels":1,"videoGop":30,"videoCodecProfile":100,"userCount":1,"userConfigExtraInfo":{},"backgroundColor":0,"images":[{"url" :" http://www.com/watermark.png ","x":0,"y":0,"width":160,"height":160}],"transcodingUsers":[{"x" :0,"y":0,"width":640,"height":360,"zOrder":0,"alpha":1,"uid":3882108012}]}"

我从“rtc.client.setLiveTranscoding(LiveTranscoding)”收到了上述响应,并且在 agora 控制台的“RTMP Converter”区域中没有显示任何内容。

于 2020-04-06T12:42:27.367 回答