M3U8 和 Linux tc 中定义的 BANDWIDTH

The defined BANDWIDTH in M3U8 and Linux tc

我有以下m3u8文件

#EXTM3U
#EXT-X-VERSION:7
#EXT-X-STREAM-INF:BANDWIDTH=87835,RESOLUTION=426x240,CODECS="avc1.640015"
240-34/media_0.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=177512,RESOLUTION=426x240,CODECS="avc1.640015"
240-28/media_0.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=267977,RESOLUTION=854x480,CODECS="avc1.640015"
480-34/media_0.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=499454,RESOLUTION=1280x720,CODECS="avc1.640015"
720-34/media_0.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=957645,RESOLUTION=1920x1080,CODECS="avc1.640015"
1080-34/media_0.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1903257,RESOLUTION=1920x1080,CODECS="avc1.640015"
1080-28/media_0.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3907896,RESOLUTION=1920x1080,CODECS="avc1.640015"
1080-22/media_0.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=8265879,RESOLUTION=1920x1080,CODECS="avc1.640015"
1080-16/media_0.m3u8

我想运行一个Linux tc命令为之前文件中定义的每个带宽调整带宽,但我不确定带宽值是bps还是kbps。

例如,我想 运行 一个 tc 命令用于以下

#EXT-X-STREAM-INF:BANDWIDTH=87835,RESOLUTION=426x240,CODECS="avc1.640015"
240-34/media_0.m3u8

哪个命令是正确的

tc qdisc add dev eth1 root tbf rate 87835kbit burst 16kbit latency 2ms

tc qdisc add dev eth1 root tbf rate 87835 burst 16kbit latency 2ms

4.3.4.2. EXT-X-STREAM-INF of the HLS RFC节说

      BANDWIDTH

      The value is a decimal-integer of bits per second.  It represents
      the peak segment bit rate of the Variant Stream.

所以它是 bps,您只需将 87835 作为 rate 参数传递给您的 tc 命令。

取决于你想做什么,请注意它被定义为 peak 比特率而不是 average 位率。