Gocoder iOS版使用介绍
转载请注明:文章来自www.wowza.cn
注意: 要访问最新的技术资料,请访问http://www.ttstream.com/wowza/
这篇文章介绍了如何使用Wowza GoCoder 向Wowza 服务器发布实时流。Wowza GoCoder iOS版是一个运行在Apple iPad (2代和更新版本)、iPad Mini、iPhone (3GS 和更新版本)以及iPod touch (4代和更新版本)上的实时音视频采集和编码应用。 你可以用Wowza GoCoder采集音视频并通过4G、3G以及Wi-Fi网络传送到Wowza服务器,www.wowza.cn,然后由Wowza服务器将内容以高清质量的H.264码率自适应流发布到任何电子屏幕。

注意:
  • Wowza® GoCoder™ 可以从Apple App Store购买。
  • 你可以从Wowza GoCoder发布实时流到一下版本的Wowza 服务器:
    • Wowza Streaming Engine™ 4.0 及更新版本
    • Wowza Media Server® 3.0 及更新版本
  • 如果你的发布终端用的是iOS 7 操作系统,你必须用Wowza GoCoder 1.2.1 及更新版本。
  • 重要: 如果你使用的是Wowza GoCoder 1.2.0 及更早的版本,我们推荐你升级到最新的版本上以解决应用中Video Settings中的潜在问题。 要了解更多,请参考在iOS 7上安装Wowza GoCoder

内容


配置Wowza服务器
配置Wowza GoCoder 应用
URL configuration method
播放
在Wowza Streaming Engine Manager 中播放
在Wowza 的例子播放器中播放
故障排查
在iOS 7上安装Wowza GoCoder
错误的用户名和密码
没有视频
连接问题
被FaceTime呼叫和推送消息中断
多任务
延时问题
电量
相关文章
如何使用Android版Wowza GoCoder 发布直播流
如何用Wowza Transcoder插件对实时流进行转码
如何对实时输入流进行录制

配置Wowza 服务器


根据如何用RTSP推送实时流到Wowza服务器 "配置"章节中的介绍建立一个直播应用。 这篇文章将指导你在Wowza Stream Engine 4或Wowza Media Server上建立一个叫做live的直播应用.

配置Wowza GoCoder 应用



  1. 在你的iOS终端上启动Wowza GoCoder应用。当应用被启动后,界面上首先会展示一个操作说明的引导界面。www.wowza.cn


    这个界面展示了应用上每一个按钮对应的操作。在屏幕任意处点击一下就可以跳过这个界面。按下X按钮以后都不再显示这个操作引导界面。


    注意: 针对没有配备LED闪存的后向摄像头(iSight)的终端设备,在应用的左上角只有Switch camera 按钮。

    这个摄像头按钮不会显示在那些只有前置摄像头(FaceTime)的iPhone设备上(3GS和以后的版本)。
  2. 要设置Wowza服务器信息,请在应用的右上角,轻按Server 按钮,会进入Server 界面。


    1. 轻按Host, 输入 ServerPort 信息,然后轻按Back

      • Server中,输入Wowza服务器的IP地址或域名。

      • Port中,输入流媒体推送的端口。默认配置下,Wowza 服务器将使用TCP1935端口用于所有协议的流媒体传输。

    2. 轻按 Application,输入ApplicationStream Name 信息,然后轻按Back

      在上面的例子中,显示你使用的Wowza 服务器中的应用名为live,你的stream name 为myStream

    3. 轻按Publisher Login,输入Publisher NamePassword 信息,然后轻按Done

      其中 Publisher NamePassword 信息是在Wowza服务器的[install-dir]/conf/publish.password 文件中设置的。

    通过Wowza Streaming Engine Manager自动完成GoCoder上关于Wowza服务器的配置

    如果你使用Wowza Streaming Engine 软件,你可以用Wowza Streaming Engine Manager上的Incoming Publishers功能自动完成GoCoder上关于Wowza服务器的配置。
    注意: 下面操作将覆盖GoCoder上已有的配置参数。

    自动配置GoCoder

    如果你用安装了GoCoder应用的终端打开了Wowza Streaming Engine Manager 页面,你就可以通过轻按Incoming Publishers页面中的Auto-configure GoCoder按钮自动完成GoCoder上关于Wowza服务器的配置:


    通过Email配置Gocoder

    如果你在Wowza服务器本机或远端的一台电脑上使用Wowza Streaming Engine Manager来管理你的Wowza服务器,你可以将服务器信息通过Email发送到你的GoCoder终端设备上:

    点击Email信息中的URL将启动GoCoder应用并将预设的参数信息设置到GoCoder中。关于URL参数的更多细节,请阅读URL configuration method.

    注意: 处于安全考虑,Publisher Login中的信息不会包含在Email邮件中。你依然必须在GoCoder应用中手动设置这个信息。

  3. 音视频的编码设置。轻按GoCoder应用右上角的Options按钮进入Options 界面。


    Video

    对于视频流,按下面设置:

    1. 轻按Stream,轻按Video + Audio 或者 Video Only,然后轻按Back


    2. 轻按 Video Settings,设置Frame RateKey Frame Interval (关键帧之间的帧数),以及Transport 协议,然后轻按Back

      如果你准备发布一段较长时间的视频,可以将Transport设置为 TCP 。在网络不太稳定的场景下,使用TCP效果会比UDP更好一些。 如果使用TCP协议发布流,GoCoder可以发布比当前网络带宽还高的码率的视频,只是会在GoCoder和Wowza 服务器之间会产生一些延时而已。 www.wowza.cn 如果延时的时间不可接受,你还是要用UDP协议。

    3. 轻按Video Size, 选择视频大小,然后轻按Back

      可选的Video Size依赖与你终端设备的能力和网络连接类型。

    4. 要对发布的视频使用滤镜功能时,请在Options界面下方的以下视频滤镜选项中选择其中一个: No Filter, B/W (black-and-white), Blur, B/W Blur。然后轻按Done

    Audio

    如果只是音频流,按以下操作进行设置:

    1. 轻按 Stream, 选择 Audio Only, 然后再按 Back


      这个设置会在发布时去除任何视频内容,意味着只有音频会发布到Wowza 服务器。 如果这些都配置正常,你会在GoCoder应用上看到下面的信息:

      Audio-only

    2. 为纯音频流设置传输协议时,轻按Video Settings,选择TCPUDP均可,然后轻按Done

      如果你准备发布一段较长时间的视频,可以将Transport设置为 TCP 。在网络不太稳定的场景下,使用TCP效果会比UDP更好一些。 如果使用TCP协议发布流,GoCoder可以发布比当前网络带宽还高的码率的视频,只是会在GoCoder和Wowza 服务器之间会产生一些延时而已。 如果延时的时间不可接受,你还是要用UDP协议。


    自动重启

    当网络连接短暂断开后又重新连接上后,如果需要GoCoder自动继续开始向Wowza 服务器发布流,将Auto Restart按钮滑动到ON


  4. 要设置音视频流的码率。轻按GoCoder应用左下角的码率按钮,可以显示可用的码率。


    在码率列表栏,选择你希望的最高码率,如下所示:

    可用的码率范围依赖于你的终端设备能力和你选择的Video Size,以及网络连接类型。

    注意:要配置码率自适应的媒体流,你必须配置Wowza Transcoder 插件。 这个插件会对输入的单个音视频流进行解码,然后再编码为多个关键帧对齐的多码率输出流。 要了解更多,请参考如何为一个直播流配置转码功能.
  5. (如果需要)对于具有LED flash的后置摄像头(iSight),轻按GoCoder应用左上角的LED flash 按钮() 来启用LED flash 模式。 这样将LED flash 模式设置为ON,从而使得摄像头的色彩更明亮。

    再次轻按这个按钮将禁用LED flash 模式(被设置为OFF)。

  6. 对于同时拥有前置摄像头(FaceTime)和后置摄像头(iSight)的设备,轻按左上角的摄像头按钮() 可以来回切换摄像头。

  7. 要开始发布流到Wowza 服务器,轻按 Encode 按钮。


    如果所有配置都正确,你将会在GoCoder应用上看到以下信息:

    Stream Started

    当开始推流时,发布出去的流的图像方向是和你手持终端设备的方向是一样的(竖屏或横屏). 当你调转终端设备方向时,GoCoder不会自己将输出流的图像调整到另一个方向。 相反,你必须先停止发布,再调转设备方向,然后再次启动推流。

    要停止向Wowza服务器发布流时,只要再次轻按Encode按钮即可。你会在GoCoder应用上看到以下信息:

    Stream Ended

URL configuration method

Wowza GoCoder version 1.3.0 及以上版本支持通过自定义的URL完成配置。 你可以在iOS设备上轻按你的自定义URL来启动GoCoder完成预置参数的配置。

URL example:
Code:
gocoder://configure/?publishHost=10.0.1.3&publishPort=1935&publishApplication=live&publishStream=wowza&publishUser=wowza&publishPassword=wowza&publishFrameSize=6
URL中的所有参数都是可选的。对于没有明确的参数,GoCoder会使用参数的默认值。为了达到你预期的效果,你最好在URL中将可选的参数都设置上.

可用的 URL 参数:

  • publishUseTCP = [YES | NO]
  • publishHost = [hostname]
  • publishPort = [integer]
  • publishApplication = [application]
  • publishStream = [stream]
  • publishUser = [publish-username]
  • publishPassword = [publish-password]
  • publishAutoStart = [YES | NO]
  • publishAutoRestart = [YES | NO]
  • publishBroadcastType = [integer] 从0到2的数字[0 = "Audio", 1 = "Video", or 2 = "Audio/Video"]
  • publishFPS = [float] 视频的帧率,例如: 30.00
  • publishKeyFrameInterval = [integer] 视频的关键帧间隔(两个关键帧之间的帧数)
  • publishBitrateIndex = [integer] 从0到3的数字[0 = "Low", 1 = "Medium", 2 = "High", 3 = "Very High"]. 实际的数值依赖你选择的帧率
  • publishFrameSizeIndex = [integer] 从0到8的数字,分别对应以下不同的帧大小:
    • 0 = 192x144
    • 1 = 320x240
    • 2 = 352x240
    • 3 = 352x288
    • 4 = 480x360
    • 5 = 640x360
    • 6 = 640x480
    • 7 = HD720
    • 8 = HD1080
  • publishFilterType = [integer] 从0到3的数字,分别代表不同的滤镜效果[0 ="None", 1 = "BW", 2 = "Blur", 3 = "BW Blur"]

注意:
  • 要注意在这个URL中,publishPassword是明文,因此会有安全隐患。
  • 测试这个URL要仔细,不合适的参数值将导致GoCoder出现错误。

播放


在Wowza Streaming Engine Manager中测试播放

在Streaming Engine Manager中,点击live页面右上角的Test Players 按钮。 这个Test Players窗口将打开的测试播放器默认会通过各种协议播放名字为myStream的流。

Test Players 窗口的每一个Tab页面都包含了一个测试播放器,你可以用于播放直播流,或者它会提供播放直播的引导说明。 例如,使用Adobe HDS 协议播放myStream, 点击 Adobe Tab页, 然后点击 Start


你可以用在www.wowza.com/testplayers页面上的测试播放器。

故障排查


在iOS7上安装Wowza GoCoder

  • 如果你使用的是iOS7系统,请确认从Apple App Store下载Wowza GoCoder 1.2.1 及往后的版本。这个版本是专门针对iOS 7开发的。

  • 如果你从以前的版本升级到Wowza GoCoder1.2.0或更新的版本,有些GoCoder Video Settings 获取不正确,请注意Frame RateKey Frame Interval 的值,它们有可能被重置为0。请将它们设置为非零的数值(推荐是30)。

    注意: 这个问题可能发生在以下升级场景:
    • 你从之前的版本升级到1.2.0 (或更新)的版本,然后有将操作系统升级到了iOS 7.
    • 你将操作系统升级到iOS7,然后将GoCoder升级到1.2.0 (或更新)的版本。

    你可以将GoCoder升级到1.2.1或更新版本来解决这个问题,或者根据上面的提示,重新设置Wowza GoCoder 1.2.0 版本中的 Video Settings部分的设置。

非法的用户名或密码

下面的信息提示你:在[install-dir]/conf/publish.password 文件中的用户名、密码和你在GoCoder的Server > Login 中设置的不匹配。

Invalid User or Password

没有视频

如果你希望播放时有声音有图像,但是最后只有声音,而没有图像,有可能是你的GoCoder被设置为 audio-only。请检查Configure Wowza GoCoder App中的第三步,确认GoCoder会推送视频到Wowza服务器。

连接问题

如果你的GoCoder链接不到Wowza server,请在Web浏览器中打开以下URL来检查服务器是否已经正常启动。

http://[wowza-ip-address]:1935

如果已经正常启动,那么页面上会显示Wowza server 的版本和build number。如果没有显示,请确认服务器是否已经启动并且TCP1935端口在路由、防火墙或一些软件防火墙(例如linux上的iptables)上是开放的。

如果服务器已经启动,检查你GoCoder上的Host信息是正确的。 并且要确认Server 的值仅仅是IP地址或域名,而不要写成了推送的URL。

被FaceTime呼叫或系统的推送消息打断

当iOS系统收到FaceTime呼叫和Push通知消息时,Wowza GoCoder被挂起,然后停止音视频采集和流发布。 www.wowza.cn 当你拒绝来电或忽略消息推送时,GoCoder有重新开始音视频采集和流发布,如果你应答来电,GoCoder将停止运行,你必须重新启动它才能又开始进行音视频采集。 要阻止来电和消息通知中断你的直播,你需要在终端上设置 勿扰模式

多任务

Wowza GoCoder 不支持多任务。如果你将应用退出到后台。音频和视频占用的资源将被释放给操作系统,并且GoCoder与Wowza服务器之间的连接会被断开。

延时

正常情况下,如果使用默认配置,从Wowza GoCoder丛集到发布到Wowza服务器之间的延时应该少于2秒。如果延时大于2秒,你可以试着将Application.xml文件中的Streams/StreamType设置为rtp-live-lowlatency。 如果你使用的最新的Wowza Streaming Engine,你可以在Streaming Engine Manager中直播应用的SetupTab页面中启用Low-latency stream

如果你的GoCoder使用TCP协议推流,那么可以发布比当前网络带宽还要高的码率的视频流,但这样就会引起GoCoder和Wowza服务器之间的延时。你可以试着将传输协议改为UDP。

对于服务器到播放终端的延时,通常情况下,Apple HLS 流要比Adobe HDS 流更大一些。你在GoCoder上设置的关键帧频率以及Wowza应用上的切片间隔都会对延时产生影响。 针对Apple HLS 播放协议,你可以调节Wowza应用的配置参数来降低延时。要了解更多,请参考, see 如何配置Http live streaming切片时的参数?

针对使用Adobe Flash 播放器和基于Flash的播放器(例如JW Player 和 Flowplayer)播放直播流时,对延时的调优建议,请参考如何尽可能的降低从视频采集到播放的延时?

电量

音视频编码对设备资源占用较大,它会比其它类型的应用更快速的消耗你的电量。