def select_player():
    log.startLogging(sys.stdout)

    persistent_conn = True
    check_warning_buffering = True

    #MediaEngine
    if options['media_engine'] == 'gst':
        #gst_init()
        from media_engines.GstMediaEngine import GstMediaEngine
        media_engine = GstMediaEngine(decode_video=True)
    elif options['media_engine'] == 'nodec':
        #gst_init()
        from media_engines.GstMediaEngine import GstMediaEngine
        media_engine = GstMediaEngine(decode_video=False)
    elif options['media_engine'] == 'fake':
        from media_engines.FakeMediaEngine import FakeMediaEngine
        media_engine = FakeMediaEngine()
    else:
        print 'Error. Unknown Media Engine'
        sys.exit()

    from twisted.internet import reactor

    #Controller
    if options['controller'] == 'conventional':
        from controllers.ConventionalController import ConventionalController
        controller = ConventionalController()
    elif options['controller'] == 'tobasco':
        from controllers.TOBASCOController import TOBASCOController
        controller = TOBASCOController()
    elif options['controller'] == 'max':
        check_warning_buffering = False
        from controllers.MaxQualityController import MaxQualityController
        controller = MaxQualityController()
    elif options['controller'] == 'BBA0':
        from controllers.BBA0Controller import BBA0Controller
        controller = BBA0Controller()
    elif options['controller'] == 'BBA2':
        from controllers.BBA2Controller import BBA2Controller
        controller = BBA2Controller()
    else:
        print 'Error. Unknown Control Algorithm'
        sys.exit()

    if not options['log_sub_dir']:
        log_sub_dir = options['controller']
    else:
        log_sub_dir = options['log_sub_dir']

    #Parser
    url_playlist = options['url']
    if ".mpd" in url_playlist:
        from parsers.DASH_mp4Parser import DASH_mp4Parser
        parser = DASH_mp4Parser(url_playlist)
    elif ".m3u8" in url_playlist:
        from parsers.HLS_mpegtsParser import HLS_mpegtsParser
        parser = HLS_mpegtsParser(url_playlist)
    else:
        print 'Error. Unknown Parser'
        sys.exit()

    #StartPlayer
    from TapasPlayer import TapasPlayer
    player = TapasPlayer(controller=controller,
                         parser=parser,
                         media_engine=media_engine,
                         log_sub_dir=log_sub_dir,
                         log_period=0.1,
                         max_buffer_time=80,
                         inactive_cycle=1,
                         initial_level=0,
                         use_persistent_connection=persistent_conn,
                         check_warning_buffering=check_warning_buffering,
                         stress_test=options['stress_test'])
    #print 'Ready to play'
    player.play()

    try:
        reactor.run()
    except Exception, e:
        pass
Beispiel #2
0
def select_player():
    log.startLogging(sys.stdout)

    persistent_conn = False
    check_warning_buffering = False

    mqtime = 1
    if float(options['min_queue_time']) >= 0:
        mqtime = float(options['min_queue_time'])

    #MediaEngine
    if options['media_engine'] == 'gst':
        #gst_init()
        from media_engines.GstMediaEngine import GstMediaEngine
        media_engine = GstMediaEngine(decode_video=True, min_queue_time=mqtime)
    elif options['media_engine'] == 'nodec':
        #gst_init()
        from media_engines.GstMediaEngine import GstMediaEngine
        media_engine = GstMediaEngine(decode_video=False,
                                      min_queue_time=mqtime)
    elif options['media_engine'] == 'fake':
        from media_engines.FakeMediaEngine import FakeMediaEngine
        media_engine = FakeMediaEngine(min_queue_time=mqtime)
    else:
        print 'Error. Unknown Media Engine'
        sys.exit()

    from twisted.internet import reactor

    #Controller
    if options['controller'] == 'conventional':
        from controllers.ConventionalController import ConventionalController
        controller = ConventionalController()
        controller.setIdleDuration(4)
    elif options['controller'] == 'tobasco':
        from controllers.TOBASCOController import TOBASCOController
        controller = TOBASCOController()
    elif options['controller'] == 'max':
        check_warning_buffering = False
        from controllers.MaxQualityController import MaxQualityController
        controller = MaxQualityController()
    else:
        print 'Error. Unknown Control Algorithm'
        sys.exit()

    if not options['log_sub_dir']:
        log_sub_dir = options['controller']
    else:
        log_sub_dir = options['log_sub_dir']

    #Parser
    url_playlist = options['url']
    if ".mpd" in url_playlist:
        from parsers.DASH_mp4Parser import DASH_mp4Parser
        parser = DASH_mp4Parser(url_playlist)
    elif ".m3u8" in url_playlist:
        from parsers.HLS_mpegtsParser import HLS_mpegtsParser
        parser = HLS_mpegtsParser(url_playlist)
    else:
        print 'Error. Unknown Parser'
        sys.exit()

    p = 40
    if float(options['max_buffer_time']) >= 0:
        p = float(options['max_buffer_time'])

    #StartPlayer
    from TapasPlayer import TapasPlayer
    player = TapasPlayer(controller=controller,
                         parser=parser,
                         media_engine=media_engine,
                         log_sub_dir=log_sub_dir,
                         log_period=1,
                         max_buffer_time=p,
                         inactive_cycle=1,
                         initial_level=0,
                         use_persistent_connection=persistent_conn,
                         check_warning_buffering=check_warning_buffering,
                         stress_test=options['stress_test'])

    if options['bw_var'] is not None:
        player.setBandwidthVariation(options['bw_var'])

    #print 'Ready to play'
    player.play()

    from twisted.internet import task

    def check_stop_flag():
        if player.isTerminated():
            reactor.stop()

    lc = task.LoopingCall(check_stop_flag)
    lc.start(3)

    try:
        reactor.run()
    except Exception as e:
        print str(e)
        player.terminated = True
Beispiel #3
0
def select_player():
    # try:
    log.startLogging(sys.stdout)

    persistent_conn = False
    check_warning_buffering = True

    # vr
    HMDEmulator = None
    vr = options['vr']
    if (vr and vr.startswith('T')):
        vr = True
        from hmdEmulator.HMDEmulator import HMDEmulator
        hmd_trace = options['hmd_trace']
        HMDEmulator = HMDEmulator(hmd_trace)

    else:
        vr = False

    save_chunks = options['save_chunks']
    if (save_chunks and save_chunks.startswith('T')):
        save_chunks = True
    else:
        save_chunks = False

    # MediaEngine
    if options['media_engine'] == 'dec':
        # gst_init()
        from media_engines.GstMediaEngine import GstMediaEngine
        media_engine = GstMediaEngine(decode_video=True,
                                      vr=vr,
                                      HMDEmulator=HMDEmulator)
    elif options['media_engine'] == 'nodec':
        # gst_init()
        from media_engines.GstMediaEngine import GstMediaEngine
        media_engine = GstMediaEngine(decode_video=False,
                                      vr=vr,
                                      HMDEmulator=HMDEmulator)
    elif options['media_engine'] == 'fake':
        from media_engines.FakeMediaEngine import FakeMediaEngine
        media_engine = FakeMediaEngine()
    else:
        print('Error. Unknown Media Engine')
        sys.exit()

    from twisted.internet import reactor

    # Controller
    if options['controller'] == 'conventional':
        from controllers.ConventionalController import ConventionalController
        controller = ConventionalController()
    else:
        print('Error. Unknown Control Algorithm')
        sys.exit()

    if not options['log_sub_dir']:
        log_sub_dir = options['controller']
    else:
        log_sub_dir = options['log_sub_dir']

        # View Controller
    if options['view_controller'] == 'conventional':
        from viewControllers.ConventionalViewController import ConventionalViewController
        view_controller = ConventionalViewController()
    else:
        print('Error. Unknown Viewport Control Algorithm')
        sys.exit()

    # Parser
    url_playlist = options['url']

    if ".mpd" in url_playlist:
        from parsers.DASH_mp4Parser import DASH_mp4Parser
        parser = DASH_mp4Parser(url_playlist)
    elif ".m3u8" in url_playlist:
        from parsers.HLS_mpegtsParser import HLS_mpegtsParser
        parser = HLS_mpegtsParser(url_playlist)
    else:
        print('Error. Unknown Parser')
        sys.exit()

    # set max_buffer_time
    if options['controller'] == 'bba0':
        mbt = 240
    else:
        mbt = 80

    # StartPlayer
    from TapasPlayer import TapasPlayer
    player = TapasPlayer(controller=controller,
                         view_controller=view_controller,
                         parser=parser,
                         media_engine=media_engine,
                         log_sub_dir=log_sub_dir,
                         log_period=0.1,
                         max_buffer_time=mbt,
                         inactive_cycle=1,
                         initial_level=1,
                         use_persistent_connection=persistent_conn,
                         check_warning_buffering=check_warning_buffering,
                         stress_test=options['stress_test'],
                         HMDEmulator=HMDEmulator,
                         vr=vr,
                         save_chunks=save_chunks)
    print('Ready to play')

    # try:
    player.play()
    # except Exception, e:
    #    print(">>>>>>>>>>>> EXCEPTION: " + str(e))
    #    sys.exit(1)#HARD, better to do return

    try:
        reactor.run()
    except Exception as e:
        print(str(e))
        traceback.print_exc()
        pass