对于学校,我需要建立一个HTML5直播网站。他们有一个他们一直在使用的闪存流播放器,但现在他们希望它使用HTML5。我怎样才能做到这一点?我尝试使用视频标签,但我无法使用它。以下是我的代码。有人能指出我正确的方向吗?
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Deltion Live Streaming</title>
<script language="javascript" type="text/javascript" src="../swfobject.js"></script>
</head>
<body>
<video id="movie" width="460" height="306" preload autoplay>
<source src="rtmp://fl2.sz.xlcdn.com:80/sz=Deltion_College=lb1" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
<!-- HERE THE CODE FOR THE ALTERNATIVE PLAYER (FLASH) WILL BE! -->
</video>
</body>
</html>
答案 0 :(得分:19)
可能的替代方案:
使用编码器(例如VLC或FFmpeg)对输入流进行打包 到OGG格式。例如,在这种情况下,我使用VLC进行打包 使用此代码的屏幕捕获设备:
C:\ Program Files \ VideoLAN \ VLC \ vlc.exe -I虚拟屏幕:// :screen-fps = 16.000000:screen-caching = 100 :SOUT =#{转码了vcodec =西奥,VB = 800,标度= 1,宽度= 600,高度= 480,acodec = MP3}:HTTP {MUX = OGG,DST = 127.0.0.1:8080 / desktop.ogg} :no-sout-rtp-sap:no-sout-standard-sap:ttl = 1:sout-keep
将此代码嵌入HTML页面中的<video>
标记中,如下所示:
<video id="video" src="http://localhost:8080/desktop.ogg" autoplay="autoplay" />
这应该可以解决问题。但是它的性能很差,AFAIK MP4容器类型应该比OGG在浏览器中有更好的支持。
答案 1 :(得分:14)
现在它只适用于某些浏览器, 并且据我所知,你实际上没有链接到文件, 所以这可以解释为什么它不玩。
但是你想要一个直播(我还没有测试过)
答案 2 :(得分:11)
通过使用Media Source Extensions(MSE) - 相对较新的W3C标准,可以在HTML5中实时流式传输:https://www.w3.org/TR/media-source/
MSE是HTML5 <video>
标记的扩展;网页上的javascript可以从服务器获取音频/视频片段并将其推送到MSE进行播放。提取机制可以通过HTTP请求(MPEG-DASH)或WebSockets完成。截至2016年9月,所有设备上的所有主流浏览器都支持MSE。 iOS是唯一的例外。
对于高延迟(5秒以上)HTML5直播视频流,您可以考虑通过video.js或Wowza流媒体引擎实现MPEG-DASH实现。
对于低延迟,接近实时的HTML5直播视频流,请查看EvoStream媒体服务器,虚幻媒体服务器和WebRTC。
答案 3 :(得分:7)
在HTML 5中无法使用RTMP协议,因为RTMP协议仅在服务器和 flash 播放器之间使用。因此,您可以使用其他流媒体协议来查看HTML 5中的流媒体视频。
答案 4 :(得分:7)
首先,您需要设置媒体流服务器。您可以使用Wowza,red5或nginx-rtmp-module。阅读他们在您想要的OS上的文档和设置。 所有引擎都支持HLS(由Apple开发的Http Live Stream协议)。您应该阅读配置文档。 使用nginx-rtmp-module的示例:
rtmp {
server {
listen 1935; # Listen on standard RTMP port
chunk_size 4000;
application show {
live on;
# Turn on HLS
hls on;
hls_path /mnt/hls/;
hls_fragment 3;
hls_playlist_length 60;
# disable consuming the stream from nginx as rtmp
deny play all;
}
}
}
server {
listen 8080;
location /hls {
# Disable cache
add_header Cache-Control no-cache;
# CORS setup
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
add_header 'Access-Control-Allow-Headers' 'Range';
# allow CORS preflight requests
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Range';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /mnt/;
}
}
服务器设置完成后配置成功。你必须使用一些rtmp编码器软件(OBS,wirecast ...)来开始像youtube或twitchtv一样流式传输。
在客户端(您的情况下为浏览器),您可以使用Videojs或JWplayer为最终用户播放视频。您可以为Videojs执行以下操作:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Live Streaming</title>
<link href="//vjs.zencdn.net/5.8/video-js.min.css" rel="stylesheet">
<script src="//vjs.zencdn.net/5.8/video.min.js"></script>
</head>
<body>
<video id="player" class="video-js vjs-default-skin" height="360" width="640" controls preload="none">
<source src="http://localhost:8080/hls/stream.m3u8" type="application/x-mpegURL" />
</video>
<script>
var player = videojs('#player');
</script>
</body>
</html>
您不需要像Flash一样添加其他插件(因为我们使用HLS而不是rtmp)。这个播放器可以通过闪存在跨浏览器上很好地工作。
答案 5 :(得分:3)
您可以使用精彩的图书馆名称Videojs。您将在此处找到更多有用的信息。但是快速启动你可以做到这样的事情:
<link href="//vjs.zencdn.net/5.11/video-js.min.css" rel="stylesheet">
<script src="//vjs.zencdn.net/5.11/video.min.js"></script>
<video
id="Video"
class="video-js vjs-default-skin vjs-big-play-centered"
controls
preload="none"
width="auto"
height="auto"
poster="poster.jpg"
data-setup='{"techOrder": ["flash", "html5", "other supported tech"], "nativeControlsForTouch": true, "controlBar": { "muteToggle": false, "volumeControl": false, "timeDivider": false, "durationDisplay": false, "progressControl": false } }'
>
<source src="rtmp://{domain_server}/{publisher}" type='rtmp/mp4'/>
</video>
<script>
var player = videojs('Video');
player.play();
</script>
答案 6 :(得分:2)
使用ffmpeg + ffserver。有用!!! 您可以从ffmpeg.org获取ffserver的配置文件,并相应地设置值。
答案 7 :(得分:-8)
<object classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"
height="285" id="mediaPlayer" standby="Loading Microsoft Windows Media Player components..."
type="application/x-oleobject" width="360" style="margin-bottom:30px;">
<param name="fileName" value="mms://my_IP_Address:my_port" />
<param name="animationatStart" value="true" />
<param name="transparentatStart" value="true" />
<param name="autoStart" value="true" />
<param name="showControls" value="true" />
<param name="loop" value="true" />
<embed autosize="-1" autostart="true" bgcolor="darkblue" designtimesp="5311" displaysize="4"
height="285" id="mediaPlayer" loop="true" name="mediaPlayer" pluginspage="http://microsoft.com/windows/mediaplayer/en/download/"
showcontrols="true" showdisplay="0" showstatusbar="-1" showtracker="-1" src="mms://my_IP_Address:my_port"
type="application/x-mplayer2" videoborder3d="-1" width="360"></embed>
</object>