PasLibVlc. Список воспроизведения

В предыдущих статьях по PasLibVlc рассматривалось воспроизведение только отдельно взятых файлов, но VLC SDK позволяет воспроизводить также целые подборки файлов в виде списков воспроизведения.

В PasLibVlc работа со списками воспроизведения реализована в виде не визуального компонента TPasLibVlcMediaList.

Этот компонент хранит пути к файлам, которые входят в список, и обеспечивает функционал по управлению их воспроизведением. Сам TPasLibVlcMediaList файлы не воспроизводит. Воспроизведение осуществляется с помощью компонента TPasLibVlcPlayer (уже хорошо знакомого по предыдущим статьям), который указывается в свойстве Player. Поэтому, если при воспроизведении отдельных файлов было достаточно только одного TPasLibVlcPlayer, то при необходимости воспроизведения списка оба компонента PasLibVlc работают совместно.

Добавление файлов в список и их удаление из списка

Для добавления файла в список используется метод Add, который принимает путь к файлу в виде строкового параметра. Это очень удобно при добавлении файла с помощью компонента.

Если необходимо добавить файл в середину списка, то для этого предназначен метод Insert. Этот метод принимает 2 параметра порядковый номер файла в списке (нумерация производится от нуля) после которого требуется вставить новый файл и собственно путь к файлу.

Для удаления файлов из списка предназначен метод Delete, который принимает в качестве параметра порядковый номер файла, который нужно удалить.

Воспроизведение файлов в списке

Для воспроизведения файлов в списке служат четыре простых метода, которые не принимают никаких параметров: Play, Next, Prev, Pause и Stop.

Назначение методов Play,Pause и Stop аналогично одноимённым методам компонента TPasLibVlcPlayer, которые были рассмотрены в статье посвящённой созданию простейшего плеера. Методы Next и Prev предназначены для перехода к следующему и предыдущему файлам в списке соотвественно.

Циклическое воспроизведение

Циклическим воспроизведением управляют три метода: SetPlayModeLoop, SetPlayModeRepeat и SetPlayModeNormal.

Метод SetPlayModeLoop включает режим циклического воспроизведения для всего списка. Метод SetPlayModeRepeat включает циклическое воспроизведение для файла, который воспроизводится в данный момент. Метод SetPlayModeNormal включает режим воспроизведения по умолчанию.

Все три метода управления циклическим воспроизведением не принимают никаких параметров.

Особенности визуального отображения списка воспроизведения

Как уже говорилось выше компонент TPasLibVlcMediaList не визуальный. Поэтому для того чтобы обеспечить визуальное отображение содержимого списка необходимо использовать дополнительные визуальные компоненты. Например, TListBox.

К сожалению, в отличие от большинства компонентов работающих с коллекциями у TPasLibVlcMediaList нет прямого доступа к элементам списка воспроизведения (как, например, Items у того же TListBox). Поэтому, для того чтобы получить путь к тому или иному файлу из списка воспроизведения необходимо использовать метод Get, который возвращает элемент списка воспроизведения по порядковому номеру.

Вследствие этого, отображение списка воспроизведения из TPasLibVlcMediaList в TListBox выглядит, примерно, следующим образом:

Разрабатывать графический интерфейс для работы со списком также не очень удобно. Если при воспроизведении выбранного файла ещё можно обойтись свойством ItemIndex компонента TListBox в сочетании с методом Get, то для более сложных задач (сортировка списка, перемещение элементов и т.д.), в силу практически полного отсутствия инструментов для работы со списком как таковым, требуется писать собственное решение.

Также стоит отметить, отсутствие поддержки символов русского алфавита в именах файлов. В результате, русскоязычные имена отображаются в закодированном виде (см. скриншот ниже).

Это обстоятельство необходимо учитывать при разработке графического интерфейса. И, по возможности, избегать загрузки элементов списка воспроизведения для отображения из TPasLibVlcMediaList, а использовать другие способы решения данной задачи. Например, добавлять полный путь в TPasLibVlcMediaList, а имя файла в TListBox.

В этом случае имя файла будет отображаться корректно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *