Video player — version history
A video player with its own themed transport bar — local files streamed by the DLL or https URLs, subtitles, full screen, chapters, markers, playlist and frame capture. Introduced in 3.0.
4.0 — October 2026 #
New #
ue_failednow says why a film does not play, through aREASON_*constant (REASON_INSECURE,REASON_FORMAT,REASON_NOT_FOUND,REASON_NETWORK,REASON_DECODE…)..mkvand.movfiles are served and played when the engine decodes them;.avi,.wmvand.flvare refused by name (REASON_FORMAT).- Subtitles given by URL are downloaded by the component and shown (the server must allow CORS); a refusal raises the new
ue_subtitles_failedevent.of_remove_subtitlesremoves a language's track. ib_pause_when_hidden(true by default): a film playing in a component that becomes hidden (another tab selected) pauses, raisesue_pausedand waits forof_play.ue_muted_changed(ab_on): the user muted or unmuted the sound (the bar's speaker, the M key), as volume and speed already had their event.of_capturewrites a real JPEG for a.jpgpath, and theof_capture(as_path, al_max_width)overload scales the image down.ue_buffering(ab_on)andof_is_buffering(): the film runs but waits for its data (a slow network, a jump far into a film from a URL); a ring in the theme's accent turns on the picture meanwhile.
Fixed #
ue_startedis raised at each new playback (afterof_stopor the end of the film, thenof_play), no longer once per source; resuming a pause does not raise it.- Changing film (
is_source,of_play(source)) takes away the old film's segment, subtitles, markers and chapters; set before any film, they wait for the first one; a playlist film keeps its own subtitles. of_add_sourcewhile anis_sourceis set starts the list at once (unless the set film is playing: the list then follows it), andof_nextno longer jumps to the first film.of_playon a film in error raisesue_failedagain instead of staying "playing" forever;of_resetunloads the film;ii_rateholds from one film to the next.- In full screen, Alt+Tab to another application brings that application to the front, and coming back to yours puts the film back on top; a modal box of your application (a
MessageBoxinue_ended) now comes in front of the film and gets the keyboard. - Escape leaves full screen even when
ib_enabled = false; full screen can always be left, even when the page no longer answers. of_captureto a file that cannot be written leaves no truncated file;of_get_last_errorthen gives the reason for this failure (missing folder, empty path…), not an older error.- Paths longer than 260 characters work for subtitles and capture, as they already did for the film; a
file://server/share/…address becomes a network path. .srtsubtitles in Windows-1252 or UTF-16 are read correctly; a chapter title containing|or a tab is no longer split in two byof_chapters.- Dragging the volume slider raises one
ue_volume_changedwhen released, no longer one per pixel. - Space or Enter on a bar button presses that button instead of toggling play/pause; with an unknown or infinite duration (a live stream), End and the slider no longer jump back to the start.
- A
mono:/tint:poster no longer makes the picture ignore clicks; a marker at 0 ms, or at the start of a segment, fires; seeking past a segment while paused no longer raisesue_ended. - The speed shows the decimal separator of the display language (
1,5×in French), and the scrub preview bubble is centred under the pointer in right-to-left layouts. - Enter or Esc pressed in the component, when it does not use them, goes back to the window: the PowerBuilder
DefaultorCancelCommandButtonfires (the key was lost). - A disabled component (
ib_enabled = false) leaves the Tab order; enabled again (or afterof_reset), it takes its place back. - A language set by
PBT_SetLanguageapplies from the very next order given to the component: a text of an event raised by that order no longer comes in the old language. - With no language chosen by the application, the component announces English to screen readers (it announced French).
is_theme_style,is_theme_modeandil_theme_accentread back the style and mode shown and the component's own accent (-1when it has none); an unknown or badly written value is ignored instead of leaving the component without a theme, and an axis left empty follows the application's theme.- The application accent (
PBT_SetDefaultThemeAccent) survives a change of theme, is followed as long as the component has no accent of its own, and repaints everything derived from it (hover, pressed, selections); Windows high contrast is supported.
Behavior changes #
See the 3.0 → 4.0 migration guide, sections 11.3, 11.26 and 11.47.
- Signature:
ue_failed (string as_message, string as_reason)replacesue_failed (string as_message); testas_reasonrather than the message text. - An
http://source is refused at once (REASON_INSECURE): onlyhttpsis played — download an intranet film first (n_pbt_restclient.of_download) and play it by its path. of_add_subtitlestwice for the same language returns-5(also for a language containing/or|): callof_remove_subtitlesfirst.- An action requested by your code raises the same event as the user's gesture:
of_seek,of_step_framesand the chapter functions raiseue_seeked(andue_chapter_changed);of_fullscreen,of_picture_in_picture,of_next/of_previousraise their event too.of_go_chapterbeyond the chapter count returns-5. - A relative path given to
of_captureis written in the folder where the application started;-5for a path such as\xorC:x— give a full path. - "Component not created" returns
-2everywhere (the documentation said-1). - A film from a URL played while the workstation has no network shows "No network connection" and raises
ue_failedwithREASON_NETWORK(it said the file could not be found or played, withREASON_UNSUPPORTED).
3.0 — September 2026 #
New #
- First release: a local file served as a stream by the DLL (a long film starts at once, seeking is immediate) or an
httpsURL, with the component's own transport bar that follows the theme — play, seek, time, mute, volume, speed menu, subtitles button, full screen — and a keyboard. - Every gesture on the bar reaches your application:
ue_seeked,ue_volume_changed,ue_rate_changed,ue_subtitles_changed, plusue_started,ue_ended,ue_paused/ue_resumed,ue_stoppedandue_progress(once a second), all in milliseconds. - Live properties:
is_source,ib_autoplay,ib_muted,ii_volume,ib_loop,ii_rate,is_stretch,ib_controls,is_poster(images and recolouredmono:/tint:icons),ib_enabled,ib_scrub_preview,ib_remember_position. - WebVTT subtitles and
.srtfiles converted on the fly, several tracks by language (of_add_subtitles,is_subtitle_lang). - Full screen handled by the DLL (
of_fullscreen), Picture-in-Picture, markers on the bar (of_add_marker,ue_marker_reached), a segment to play (of_play_range), frame stepping (of_step_frames,ii_fps), chapters (of_add_chapter,of_go_chapter…) and a playlist (of_add_source,of_next,of_previous), each film with its own subtitles. of_capture: the current frame saved as an image file.ue_script_error: a script error in the page reaches PowerBuilder with its message instead of being lost.of_set_property,of_get_propertyandof_component_name: drive a property by its name (settings screen, saved configuration).