如何为一个直播流配置转码功能
发布网友
发布时间:2022-04-23 09:21
我来回答
共1个回答
热心网友
时间:2022-04-20 02:16
对硬件和驱动的要求
Wowza Transcoder 只能在64位的Windows和Linux系统上运行。此外也不支持Mac OS X
系统。
Wowza Transcoder在64位的Windows Server 上运行时, 系统必须先具备以下功能:
.NET Framework 3.5.1
Desktop Experience
硬件加速
Wowza Transcoder
支持Windows 和 LinuxIntel系统上的Quick Sync 和 NVIDIA NVENC 加速编码以及Windows系统上的NVIDIA CUDA
加速编码。 下面的文章介绍了关于这些技术的更多硬件要求:
Server
specifications for Intel Quick Sync acceleration
Intel
Quick Sync acceleration on Linux
Server
specifications for NVIDIA NVENC and NVIDIA CUDA acceleration
NVIDIA
NVENC accelerated encoding on Linux
注意:
你应该在尝试硬件加速转码技术之前,先使用默认的MainConcept软件转码技术。MainConcept软件使用任何硬件加速功能。关于如何调试硬件编码的更多信息,请阅读如何验证Wowza
Transcoder正在使用哪一种编码技术。
在较新版本的Windows系统上,当Wowza Media Server作为系统服务运行时,由于Session 0
Isolation的安全原因,Intel Quick Sync 和 NVIDIA CUDA
硬件加速功能可能无法使用。要了解更多关于如何解决这个问题,请阅读作为Windows系统服务运行时,Transcoder插件如何使用硬件加速功能。
当使用Windows远程桌面时, Quick Sync 加速可能无法使用。
支持的音视频编码格式
为了将输入流(被称作"channels")进行转码或转换为多个不同输出码率的输出流,Wowza
Transcoder 插件提供了很多功能,它支持以下音视品编码格式:
输入流:
视频解码: H.264, MPEG-2, MPEG-4 Part 2
音频解码: AAC, MP3, MPEG-1 Layer 1/2, Speex, G.711 (μ-law and
A-law)
输出流:
视频编码: H.264, H.263v2
音频编码: AAC
注意:
对于mp3格式的音频,系统支持以下采样率: 48000, 44100, and 32000
Instream CEA-608 隐藏字幕(closed caption)可以通过Wowza Transcoder 插件采用Apple HLS
流媒体被传送给基于iOS的终端设备。要了解更多信息,请阅读如何为HLS流媒体配置隐藏字幕(closed captioning)。
当使用硬件加速特性时,不支持H.263 视频输出。
关于Transcoder模版
Wowza Transcoder
使用一个模版系统来为输出流创建转码后的输出流,这个模版可以控制各种编码参数。在[install-dir]/transcoder/templates目录下有三个默认的模版文件,基本满足了常规的转码要求:
transrate.xml, transcode.xml, 以及 audioonly.xml。
要了解更多关于个性化的的转码模版,请阅读模版的配置.
Wowza
Transcoder 模版系统提供一个将多个输出流组合在一个逻辑组的方法(被称作 Stream Name
Groups)。可以用ngrp:前缀来引用这个逻辑组以实现码率自适应。
Server.license 的配置(Wowza Media Server Perpetual Edition)
Wowza Media
Server和增值插件的授权码(license key) (包括Wowza Transcoder
插件)被存储在[install-dir]/conf/Server.license。
%WMSCONFIG_HOME%\conf\Server.license
- Windows
/Library/WowzaMediaServer/conf/Server.license
- Mac OS X
/usr/local/WowzaMediaServer/conf/Server.license
-
Linux/Unix
试用、日租、月租模式的授权只需要一个license key,但是永久授权模式需要多个license
key。
使用增值插件时,用文本编辑器打开Server.license文件,在每一个新行输入一个新的license
key。当服务被重启后,新的license将会生效。
由于多个授权码是叠加的,因此在添加一个新的授权码时,去保留文件中原有的授权码,然后在新的一行填写新的授权码。多个授权码在文件中的前后顺序是无关紧要的。
授权码的前5位和后5位字符将显示在控制台的输出中信息。
下面是一个Server.license
文件的示例,包括一个永久授权的Wowza Media Server 授权码、两个Wowza Transcoder 插件授权码以及一个Wowza nDVR
插件授权码:
SVRP3-LaGpC-ZrTD9-F4Y3S-a9bR2-h5t3C
TRN23-Ry6qe-4mT8J-yKj2W-4N5sH-2Td3a
TRN13-y9Gj2-kneqT-2zjHp-GadzB-N6fwa
DVRA3-k3r3R-nzxCB-ypjs5-Sk3y9-ahFdF
Application.xml的配置
建立一个直播应用,然后对Application.xml文件进行一些配置以使用Wowza
Transcoder插件,请按下面进行:
创建一个应用的目录[install-dir]/applications/live.
创建一个配置目录[install-dir]/conf/live
,将[install-dir]/conf/Application.xml 文件拷贝到这个新目录下
用文本编辑器打开这个新拷贝的Application.xml 文件,然后做如下改动(有些设置可能已经配好了):
将Streams/StreamType 设置为:
Code:
<StreamType>live</StreamType>
将HTTPStreamers 设置为:
Code:
<HTTPStreamers>cupertinostreaming,smoothstreaming,sanjosestreaming</HTTPStreamers>
将Streams/LiveStreamPacketizers 设置为:
Code:
<LiveStreamPacketizers>cupertinostreamingpacketizer,smoothstreamingpacketizer,sanjosestreamingpacketizer</LiveStreamPacketizers>
将RTP/Authentication/PlayMethod 设置为:
Code:
<PlayMethod>none</PlayMethod>
将Transcoder/LiveStreamTranscoder 设置为:
Code:
<LiveStreamTranscoder>transcoder</LiveStreamTranscoder>
如果输入流是H.264视频编码AAC 或 MP3
音频编码,你希望创建多个不同码率的输出流,以实现码率自适应,请将Transcoder/Templates 设置为:
Code:
<Templates>${SourceStreamName}.xml,transrate.xml</Templates>
如果输入流是MPEG-2
或 MPEG-4 Part 2 视频编码,你希望转码为H.264 和 AAC,以面向Wowza支持的例如Adobe
Flash播放器、Apple iOS 设备和Microsoft Silverlight的播放器技术, 请将Transcoder/Templates
设置为:
Code:
<Templates>${SourceStreamName}.xml,transcode.xml</Templates>
注意:
当使用transcode.xml时,同样也支持多码率自适应。
如果你希望转码的输入流时SHOUTcast 或 Icecast MP3
媒体流,请在MediaCaster/Properties 中添加下面的属性以配置Wowza Media Server
在每个包中发送一个MP3 帧:
Code:
<Property>
<Name>shoutcastMP3GroupCount</Name>
<Value>1</Value>
<Type>Integer</Type>
</Property>
(只针对基于RTSP/RTP的编码器),用文本编辑器打开[install-dir]/conf/publish.password文件,添加一个用户名和密码来控制对RTSP/RTP
推流的访问。 下面是一个例子,用户名为myuser,密码为mypassword)。
Code:
# Publish password file (format [username][space][password])
# username password
myuser mypassword
启动 Wowza Media Server.
模版的配置
如果你使用系统自带的transrate.xml 或 transcode.xml 模版文件,
转码后的输出流将使用下面的stream names:
[stream-name]_360p: Main Profile stream
[stream-name]_160p: Baseline Profile stream
ngrp:[stream-name]_all: 面向Apple HTTP Live Streaming (cupertino)、
Microsoft Smooth Streaming以及 Adobe HTTP Dynamic Streaming
(sanjose)的码率自适应
[stream-name] 是输入到Wowza Media
Server的输入流。例如,一个输入是myStream,
那么转码后的输出流就是myStream_360p、myStream_160p以及
ngrp:myStream_all。
转码的工作机制很简单。推送到live应用的所有输入流将被采用在[install-dir]/conf/[application]/Application.xml文件Transcoder/Templates中设置的转码模版文件中的参数来转码。
你可以根据需要配置多个转码后的输出流。
让我们仔细看以下转码模版中的配置。下面是随Wowza Media
Server安装后自带的transrate.xml模版文件:
Code:
<!-- Example template for transrate, procing four new streams at different bitrates. Resultant streams can be played back indivially or as a group. source, 360p and 160p encode blocks are enabled through the Enable property, other examples are not enabled. Add additional encode blocks to your template as needed. -->
<Root>
<Transcode>
<Encodes>
<!-- Example Encode block for source, not required unless Member of StreamNameGroup. -->
<Encode>
<Enable>true</Enable>
<Name>source</Name>
<StreamName>mp4:${SourceStreamName}_source</StreamName>
<Video>
<!-- H.264, H.263, PassThru, Disable -->
<Codec>PassThru</Codec>
<Bitrate>${SourceVideoBitrate}</Bitrate>
<Parameters>
</Parameters>
</Video>
<Audio>
<!-- AAC, PassThru, Disable -->
<Codec>PassThru</Codec>
<Bitrate>${SourceAudioBitrate}</Bitrate>
<Parameters>
</Parameters>
</Audio>
<Properties>
</Properties>
</Encode>
<!-- Setup for 720p, high bandwith, main profile for desktop or set-top box -->
<Encode>
<Enable>false</Enable>
<Name>720p</Name>
<StreamName>mp4:${SourceStreamName}_720p</StreamName>
<Video>
<!-- H.264, H.263, PassThru, Disable -->
<Codec>H.264</Codec>
<!-- default, CUDA, QuickSync, NVENC -->
<Transcoder>default</Transcoder>
<GPUID>-1</GPUID>
<FrameSize>
<!-- letterbox, fit-width, fit-height, crop, stretch, match-source -->
<FitMode>fit-height</FitMode>
<Width>1280</Width>
<Height>720</Height>
<!-- <Crop>0,0,0,0</Crop> -->
<!-- <SourceRectangle>0,0,320,240</SourceRectangle> -->
</FrameSize>
<!-- baseline, main, high -->
<Profile>main</Profile>
<Bitrate>1300000</Bitrate>