vlc 播放ts网络流和hls网络流 进度条时间不显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vlc 播放ts网络流和hls网络流 进度条时间不显示相关的知识,希望对你有一定的参考价值。

vlc播放ts流进度条失效,不显示时间

参考技术A 、转发服务端设置

首先将一个性能好的电脑作为转发服务器,运行VLC Media Player软件,在菜单栏里,通过[文件]→[打开文件],选择[网络],选“HTTP/HTTPS/FTP/MMS”传输协议,在网址填写框内填写需要播放卫星节目的网址,网上的教程均介绍应该填写“ xxx/video.m3u”,但发现不能成功,正确的方式应该填写卫星节目的详细网址,这就和在WEB页面调用VLC Media Player软件时,必须先下载后方能播放成功是一样的道理。

如何知道卫星节目的详细网址呢?以我们转发70.5°E的“Trace TV”音乐频道为例,具体方法如下:

首先进入DM500S接收机的WEB管理控制界面,选择“Trace TV”频道,点击“VLC”,待下载完成后点击播放,此时出现VLC Media Player软件播放该频道的界面。在菜单栏里,通过[查看]→[串流及媒体信息],选择[一般]。

复制“URI”栏目内的网址(注:“URI”应该为“URL”,汉化错误),粘贴到[文件] →[打开文件] →[网络] →[网址]框内,再将[串流/保护]前选项框内打“√”,即可点击“设置”按钮。

进入[串流输出]设置界面。

首先选择[输出]方式,这里选用MMSH协议,地址栏填写转发服务端的IP地址“192.168.1.2”。然后选择[封装方法],一般选用ASF,也可采用MP4、WAV封装方法,不过只能采用MMSH协议输出,如果采用HTTP协议输出,则客户端播放没有画面。

通过VLC串流转码。实际上就是VLC Media Player解码DM500S的TS流,然后VLC Media Player又重新封装打包并且传回网络的过程,这个封装方式可以在[转码选项]中自行变更。在[转码选项]中,选择视频编码器、音频编码器的编码格式时,应考虑客户端有无相应的解码包。一般视频编码器可选择常用的WMV1、WMV2格式,音频编码器选用MP3格式。比特率的选择应考虑网络带宽及转发服务器的性能,在条件允许的情况下,选择较大的比特率有利于画质和音质的提高。选择时注意,视频编码器中的“尺寸”是指播放画面的大小;音频编码器中的“频道”为汉化错误,应该为“声道”,通常选择“2”,表示双声道。

以上的设置完成后,按两次“确定”后退出设置界面,此时VLC Media Player播放器底端会有计时器出现,说明软件已开始进行串流发送。至于成功不成功,我们可以通过菜单栏[查看]→[串流及媒体信息]→[Statistics]来查看。

在下面的[串流]区域内,已有各项发送数据统计数字,表示转发功能正常。注意:在转发时,VLC Media Player软件是没有画面显示和声音输出的,因此其视频和音频区域的“已显示的帧”和“已播放的缓冲器”的统计数字均为“0”。

2、客户端播放

由于转发服务端采用MMSH协议输出,因此只要打开Windows Media Player播放软件,通过[文件]→[打开URL],输入mms://192.168.1.2:1234或,播放软件经过片刻的连接和缓冲后,就可观看节目了,界面的最下方为播放速率。注意:如果转发服务端采用HTTP协议输出,则客户端只能输入地址。

3、使用注意事项

采用该方案关键是转发服务端设置,如果客户端无法播放,首先应该检查转发服务器有无串流输出。对于客户端只有伴音输出而没有画面播出的,则应该检查所选用的输出协议是否正确,其次是所选的视频编码器在客户端有无相应的解码包。

对于广播来讲,它是一种同时向大量客户传输数据的方法。在广播时,是通过使用广播发布点来实现的。在我们上面所介绍的两种方案中,广播发布点就是客户端要输入网址和端口号。使用广播方案时,接收广播的客户端是不能切换频道的,只能是播什么看什么。当服务端(DM500S)或转发服务端(台式机)换机时,客户端(笔记本电脑)软件需要重新启动播放功能。

带有 HLS 冗余流和不良网络的奇怪 AVPlayer 行为

【中文标题】带有 HLS 冗余流和不良网络的奇怪 AVPlayer 行为【英文标题】:Strange AVPlayer behavior with HLS redundant streams and bad network 【发布时间】:2019-06-28 11:15:51 【问题描述】:

我有一个可以播放视频 HLS 流的应用。 HLS 主播放列表包含冗余流以提供备份服务

看起来像这样:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1500000,RESOLUTION=638x480
https://example.com/playlist.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1564000,RESOLUTION=638x480
https://example.com/playlist.m3u8?redundant=1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1564000,RESOLUTION=638x480
https://example.com/playlist.m3u8?redundant=2
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1564000,RESOLUTION=638x480
https://example.com/playlist.m3u8?redundant=3

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=638x480
https://example.com/playlist_lq.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=638x480
https://example.com/playlist_lq.m3u8?redundant=1
....
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=638x480
https://example.com/playlist_lq.m3u8?redundant=5

因此,我决定测试一下这种设置在网络状况不佳的情况下如何运行。为此,我使用了网络链接调节器的 3G 预设,它提供了 750kbs 的下载带宽。当然,我希望 400kbs 视频的播放相对流畅,但可惜的是,完全加载测试剪辑需要 60 秒(总大小为 800kb)。

我注意到 AVPlayer 发送所有列出的冗余播放列表的请求(每个带宽我有 5 个)。如果我删除它们并且每个带宽只保留 1 个媒体播放列表 - 视频会在 10 秒内加载,并且播放时不会出现卡顿。

看起来 AVPlayer 尝试在处理主视频负载的同时处理所有冗余链接,并且严重阻塞。

有没有什么办法可以限制 AVPlayer 的这种行为,并迫使他仅在实际加载错误的情况下才使用冗余流? 知道为什么它会尝试加载所有这些吗?也许一些 HLS 标签可以提供帮助?

它有时会在控制台中显示这样的错误:

OptimizedCabacDecoder::UpdateBitStreamPtr bitstream parsing error!!!!!!!!!!!!!!

我找不到太多关于它的信息

【问题讨论】:

【参考方案1】:

问题在于 BANDWIDTH 值设置不正确,如果当前属性与 m3u8 值不匹配,AVPlayer 有一些模糊逻辑会切换冗余流

【讨论】:

以上是关于vlc 播放ts网络流和hls网络流 进度条时间不显示的主要内容,如果未能解决你的问题,请参考以下文章

VLC 播放器的推流和拉流方法

VLC 播放器的推流和拉流方法

HLS点播实现(H.264和AAC码流)

如何在 VLC 中播放 HLS 流

实时播放接收到的TS流,怎么设置vlc控件

使用VLC发送TS流与播放TS流