Mas*_*uer 4 vlc transcoding rtsp video-streaming
我正在开发一个需要显示远程桌面流媒体视频的网络应用.我们已经使用ffmpeg/ffserver和flowplayer实现了这一点,将RTSP转码为.flv格式,但它非常脆弱,我的研究使我使用了命令行版本的VLC.
我的问题是:有没有办法将转码后的RTSP(如OGG,RTP或其他格式)传输到浏览器中,同时避免依赖闪存?
我知道标签在很长一段时间内都不支持流媒体视频,但我无法找到一致的文档.有人说你可以直接管道RTP,有人说你永远无法通过标签流.
此外,我目前正在我的本地Apache服务器上测试所有这些.
我假设转码看起来像是:
要么
谢谢 - 梅森
好的,我正在寻找的解决方案以CVLC 2.0.1 [仅限控制台的VLC]的形式出现,但也利用了ffmpeg的多路复用功能.
这个单行代码将RTSP流转码为FLV并将其推送到指定端口的本地主机服务器.
cvlc rtsp://xxx.xxx.xxx.xxx:554/vga.sdp :sout='#transcode{vcodec=FLV1,vb=2048,fps=25,scale=1,acodec=none,deinterlace}:http{mime=video/x-flv,mux=ffmpeg{mux=flv},dst=127.0.0.1:8090/device_1.flv}' :no-sout-standard-sap :ttl=5 :sout-keep :no-audio --video --no-sout-audio
Run Code Online (Sandbox Code Playgroud)
这样做的好处包括每次流更改分辨率,比特率,帧速率等时都不必编辑ffserver.conf文件. - 只需重新启动这一行,以便它可以重新捕获流.此外,如果流具有适当的规范,则不需要vb=和fps=属性; 如果我需要为了网页而节流流,我只会使用它们.
--network-caching 是我考虑的另一个功能,虽然在某些情况下非常有用,但在我的情况下是不必要的.
Flowplayer代码看起来像:
<div style="width:1280px;height:720px;margin:10px" id="player_1"></div><script language="javascript">
flowplayer("player_1", {src: "/js/flowplayer-3.2.7.swf", wmode:"transparent"},{
clip: {
url: 'http://127.0.0.1:8090/device_1.flv',
autoPlay: true,
autoBuffering: true,
live: true,
bufferLength:0
},
plugins: {
controls: {
all: false,
scrubber: true,
play: true,
fullscreen: true,
time: false,
width: '100%',
opacity: 0.8,
tooltips: {
buttons: true,
fullscreen: 'Enter fullscreen mode'
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助任何观众遇到类似的问题!
石匠
| 归档时间: |
|
| 查看次数: |
11076 次 |
| 最近记录: |