GtkMediaStream
GtkMediaStream — Отображение медиа в GTK
Функции
Свойства
| gint64 | duration | Чтение |
| gboolean | ended | Чтение |
| GError * | error | Чтение |
| gboolean | has-audio | Чтение |
| gboolean | has-video | Чтение |
| gboolean | loop | Чтение/Запись |
| gboolean | muted | Чтение/Запись |
| gboolean | playing | Чтение/Запись |
| gboolean | prepared | Чтение/Запись |
| gboolean | seekable | Чтение |
| gboolean | seeking | Чтение |
| gint64 | timestamp | Чтение |
| double | volume | Чтение/Запись |
Типы и значения
Иерархия объектов
GObject
╰── GtkMediaStream
╰── GtkMediaFile
Реализованные интерфейсы
GtkMediaStream реализует GdkPaintable.
Файлы
#include <gtk/gtk.h>
Описание
GtkMediaStream — это точка интеграции для воспроизведения медиа внутри GTK.
GTK предоставляет реализацию интерфейса GtkMediaStream, которая называется GtkMediaFile.
Помимо API для воспроизведения потоков, ориентированных на приложения, GtkMediaStream имеет ряд API, полезных только для реализаций и не предназначенных для использования в приложениях: gtk_media_stream_prepared(), gtk_media_stream_unprepared(), gtk_media_stream_update(), gtk_media_stream_ended(), gtk_media_stream_seek_success(), gtk_media_stream_seek_failed(), gtk_media_stream_gerror(), gtk_media_stream_error(), gtk_media_stream_error_valist().
Функции
gtk_media_stream_is_prepared ()
gboolean
gtk_media_stream_is_prepared (GtkMediaStream *self); Возвращает, завершена ли инициализация потока и известны ли наличие аудио и видео.
Параметры
self |
Возвращает
TRUE если поток подготовлен
gtk_media_stream_get_error ()
const GError *
gtk_media_stream_get_error (GtkMediaStream *self); Если поток находится в состоянии ошибки, возвращает GError, объясняющий это состояние. Любой тип ошибки может быть сообщен здесь в зависимости от реализации потока мультимедиа.
Поток мультимедиа в состоянии ошибки не может быть обработан, вызовы, такие как gtk_media_stream_play() или gtk_media_stream_seek(), не будут иметь никакого эффекта.
GtkMediaStream сам по себе не предоставляет способа сброса ошибки, но реализации могут предоставлять параметры. Например, GtkMediaFile сбросит ошибки, когда новый источник будет установлен с помощью gtk_media_file_set_file().
Параметры
self |
Возвращает
NULL если не в состоянии ошибки или GError потока.
[nullable][transfer none]
gtk_media_stream_has_audio ()
gboolean
gtk_media_stream_has_audio (GtkMediaStream *self); Возвращает, есть ли в потоке аудио.
Параметры
self |
Возвращает
TRUE если в потоке есть аудио
gtk_media_stream_has_video ()
gboolean
gtk_media_stream_has_video (GtkMediaStream *self); Возвращает, есть ли в потоке видео.
Параметры
self |
Возвращает
TRUE если в потоке есть видео
gtk_media_stream_play ()
void
gtk_media_stream_play (GtkMediaStream *self); Начинает воспроизведение потока. Если поток находится в состоянии ошибки или уже воспроизводится, ничего не делает.
Параметры
self |
gtk_media_stream_pause ()
void
gtk_media_stream_pause (GtkMediaStream *self); Приостанавливает воспроизведение потока. Если поток не воспроизводится, ничего не делает.
Параметры
self |
gtk_media_stream_get_playing ()
gboolean
gtk_media_stream_get_playing (GtkMediaStream *self); Возвращает, воспроизводится ли поток в данный момент.
Параметры
self |
Возвращает
TRUE если поток воспроизводится
gtk_media_stream_set_playing ()
void gtk_media_stream_set_playing (GtkMediaStream *self,gboolean playing);
Начинает или приостанавливает воспроизведение потока.
Параметры
self | ||
playing | необходимо ли начать или приостановить воспроизведение |
gtk_media_stream_get_ended ()
gboolean
gtk_media_stream_get_ended (GtkMediaStream *self); Возвращает, завершено ли воспроизведение потоков.
Параметры
self |
Возвращает
TRUE если воспроизведение завершено
gtk_media_stream_get_timestamp ()
gint64
gtk_media_stream_get_timestamp (GtkMediaStream *self); Возвращает текущий временной штамп представления в микросекундах.
Параметры
self |
Возвращает
временной штамп в микросекундах
gtk_media_stream_get_duration ()
gint64
gtk_media_stream_get_duration (GtkMediaStream *self); Получает продолжительность потока. Если продолжительность неизвестна, будет возвращено 0.
Параметры
self |
Возвращает
продолжительность потока или 0, если неизвестна.
gtk_media_stream_is_seekable ()
gboolean
gtk_media_stream_is_seekable (GtkMediaStream *self); Проверяет, может ли поток быть доступен для поиска.
Это должно быть подсказкой. Потоки могут не допускать поиска, даже если эта функция возвращает TRUE. Однако, если эта функция возвращает FALSE, потоки гарантированно не будут доступны для поиска, и пользовательские интерфейсы могут скрывать элементы управления, которые позволяют искать.
Разрешается вызывать gtk_media_stream_seek() в потоке, недоступном для поиска, хотя это ничего не сделает.
Параметры
self |
Возвращает
TRUE если поток может поддерживать поиск
gtk_media_stream_is_seeking ()
gboolean
gtk_media_stream_is_seeking (GtkMediaStream *self); Проверяет, выполняется ли в настоящее время операция поиска.
Параметры
self |
Возвращает
TRUE если выполняется операция поиска.
gtk_media_stream_seek ()
void gtk_media_stream_seek (GtkMediaStream *self,gint64 timestamp);
Начать операцию поиска в self до timestamp . Если timestamp находится вне диапазона, он будет ограничен.
Операции поиска могут не завершаться мгновенно. Пока выполняется операция поиска, свойство GtkMediaStream:seeking будет установлено.
При вызове gtk_media_stream_seek() во время выполнения операции поиска, новый поиск переопределит любой ожидающий поиск.
Параметры
self | ||
timestamp | временной штамп для поиска. |
gtk_media_stream_get_loop ()
gboolean
gtk_media_stream_get_loop (GtkMediaStream *self); Возвращает, установлено ли для потока циклическое воспроизведение. Подробности см. в gtk_media_stream_set_loop().
Параметры
self |
Возвращаемое значение
TRUE если поток должен повторяться
gtk_media_stream_set_loop ()
void gtk_media_stream_set_loop (GtkMediaStream *self,gboolean loop);
Устанавливает, должен ли поток повторяться, т.е. начать воспроизведение с начала вместо остановки в конце.
Не все потоки могут поддерживать циклическое воспроизведение, в частности, потоки без возможности поиска. Эти потоки проигнорируют настройку циклического воспроизведения и просто остановятся.
Параметры
self | ||
loop |
|
gtk_media_stream_get_muted ()
gboolean
gtk_media_stream_get_muted (GtkMediaStream *self); Возвращает, заглушен ли звук для потока. Подробности см. в gtk_media_stream_set_muted().
Параметры
self |
Возвращаемое значение
TRUE если поток заглушен
gtk_media_stream_set_muted ()
void gtk_media_stream_set_muted (GtkMediaStream *self,gboolean muted);
Устанавливает, должен ли поток аудио быть заглушен. Заглушение потока приведет к отсутствию звука, но не изменит громкость. Это означает, что заглушение и затем разглушение потока восстановит настройки громкости.
Если у потока нет аудио, вызов этой функции все равно сработает, но не будет слышно звука.
Параметры
self | ||
muted |
|
gtk_media_stream_get_volume ()
double
gtk_media_stream_get_volume (GtkMediaStream *self); Возвращает громкость аудио для потока. Подробности см. в gtk_media_stream_set_volume().
Параметры
self |
Возвращаемое значение
громкость потока от 0.0 до 1.0
gtk_media_stream_set_volume ()
void gtk_media_stream_set_volume (GtkMediaStream *self,double volume);
Устанавливает громкость аудио потока. Этот вызов функции будет работать даже если поток заглушен.
Указанное volume должно находиться в диапазоне от 0.0 (тишина) до 1.0 (максимальная громкость). Значения вне этого диапазона будут ограничены ближайшим допустимым значением.
Если у потока нет аудио или он заглушен, вызов этой функции все равно сработает, но не даст немедленного звукового эффекта. При разглушении потока новое значение громкости вступит в силу.
Параметры
self | ||
volume | Новая громкость потока от 0.0 до 1.0 |
gtk_media_stream_realize ()
void gtk_media_stream_realize (GtkMediaStream *self,GdkSurface *surface);
Вызывается пользователем для привязки медиа-потока к GdkSurface, которым он управляет. Затем поток может получить доступ к ресурсам surface для целей рендеринга. В частности, медиа-потоки могут захотеть создать GdkGLContexts или синхронизироваться с GdkFrameClock.
Ответственный за вызов этой функции должен вызвать gtk_media_stream_unrealize() до уничтожения потока или surface.
Несколько вызовов этой функции могут произойти от разных пользователей видео, даже с одинаковым surface. Каждый из этих вызовов должен быть последован вызовом gtk_media_stream_unrealize().
Необязательно вызывать эту функцию для работы медиа-потока.
Параметры
self | ||
surface |
gtk_media_stream_unrealize ()
void gtk_media_stream_unrealize (GtkMediaStream *self,GdkSurface *surface);
Отменяет предыдущий вызов gtk_media_stream_realize() и заставляет поток высвободить все ресурсы, выделенные из surface.
Параметры
self | a GtkMediaStream previously realized | |
surface | the GdkSurface the stream was realized with |
gtk_media_stream_prepared ()
void gtk_media_stream_prepared (GtkMediaStream *self,gboolean has_audio,gboolean has_video,gboolean seekable,gint64 duration);
Вызывается реализациями GtkMediaStream для оповещения о готовности потока к воспроизведению и предоставления деталей о потоке.
Обратите внимание, что аргументы являются подсказками. Если реализация потока не может определить правильные значения, лучше действовать с осторожностью и вернуть TRUE. Пользовательские интерфейсы будут использовать эти значения для определения, какие элементы управления отображать.
Эта функция не может быть вызвана снова, пока поток не будет сброшен с помощью gtk_media_stream_unprepared().
Параметры
self | ||
has_audio |
| |
has_video |
| |
seekable |
| |
duration | Продолжительность потока или 0, если неизвестна |
gtk_media_stream_unprepared ()
void
gtk_media_stream_unprepared (GtkMediaStream *self); Сбрасывает реализацию заданного медиа-потока. gtk_media_stream_prepared() теперь можно вызвать снова.
Эта функция также сбросит любое состояние ошибки, в котором находился поток.
Параметры
self |
gtk_media_stream_update ()
void gtk_media_stream_update (GtkMediaStream *self,gint64 timestamp);
Реализации потоков медиа должны регулярно вызывать эту функцию для обновления отметки времени, сообщаемой потоком. Реализации сами решают, с какой частотой это следует делать.
Параметры
self | объект GtkMediaStream | |
timestamp | новая отметка времени |
gtk_media_stream_ended ()
void
gtk_media_stream_ended (GtkMediaStream *self); Приостанавливает поток медиа и отмечает его как завершенный. Это только подсказка, вызовы GtkMediaStream.play() всё ещё могут выполняться.
Параметры
self | объект GtkMediaStream |
gtk_media_stream_seek_success ()
void
gtk_media_stream_seek_success (GtkMediaStream *self); Успешно завершает операцию поиска, начатую с помощью GtkMediaStream.seek(). Эта функция сбросит свойство GtkMediaStream:ended, если оно было установлено.
См. gtk_media_stream_seek_failed() для другого способа завершения поиска.
Параметры
self | объект GtkMediaStream |
gtk_media_stream_seek_failed ()
void
gtk_media_stream_seek_failed (GtkMediaStream *self); Завершает операцию поиска, начатую с помощью GtkMediaStream.seek(), как неудачную. Это не вызовет ошибку в потоке и предполагает, что воспроизведение продолжится так, как если бы поиск не выполнялся.
См. gtk_media_stream_seek_success() для другого способа завершения поиска.
Параметры
self | объект GtkMediaStream |
gtk_media_stream_gerror ()
void gtk_media_stream_gerror (GtkMediaStream *self,GError *error);
Устанавливает self в состояние ошибки. Это приостановит поток (вы можете проверить ошибку с помощью gtk_media_stream_get_error() в вашей реализации GtkMediaStream.pause()), прервёт ожидающие запросы поиска и отметит поток как подготовленный.
Если поток уже находится в состоянии ошибки, этот вызов будет проигнорирован, и существующая ошибка сохранится. FIXME: Или мы хотим установить новую ошибку?
Чтобы сбросить ошибку, поток должен быть сброшен с помощью вызова gtk_media_stream_unprepared().
Параметры
self | объект GtkMediaStream | |
error | объект GError. | [transfer full] |
gtk_media_stream_error ()
void gtk_media_stream_error (GtkMediaStream *self,GQuark domain,int code,const char *format,...);
Устанавливает self в состояние ошибки, используя строку формата в стиле printf().
Это вспомогательная функция, которая вызывает gtk_media_stream_gerror(). См. эту функцию для получения подробностей.
Параметры
self | объект GtkMediaStream | |
domain | область ошибки | |
code | код ошибки | |
format | строка формата в стиле printf() для сообщения об ошибке | |
... | параметры для формата сообщения |
gtk_media_stream_error_valist ()
void gtk_media_stream_error_valist (GtkMediaStream *self,GQuark domain,int code,const char *format,va_list args);
Устанавливает self в состояние ошибки, используя строку формата в стиле printf().
Это вспомогательная функция, которая вызывает gtk_media_stream_gerror(). См. эту функцию для получения подробностей.
Параметры
self | объект GtkMediaStream | |
domain | область ошибки | |
code | код ошибки | |
format | строка формата в стиле printf() для сообщения об ошибке | |
args | va_list параметров для формата сообщения |
Типы и значения
GtkMediaStream
typedef struct _GtkMediaStream GtkMediaStream;
struct GtkMediaStreamClass
struct GtkMediaStreamClass {
GObjectClass parent_class;
gboolean (* play) (GtkMediaStream *self);
void (* pause) (GtkMediaStream *self);
void (* seek) (GtkMediaStream *self,
gint64 timestamp);
void (* update_audio) (GtkMediaStream *self,
gboolean muted,
double volume);
void (* realize) (GtkMediaStream *self,
GdkSurface *surface);
void (* unrealize) (GtkMediaStream *self,
GdkSurface *surface);
/* Padding for future expansion */
void (*_gtk_reserved1) (void);
void (*_gtk_reserved2) (void);
void (*_gtk_reserved3) (void);
void (*_gtk_reserved4) (void);
void (*_gtk_reserved5) (void);
void (*_gtk_reserved6) (void);
void (*_gtk_reserved7) (void);
void (*_gtk_reserved8) (void);
};
Подробное описание свойств
Свойство “duration”
“duration” gint64
Продолжительность потока в микросекундах или 0, если неизвестна.
Владелец: GtkMediaStream
Флаги: Чтение
Допустимые значения: >= 0
Значение по умолчанию: 0
Свойство “ended”
“ended” gboolean
Устанавливается, когда воспроизведение завершено.
Владелец: GtkMediaStream
Флаги: Чтение
Значение по умолчанию: FALSE
Свойство “error”
“error” GError *
NULL для правильно работающего потока или GError, в котором находится поток.
Владелец: GtkMediaStream
Флаги: Чтение
Свойство “has-audio”
“has-audio” gboolean
Содержит ли поток аудио
Владелец: GtkMediaStream
Флаги: Чтение
Значение по умолчанию: FALSE
Свойство “has-video”
“has-video” gboolean
Содержит ли поток видео
Владелец: GtkMediaStream
Флаги: Чтение
Значение по умолчанию: FALSE
Свойство “loop”
“loop” gboolean
Попытаться перезапустить медиа с начала, после того как оно закончилось.
Владелец: GtkMediaStream
Флаги: Чтение/Запись
Значение по умолчанию: FALSE
Свойство “muted”
“muted” gboolean
Должен ли аудиопоток быть выключен.
Владелец: GtkMediaStream
Флаги: Чтение/Запись
Значение по умолчанию: FALSE
Свойство “playing”
“playing” gboolean
Сейчас ли поток воспроизводится.
Владелец: GtkMediaStream
Флаги: Чтение/Запись
Значение по умолчанию: FALSE
Свойство “prepared”
“prepared” gboolean
Завершил ли поток инициализацию и известны ли аудио и видео.
Владелец: GtkMediaStream
Флаги: Чтение/Запись
Значение по умолчанию: FALSE
Свойство “seekable”
“seekable” gboolean
Устанавливается, если известно, что поток поддерживает поиск.
Владелец: GtkMediaStream
Флаги: Чтение
Значение по умолчанию: TRUE
Свойство “seeking”
“seeking” gboolean
Устанавливается во время поиска.
Владелец: GtkMediaStream
Флаги: Чтение
Значение по умолчанию: FALSE
Свойство “timestamp”
“timestamp” gint64
Текущая временная метка представления в микросекундах.
Владелец: GtkMediaStream
Флаги: Чтение
Допустимые значения: >= 0
Значение по умолчанию: 0
Свойство “volume”
“volume” double
Громкость аудиопотока.
Владелец: GtkMediaStream
Флаги: Чтение/Запись
Допустимые значения: [0,1]
Значение по умолчанию: 1
См. также
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkMediaStream.html