пятница, 29 августа 2014 г.

[XBMC] Коварные субтитры

Столкнулся я с одной проблемкой, решение которой у меня заняло без малого пару дней. Проблемка эта заключалась в том, что я никак не мог привязать внешний файл субтитров к тому, что игралось внутри плеера. Иными словами, вот есть стрим с видео, есть заботливо подготовленный файлик с субтитрами .srt, а всё вместе ну никак не хотело жить - видео есть, субтитров нет.

В XBMC существует метод назначения субтитров и управления ими:

xbmc.Player().setSubtitles()

Казалось бы, что может быть проще? Проинил что следует и запускаем в плеер (в моем случае это был плейлист, содержащий всю информацию по трекам, в т.ч. и служебную), после чего жуём попкорн.

Но нет, субтитры никак не хотели отображаться ни на экране, ни даже в соотв. меню свойств плеера, как я ни бился над проблемой, изгуглив интернет до дыр - к слову сказать, XBMC крайне хреново документирован, большинство информации подчерпывается из форумов, где такие бедолаги, как я, ишут ответы на свои вопросы.

Что ж, в конце концов выход был найден благодаря безызвестному анонимусу, который вскользь заметил, что, оказывается, коварный плеер ничего по медиа не инит до тех пор, пока не открыл это самое медиа и не начал его играть. То есть попусту он ничего не знает о том, что куда назначать, пока не появился хэндл. Наверное, анонимус был одним из разработчиков XBMC :)

Таким образом, применив полученные знания на практике, я написал вот такой код (в реальности он несколько иной, я просто упросил для примера):

 def playMedia(mediafile, subfile):
    player = xbmc.Player()
    player.play(mediafile)
    if len(subfile) > 0:
        for _ in xrange(30):
            if player.isPlaying():
                break
            time.sleep(1)
        player.setSubtitles(subfile)
     return
  

Комментариев нет:

Отправить комментарий