Cenk
Dingiloglu
 Azure
媒体服务高级项目经理

直播流媒体目前已在公共预览版中提供,其中一项受支持的输入协议便是
RTMP。RTMP
是用于输入和分发包括直播流媒体在内的丰富媒体的一个常用协议。Azure
媒体服务支持使用 RTMP
从订阅源实时输入,并支持使用动态打包技术对以
MPEG-DASH、Microsoft Smooth Streaming、Apple
HLS 或 Adobe HDS
格式分发的实时流进行动态打包。这就允许在输入方面使用广泛采用的 RTMP
协议并使用多种输出协议以覆盖多种设备和端点,同时又能保持与传统播放器和视频格式的兼容性。有关在实时通道和流媒体端点建立
Azure 媒体帐户的信息,请参阅 Jason Suess
的精彩博文“通过
Azure 媒体管理门户开始使用直播流媒体
”。

本文重点介绍
Azure 媒体服务启用的 RTMP
输入功能,以及如何使用此功能借助
Wirecast、Flash Media LiveEncoder (FMLE)
和 FFmpeg
编码器为 Azure
媒体服务通道提供多码率实时订阅源。

体系结构和基本信息

从较高层面而言,直播流媒体的体系结构有三个主要组成部分:通道/节目、存储和流媒体端点。

  • 通道/节目-
    通道用来实现直播流媒体,包括实时编码器的输入点。截至今天,RTMP
    和 Fragmented MP4(Smooth
    Streaming)是受支持的输入协议。节目是通道内部的逻辑组件。节目可发布接收的数据以用于流媒体,并归档用于点播转换和直播窗口(DVR
    格式)的内容。

  • 流媒体端点和流媒体单元-
    流媒体端点为您提供可从中找到您的直播和 VOD
    资源的 URL,同时还提供动态打包功能,并确保流媒体的成功交付。

  • 存储-
    使用 Azure
    存储来存储实时节目的归档。点播流媒体和编码服务也会用到存储。

通道
RTMP 支持

Azure
媒体服务通道支持 RTMP
推送模式。可同时支持单码率和多码率输入,但为了获取自适应码率流媒体的优势,强烈建议使用多码率输入。将来,Azure
媒体服务还将提供实时转码服务,将单码率输入转化为多码率输出。要使用
RTMP 输入,须具备以下条件:

  • 支持
    RTMP 输出的编码器
  • H.264
    视频和 AAC
    音频编解码器输出

  • 对应于视频质量的关键帧或帧组 (GOP)

  • 2
    秒的关键帧间隔(可设置为最多 6
    秒,但需要特别配置。具体参见下文的高级设置部分)

  • 特定于每种质量的流名称

  • 网络连接(视频+音频合计码率的可用带宽)

为获得最佳自适应码率性能,建议严格遵循 CBR
编码。

在本文中,我会在 Azure
媒体服务通道的输出和输入中使用三种视频质量。您可以使用多种质量,但请记住一点,初始质量将受限于您的计算机编码能力以及该计算机至输入通道的网络连接情况。如果超出了带宽范围或者网络连接情况较差,可能需要调整质量级别和编码设置,以使用更低的分辨率和码率。使用多种质量时,应注意所有质量的合计码率。

注意:请确保在每次更改编码器设置时重设您的通道,先断开编码器与通道的连接,然后再重新连接。

Wirecast
配置

Wirecast是一款知名的
RTMP 编码器。Wirecast
可实现直播流媒体的捕捉、实时制作和编码,以进行广播。您可以通过
Telestream
网站
获取更多信息并下载试用版。目前
Wirecast 版本 5
为受支持版本,已通过 Azure
媒体服务测试。

配置输入

  • 将鼠标悬停在“+”按钮上。


  • 从可用源选项中选择一项。Wirecast
    包含多个选项。在本文中,我会使用我的集成摄像机。

  • 摄像机捕捉的影像将出现在新的小窗口中。单击该摄像机捕捉的影像,便会出现在
    Preview (预览)窗口中。

配置输出

  • 在主菜单中,转到 Output -> OutputSettings(输出->输出设置)。


  • Select an OutputDestination(选择输出目标)对话框中,选择
    RTMP 服务器。

将显示 Output Settings(输出设置)对话框。

  • 为您的第一种输出(质量)命名。例如“Azure
    媒体服务质量 1”

  • 在 Address(地址)字段中输入您的输入通道的
    URL。有关如何获取内嵌输入通道 URL
    的信息,请参阅“通过
    Azure 媒体管理门户开始使用直播流媒体
    ”。

  • 输入一个唯一的流名称(例如,myStream1)。如果有多种质量,每一种质量都需要一个唯一的流名称。

  • 为您的第一种质量创建新的编码预设。

    • 在 Output Settings(输出设置)对话框中,选择
      New Preset(新建预设)

    • 在 Enter New Preset Name(输入新建预设名称)文本框中,输入新预设的名称,例如“MyQuality1”

    • 将“Encoder:”类型设置为
      H.264。(注意:
      x264 编码器类型存在可影响动态打包的已知问题,因此不受支持。)

    • 将预设配置为需要的值。

在创建编码预设时,应将每种质量的“Frames per second”(每秒帧数)和“Key
frame every”(每隔多少帧插入一个关键帧)设为相同的值。针对每种质量应使用相同的音频编码设置,而且应检查每种质量的“Keyframe
Aligned”(对齐关键帧)设置,否则流媒体将不工作或无法输入至通道中。为实现适当的自适应码率流媒体,这些设置必须在所有质量级别中保持一致。

  • 配置完您的第一种输出后,您将看到以下输出配置

  • 要添加其他质量级别,单击 Add(添加)并按照上述步骤添加其他质量级别。请务必将“Frames
    per second”(每秒帧数)和“Key frame every”(每隔多少帧插入一个关键帧)设为相同的值。另外,请检查“Keyframe
    Aligned”(对齐关键帧)设置并设置唯一的流名称。
  • 三种质量全部配置完毕后,您将看到如下输出配置:

开始编码并将数据推送至输入通道

  • 单击箭头开始编码:

  • 按 Stream(流媒体)按钮,开始将实时编码数据推送至通道。流媒体启动时,指示灯将变成红色。

预览流

可使用
Azure 管理门户预览流。还可以使用 Azure
门户发布流。有关如何发布和预览流的信息,请参阅《通过
Azure 媒体管理门户开始使用直播流媒体
》。

您还可以使用
http://amsplayer.azurewebsites.net/
, 它提供了多播放器选项和预览。

Flash Media LiveEncoder (FMLE)
配置

FMLE
是 Adobe
的一款免费软件。您可以从
http://www.adobe.com/products/flash-media-encoder.html
中获取更多信息并下载此编码器的一个副本。默认情况下,FMLE
支持 MP3
音频输出。目前,Azure
媒体服务不提供实时转码服务,需要通过 AAC
音频编解码器将源流媒体动态打包为多种格式,如 MPEG-DASH、Smooth
Streaming 和 HLS
等。要在 Azure
媒体服务中使用 FMLE,需要一个
AAC 插件。在本文中,我将使用 Main Concept
的一款插件。您可以通过以下链接获取更多信息并下载试用版:http://www.mainconcept.com/eu/products/plug-ins/plug-ins-for-adobe/aac-encoder-fmle.html

配置
FMLE

  • 您首先要做的是,将 FMLE
    配置为采用NTP时间源
    (绝对时间) ,
    以支持RTMP
    时间戳。为此,请执行以下步骤:

1.   
关闭编码器。

2.   
在文本编辑器中打开 FMLE config.xml
文件。Windows
操作系统的默认安装位置为 C:\Program Files\Adobe\Flash Media
LiveEncoder 3.2\(64
位系统为 C:\Program Files (x86)\Adobe\Flash Media
LiveEncoder 3.2\)

Mac
操作系统的默认安装位置为 Macintosh HD:Applications:Adobe:Flash
MediaLive Encoder 3.2

3.   
将 streamsynchronization/enable
设置为 true。<streamsynchronization>

<!– “true”为启用此功能,“false”为禁用。–>

<enable>true</enable>

4.   
保存文件,然后重启编码器。

  • 从设备列表中选择源设备。在本文中,我将使用“Integrated
    Camera”(集成摄像机)

  • 从预设菜单中选择编码预设或自己创建一个。如果要自己创建,请阅读“ RTMP
    通道支持”部分,了解相关要求。我将使用预设菜单中的“Multi
    Bitrate – 3streams (1500) Kbps – H.264”(多码率
    - 3 股流媒体
    (1500) Kbps – H.264),创建 3
    种质量。

单击 图标配置 H.264 高级设置并将“Key Frame frequency”(关键帧频率)设置为 2 秒钟。注意:预设名称将变成“Custom”(自定义)

  • 将帧率设置为 30 fps

  • 选择音频设备

  • 将音频输出格式设置为 AAC。注意:默认情况下无法使用
    AAC 和 HE-AAC。FMLE
    本身仅支持 MP3
    音频。需有插件帮助,才能启用 AAC
    编解码器。

  • 设置所需音频带宽。在本文中,我将使用 96 Kbps
    码率和 44,100 Hz
    采样率。

您将看到如下初始配置:

开始编码并将数据推送至输入通道

  • 单击 Connect(连接)。该操作会将编码器连接至输入通道
    URL。

  • 单击 Start(启动),开始编码。

注意:您也可以在命令行模式下使用 FMLE。有关详细信息,请参阅“如何在命令行模式下启动
Flash Media Live Encoder

预览流

可使用 Azure
管理门户预览流。还可以使用 Azure
门户发布流。有关如何发布和预览流的信息,请参阅“通过
Azure 媒体管理门户开始使用直播流媒体
”。

您还可以使用
http://amsplayer.azurewebsites.net/,
它支持
多播放器选项和预览。

在 Azure
媒体服务输入通道中使用 FFmpeg

FFmpeg
是一款知名的开源软件,主要用于不同媒体格式的编码和创建。RTMP
是受支持的协议之一。您可以从 FFmpeg
官方网站获取更多信息并下载一个副本。

在本文中,我不会深入介绍
FFmpeg 命令及其使用详情,仅提供流处理本地文件并模拟直播流媒体的示例命令。您可以使用
FFmpeg 从多个来源/设备(包括本地摄像头、桌面捕捉和其他设备)中捕捉数据。更多信息请访问其官方网站

示例命令

在本文中,我将采用 Windows
系统下的 FFmpeg。您可以使用适合您的平台的
FFmpeg 版本。

单码率:

C:\tools\ffmpeg\bin\ffmpeg.exe -v verbose -iMysampleVideo.mp4 -strict -2 -c:a aac -b:a 128k -ar 44100 -r 30 -g 60-keyint_min 60 -b:v 400000 -c:v libx264 -preset medium
-bufsize 400k -maxrate400k -f flvrtmp://channel001-streamingtest.channel.media.windows.net:1935/live/a9bcd589da4b424099364f7ad5bd4940/mystream1

多码率(、300
和 150 Kbps
三种码率):

C:\tools\ffmpeg\bin\ffmpeg.exe-threads 15 -re -i MysampleVideo.mp4 -strict experimental -acodec aac -ab 128k-ac 2 -ar 44100 -vcodec libx264 -s svga -b:v 500k -minrate
500k -maxrate 500k-bufsize 500k  -r 30 -g 60 -keyint_min 60-sc_threshold 0 -f flv rtmp://channel001-streamingtest.channel.media.windows.net:1935/live/a9bcd589da4b424099364f7ad5bd4940/Streams_500-strict experimental -acodec aac -ab 128k
-ac 2 -ar 44100 -vcodec libx264 -svga -b:v 300k -minrate 300k -maxrate 300k -bufsize 300k -r 30 -g 60 -keyint_min60 -sc_threshold 0 -f flvrtmp://channel001-streamingtest.channel.media.windows.net:1935/live/a9bcd589da4b424099364f7ad5bd4940/Streams_300-strict
experimental -acodec aac -ab 128k -ac 2 -ar 44100 -vcodec libx264 -sqvga -b:v 150k -minrate 150k -maxrate 150k -bufsize 150k 
-r 30 -g 60 -keyint_min 60 -sc_threshold 0 -fflvrtmp://channel001-streamingtest.channel.media.windows.net:1935/live/a9bcd589da4b424099364f7ad5bd4940/Streams_150

多码率命令创建出三种质量(、300
和 150 Kbps)的视频,关键帧间隔为
2 秒,并将输出发送至 Azure
媒体服务输入通道。有关如何获取输入通道 URL
的信息,请参阅“通过
Azure 媒体管理门户开始使用直播流媒体
”。

预览流

可使用 Azure
管理门户预览流。还可以使用 Azure
门户发布流。有关如何发布和预览通道和节目的信息,请参阅“通过
Azure 媒体管理门户开始使用直播流媒体
”。

您还可以使用
http://amsplayer.azurewebsites.net/,
它支持
多播放器选项和预览。

高级配置

默认情况下,Azure
媒体服务通道配置为接受每 2
秒一个关键帧(KeyFrameInterval)的数据或帧组。而动态打包技术针对
HLS 输出采用 3
比 1
映射配置,也就是说,如果输入每 2
秒一个关键帧配置的数据,您的 HLS
输出部分将是 6
秒(3 * 2
秒)

如果您希望输入不是每秒一关键帧的数据,您需要调整相应的值。您应使用
SDK 调整相应值并创建新通道,因为这些高级设置无法通过门户网站进行更改。有关如何使用
SDK 创建新通道的详细信息,请参阅“使用
Media Services SDK for .NET 创建直播流媒体应用程序”

要配置这些参数,请参考:

总结与后续步骤

希望本文演示了获取 RTMP
实时编码器以供 Azure
媒体服务使用并配置基本流媒体的简便性。通过 Azure
媒体服务直播流媒体和其他功能还能实现更多。有关直播流媒体和 SDK
支持的详细信息,请参阅“使用
Azure 媒体服务直播流媒体”
。有关
Azure 媒体的一般信息,请访问
Azure
媒体服务
官方网站。

我们希望您试用我们新推出的支持
RTMP 输入的直播流媒体服务。如果有任何反馈,欢迎告知我们。

祝您使用愉快!

本文翻译自:http://azure.microsoft.com/blog/2014/09/18/azure-media-services-rtmp-support-and-live-encoders/

Azure 媒体服务的 RTMP 支持和实时编码器的更多相关文章

  1. Azure 媒体服务换新锁,更安全更方便,新钥匙请收好!

    不知道有多少人已经把家里的门锁换成了数字化的指纹锁?沿用了几百上千年的传统门锁,在技术的帮助下无疑变得更方便,不用带钥匙,还能远程控制和操作,最重要的是,终于不用担心「衣果(luǒ)着」出门扔垃圾,风 ...

  2. Azure 媒体服务支持 DASH 实时传送流

    Kilroy Hughes Azure媒体服务数字媒体架构师 本文重点介绍 Azure 媒体服务支持的 DASH 实时传送流功能,同时阐述如何利用这些功能将实时和点播自适应流传送至 Web 浏览器 ...

  3. JW Player 现在支持 Azure 媒体服务

    Vishal Sood Azure媒体服务首席项目经理 此合作伙伴关系是关于什么内容? Azure媒体服务现已支持一些最常见的流媒体格式,其中包括 Microsoft SmoothStreaming ...

  4. 【Azure媒体服务 Azure Media Service】Azure Media Service中Stream Endpoint 说明 (流式处理终结点)

    Azure 媒体服务是一个基于云的媒体工作流平台,用于生成需要编码.打包.内容保护和直播活动广播的解决方案. 在视频的直播,点播方案中,媒体服务的架构主要由三部分构成: 推流端,把本地视频或直播内容推 ...

  5. 通过新的 Azure 媒体服务资源管理器工具管理媒体工作流

    Xavier Pouyat    Azure 媒体服务高级项目经理 几个月前,一家广播公司找到了我,希望我向他们提供一种图形界面工具,好让他们使用 Azure媒体服务来上传.管理资产并对资产进行编 ...

  6. Azure 媒体服务可将优质内容传输至 Apple TV

    作为内容提供商,如果想要将优质内容传输到Apple TV,需要使用Apple FairPlay Streaming (FPS)技术. 但是这个技术的构建比较繁琐,基于此,Azure提供了FairPla ...

  7. Azure媒体服务的Apple FairPlay流功能正式上线

    在此我们高兴地宣布,Azure FairPlay Streaming服务已正式商用. FairPlay允许用户轻松构建解决方案,并可扩展到最新版本的Apple TV.Azure媒体服务可以结合现有的P ...

  8. 宣布正式发布 Azure 媒体服务内容保护服务

    Mingfei Yan Azure媒体服务项目经理 我们非常高兴地宣布正式发布 Azure 媒体服务内容保护服务.这包括 Microsoft PlayReady许可服务和 AES明文密钥交付服务!此外 ...

  9. 中国Azure媒体服务RESTAPI的Endpoint

    Amber Zhao  Thu, Feb 26 2015 4:09 AM 由于海外Azure和中国Azure有不同的domain,很多用户在使用媒体服务RESTAPI时,需要指定中国Azure媒体服务 ...

随机推荐

  1. 学习笔记_Java_day12_Cookie

    Cookie 1 Cookie概述 1.1 什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie就是一个键和一个值构成的 ...

  2. RAC分解步骤之一,在oracle linux 4u4上安装oracle 10.2.0.1.0操作日志

    练习oracle的rac组建过程,第一步,先练习4u4上安装oracle 10.2.0.1.0.直接安装rac,有些难度.从简单的做起.总RAC步骤,参照小布老师的RAC组建. 1. 启动vc,登陆v ...

  3. Masonry约束崩溃

    报错: Trapped uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSLayoutConstraint const ...

  4. 线段树(单点更新)HDU1166、HDU1742

    在上一篇博文里面,我提到了我不会线段树,现在就努力地学习啊! 今天AC一题感觉都很累,可能是状态不佳,在做HDU1166这题目时候,RE了无数次. 原因是:我的宏定义写错了,我已经不是第一犯这种错误了 ...

  5. 九度OJ 1468 Sharing -- 哈希

    题目地址:http://ac.jobdu.com/problem.php?pid=1468 题目描述: To store English words, one method is to use lin ...

  6. 《sed的流艺术之四》-linux命令五分钟系列之二十四

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  7. 表格行变换顺序功能(jquery)

    周末写了个更改表格行顺序的小功能,直接贴代码 表格部分如下: <table class="table" id="test_table"> <t ...

  8. Linux grep和find的区别

    这是两个不同的命令,关于grep:Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  9. 限制apache错误日志大小

    ①配置错误日志 在http.conf配置: ErrorLog "| /opt/lampp/bin/rotatelogs /opt/lampp/logs/%Y_%m_%d_error_log  ...

  10. Linux文件3个时间点(access time,modify time,change time)

    在Linux中使用stat命令来查看文件的详细信息. 如图所示,会出现3个类型的时间,分别是Access,Modify,Change. access time:表示最后一次访问(仅仅是访问,没有改动) ...