自适应视频流媒体码率算法在mininet中仿真

20 篇文章 4 订阅
8 篇文章 2 订阅

Evaluate http dash adaptation algorithms on mininet

 自适应视频流的目标:

The goal of an adaptive video player is to choose the bitrate level for future chunks to deliver the highest possible QoE; e.g., maximizing bitrate while minimizing the likelihood of rebuffering and avoiding too many bitrate switches

 在最大码率的同时最小化二次缓冲可能性和码率切换的约束下,选择合适码率的视频,来尽可能的提高用户的体验。
 目前,已经有很多算法提出。我移植了一些现有的算法,在mininet中对这些算法进行了简单的评估。代码主要参考了两个作者的实现[1,2]。包含的算法有:Festive[3], Panda[4],tobasco[5],osmp[6], raahs[7],fdash[8],sftm[9],svaa[10]。
 仿真拓补:
2h1s.py

#!/usr/bin/python
import time
import sys
import os
import threading
import subprocess
import signal

from mininet.cli import CLI
from mininet.log import lg, info
from mininet.node import Node
from mininet.util import quietRun
from mininet.net import Mininet
from mininet.link import TCLink
from mininet.link import Intf  
from mininet.node import OVSSwitch,Node

def test_adaptation_algorithm(algo):
    bottleneckbw=3
    nonbottlebw=500;
    rtt=40*3/2
    buffer_size =bottleneckbw*1000*rtt/(1500*8) 
    net = Mininet( cleanup=True )
    h1 = net.addHost('h1',ip='10.0.0.1')
    h2 = net.addHost('h2',ip='10.0.0.2')
    s1 = net.addSwitch( 's1' )
    c0 = net.addController('c0')
    net.addLink(h1,s1,intfName1='h1-eth0',intfName2='s1-eth0',cls=TCLink , bw=nonbottlebw, delay='10ms', max_queue_size=10*buffer_size)
    net.addLink(s1,h2,intfName1='s1-eth1',intfName2='h2-eth0',cls=TCLink , bw=bottleneckbw, delay='10ms', max_queue_size=buffer_size)    
    net.build()
    net.start()
    time.sleep(1)
    server_p=h2.popen("./t_dash_server -h 10.0.0.2 -p 3333")
    cmd="./t_dash_client -r 10.0.0.2  -p 3333 -a  %s"%algo
    client_p=h1.popen(cmd);
    possion_p=h2.popen("./possion_sender 10.0.0.1 1234")
    while True:
        ret=subprocess.Popen.poll(client_p)
        if ret is None:
            continue
        else:
            break
    os.killpg(os.getpgid(server_p.pid),signal.SIGTERM)
    os.killpg(os.getpgid(possion_p.pid),signal.SIGTERM)
    server_p.wait()  
    possion_p.wait()
    net.stop()
if __name__ == '__main__':
    algorithms=["festive","panda","tobasco","osmp","raahs","fdash","sftm","svaa"]
    for i in range(len(algorithms)):
        test_adaptation_algorithm(algorithms[i])
        print("done: "+algorithms[i])

 结果:
在这里插入图片描述
在这里插入图片描述
 The code in this blog is available at github[11].
参考:
[1] haraldott dash
[2] djvergad dash
[3] Improving Fairness, Efficiency, and Stability in HTTP-based Adaptive Video Streaming with FESTIVE
[4] Probe and Adapt: Rate Adaptation for HTTP Video Streaming At Scale
[5] Adaptation Algorithm for Adaptive Streaming over HTTP
[6] QDASH: a QoE-aware DASH system
[7] Rate adaptation for adaptive HTTP streaming
[8] FDASH: A Fuzzy-Based MPEG/DASH Adaptation Algorithm
[9] Rate adaptation for dynamic adaptive streaming over HTTP in content distribution network
[10] Towards agile and smooth video adaptation in dynamic HTTP streaming
[11] dash-sim on mininet
[12] 自适应视频流媒体理论控制模型论文理解
[13] 基于机器学习的自适应码率算法的进一步探索与改进

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值