如何将RTMP流式传输到Azure Media Services



我正在尝试将我的相机流式传输到Azure Media Services LiveEvent。我正在使用Media Services的REST-API来获取摄取URL,但是文档没有提到如何从Android手机流式传输RTMP。

到目前为止,我已经尝试过让Git上的一些Android RTMP发布库安静下来,但每一个都无法建立连接。到目前为止我尝试过的库列表:

  • https://github.com/TakuSemba/RtmpPublisher(打开连接时内部NDK失败(
  • https://github.com/pedroSG94/rtmp-rtsp-stream-client-java(期望从摄取URL接收标头时失败(
  • 其他几个人都表现出上述两种行为中的一种

我还尝试过从mp4视频文件中使用ffmpeg进行流式传输,灵感来自这个SO答案:

ffmpeg -re -i video.mp4 -vcodec libx264 -profile:v main -preset:v medium -r 30 -g 60 -keyint_min 60 -sc_threshold 0 -b:v 2500k -maxrate 2500k -bufsize 2500k -filter:v scale="trunc(oha/2)2:720" -sws_flags lanczos+accurate_rnd -acodec aac -b:a 96k -ar 48000 -ac 2 -f flv rtmp://<AZURE_INGEST_URL>

但我得到了:

rtmp://<AZURE_INGEST_URL>: I/O error

我是不是错过了什么?

是否有可能像许多Azure用户所建议的那样,在没有中间层的情况下流式传输到摄取URL?

编辑:我已经使用两个RTMP库成功地流式传输到YouTube Live Streaming,所以我现在很确定问题不在于RTMP流式库,而在于Azure Live Streaming的工作方式。我在这里肯定少了一步。

您可能只是忘记在摄取URL路径后添加一个唯一的流密钥。

查看OBS教程https://learn.microsoft.com/en-us/azure/media-services/latest/live-events-obs-quickstart

摄取RTMP终结点应以/live/{GUID}结尾

之后,添加另一个/和一个唯一的流名称,这样您就可以使用/live/{GUID}/{uniquename}

rtmp://accountname-uswe.channel.media.azure.net:1935/live/8b53cc4e68c04e00a4855ffc3e678a62/someuniqueStreamID

然后尝试连接。客户经常感到困惑,认为路径中的GUID是流密钥,而不是流密钥。

最新更新