后续行动:RTMP stream plays sound for 1 second, then stops - no video at all
这里的行为真的很奇怪。
我的配置:
jwplayer('canvas').setup({
file : "stream.smil",
width : 1024,
height : 768,
stagevideo : false,
autostart : true
});
stream.smil
:
<smil>
<head>
<meta base="rtmp://192.168.1.160:1340/live/" />
</head>
<body>
<switch>
<video src="large" width="1024" height="768" system-bitrate="2000000" />
<video src="small" width="640" height="480" system-bitrate="800000" />
</switch>
</body>
</smil>
所以,好吧,关闭stagevideo
(GPU渲染)有助于白色视频,但音频问题仍然存在,但我有一些新信息。
我的RTMP服务器是nginx with rtmp module,正在监听1340
(正如smil建议的那样)
我有一台Mobotix IP摄像机输出我用作ffmpeg的输入,然后输入RTMP服务器:
ffmpeg -f mxg -i "http://admin:meinsm@192.168.1.161:80/control/faststream.jpg?stream=MxPEG&needlength" -f flv -ar 44100 -s 1024x768 "rtmp://localhost:1340/live/large"
Chrome,Firefox,Opera,Safari正如预期的那样工作,虽然这是一个完全不同的神奇世界:
我觉得这可能是MxPEG直播流的一个问题,因为它使用了自己的编解码器并且与默认编解码器有一些区别,其中一个是(http://developer.mobotix.com/docs/params.html):
而不是I帧......
使用当前的MxPEG实现,无法告诉编解码器包括完整的JPEG帧,例如,每秒或每20帧。因此,没有其他编解码器知道的I-Frame概念。但是上面描绘的方式,跳回一秒并开始解码,可以作为一种实用的解决方法。
有关于编解码器本身的额外信息here。
虽然,即使存在这样的差异,但这并不能解释为什么只有IE不起作用(但是,如果我在播放器从RTMP读取时重新启动源,则没有问题)。
我在这里找不到线索,我尝试用AAC将FLV编解码器更改为x264 - Chrome,Opera,Firefox,Safari工作,IE没有(不同的问题)。
我还尝试使用相同的RTMP输出选项将ffmpeg静态视频文件作为输入(Blenders的Sintel视频,mp4) - 我遇到了一致的问题,视频在所有浏览器上都很混乱,但确实发挥了作用。
但是,有人可能已经知道这里有什么问题了?
答案 0 :(得分:0)
我发现了问题所在:https://github.com/arut/nginx-rtmp-module/issues/340
实际上,文档甚至表示默认情况下应启用它:https://github.com/arut/nginx-rtmp-module/wiki/Directives#wait_video
是的,显然,如果您正在运行nginx rtmp模块进行RTMP托管,则需要设置:
wait_video on;
在您的RTMP应用程序的配置块中。