使用HTML5读取Red5直播流

12

我该如何使用HTML5读取Red5(RTMFP)流?


你的原始音频/视频数据来源是什么? - Wouter Dorgelo
我们目前还不支持RTMFP,这是Adobe的P2P协议。但我们将来会支持它。现在,您可以使用Red5与RTMP、RTMPT、RTMPS和RTMPE。 - Paul Gregoire
3个回答

20

Red5支持不同类型的流媒体,因此我不知道您想要哪种类型的流媒体:

  • 视频流媒体(FLV,F4V,MP4)
  • 音频流媒体(MP3,F4A,M4A)
  • 客户端流录制(仅限FLV)

*来源:Red5 on Google Code

您可能想使用HTML5 Video Tag和/或HTML5 Audio Tag来“播放”流。因此,您需要进行一些转换。

音频流

新技术,许多浏览器但尚未具备普遍的编解码器支持。

查看浏览器+支持的编解码器*:

  • FireFox 3.6+
    • Ogg Vorbis
    • Wav
  • Safari 5+
    • MP3
    • WAV
  • Chrome 6
    • Ogg Vorbis
    • MP3
  • Opera 10.5+
    • Ogg Vorbis
    • WAV
  • Internet Explorer 9 (beta)
    • MP3
    • WAV

*来源:Native Audio in the browser

视频流媒体

目前有一场关于HTML5 Video Codec的讨论,涉及Ogg TheoraH.264之间的选择。因此,请将其转换为其中一个格式。我建议使用H.264,因为它看起来像Red5将会在未来实现H.264支持。

与音频一样,视频也是如此。新技术,许多浏览器,但尚无通用编解码器支持。请参见列表:维基百科上的HTML5视频

转换后

检查视频和音频标签的支持最简单的方法是使用脚本动态创建其中一个或两个,并检查函数是否存在:

var hasVideo = !!(document.createElement('video').canPlayType);

这行简单的代码将动态创建一个视频元素并检查是否存在canPlayType()函数。通过使用!!运算符,结果被转换为布尔值,指示是否可以创建视频对象。

或者

您可以提供2个带有Flash回退的流:

<video src="video.ogg">
  <object data="videoplayer.swf" type="application/x-shockwave-flash">
    <param name="movie" value="video.swf"/>
  </object>
</video>

如果浏览器不支持,将默认使用视频标签,否则将使用Flash播放器。


编辑:

我现在知道Red5支持H.264(实时流发布)。在这里阅读如何使用HTML5视频标签与H.264编解码器

您还可能想看看:Adobe的视频播放器小部件


谢谢回答。但是,Red5将如何流传已发送的视频/音频,并以哪种格式发送?谢谢。 - Zakaria
Red5将以h264格式发送流,您可以按照此处描述的方式使用HTML5播放它:http://visitmix.com/LabNotes/HTML5-video-tag-with-H264-codec - Wouter Dorgelo
小部件的链接已经损坏。 - Nathan Osman
它是否支持iPad、iPhone和Android等移动设备? - user2003356
根据这篇文章,从Windows XP到现在的所有Windows版本上,Firefox现在都支持MP3音频流。 https://dev59.com/sG445IYBdhLWcg3wUYrM - Rick Giuly

3
简短回答:不行。浏览器不支持通过RTMP(RTMFP)、RTP或UDP进行流传输。您的流必须通过HTTP发送才能访问(实际上,您必须在服务器上模拟静态文件)。
此外,WebM值得一提。2010年5月,谷歌宣布为HTML5视频目的推出了一种免版税编解码器。截至目前,替代浏览器(Mozilla、Opera、Chrome)的最新版本具有播放功能。只有那些投资良好的H.264的大公司才会抵制。
现在有几个媒体服务器支持WebM。我想第一个实现它的是Flumotion。我也有自己的GPL软件,用于直播WebM,叫做stream.m。这是一个非常早期的版本,但如果您想尝试一下,我不会阻止任何人。 :)

2

RTMFPHTML5(WebRTC或Websocket)协议都在WCS4中得到支持。

因此,您可以将RTMFP流发布到服务器上,并使用Chrome(WebRTC)、Firefox(WebRTC)或iOS Safari浏览器(Websocket)播放此流。

Red5不支持RTMFP

RTMFP是一种点对点设计的协议,但服务器也可以像RTMP一样用作RTMFP节点,因此它可以简单地实现客户端-服务器连接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接