video — u_pbt_video #
← Riferimento dei componenti · Sommario della guida
Lettore video: un file della postazione — servito in flusso dalla DLL, un film lungo parte subito — o un URL, con la barra di trasporto del componente, che segue il tema: riproduzione, ricerca, tempo, muto, volume. Sottotitoli WebVTT, locandina prima della riproduzione, ciclo, velocità, inquadratura, cattura del fotogramma corrente in PNG o JPEG. Tutto ciò che l'utente fa sulla barra, la tua applicazione lo sa.
▶ Vederlo dal vivo — Applicazione dimostrativa, riquadro Video player: il film, il codice che lo pilota e questa pagina, fianco a fianco (connessione Internet necessaria per il film di esempio).
In breve #
| Userobject | u_pbt_video |
| Classe degli item | — (componente senza item) |
| Serve per | Un film di formazione nell'applicazione, il video di un prodotto, la rilettura di una registrazione, un ciclo di presentazione su uno stand |
| Principio | Un <video> del motore WebView2: tutti i formati che decodifica (mp4, webm, m4v, mov, mkv). La barra è del componente; i suoi gesti passano per gli stessi verbi delle tue chiamate, quindi gli stessi eventi |
| Dipendenza | Il runtime WebView2, già richiesto dalla libreria — nient'altro |
Avvio rapido #
// A film of the workstation, streamed by the DLL : starts at once
uo_video.is_poster = "img\packimages.dll:PNG/COVER" // shown until the film starts
uo_video.is_subtitles = "films\training.vtt"
uo_video.of_play(/*source*/ "films\training.mp4")
// A URL plays the same way
uo_video.of_play(/*source*/ "https://www.w3schools.com/html/mov_bbb.mp4")
// The user pauses from the bar, or your code does : either way ue_paused fires
uo_video.of_pause()
uo_video.of_seek(/*ms*/ 90000) // to 1:30, in milliseconds
Tutto ciò che regoli è una proprietà (is_source, ii_volume, ib_loop…), letta dal vivo sul componente; tutto ciò che fai è un metodo (of_play, of_pause, of_stop, of_seek, of_capture); tutto ciò che accade è un evento (ue_started, ue_ended, ue_progress…). Un file mancante non è un'eccezione: ue_failed lo dice, e il messaggio appare sull'immagine.
Proprietà #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_source | string | "" | Il film: un file della postazione (qualsiasi percorso, in flusso) o un URL https. Un indirizzo http:// è rifiutato (ue_failed, REASON_INSECURE): il motore lo promuove a https e fallisce — scarica prima il film (restclient, of_download). Formati: mp4, webm, m4v, mov (un film di iPhone o di videocamera in H.264), mkv e i formati audio; avi, wmv e flv sono rifiutati dal loro nome (REASON_FORMAT). Impostarlo ferma ciò che stava suonando; ib_autoplay decide se il nuovo parte da solo. Un film di qualsiasi dimensione, anche in un'applicazione a 32 bit: la DLL lo trasmette a fette, mai l'intero file in una volta; un film che il motore non sa decodificare è segnalato da ue_failed. Un NUOVO film lascia indietro ciò che apparteneva al vecchio: il suo segmento, i sottotitoli, i marcatori e i capitoli (impostati prima di ogni film, aspettano il primo); un film della playlist conserva i propri sottotitoli |
ib_autoplay | boolean | false | Avvia il film appena is_source è impostato; altrimenti attende of_play, la barra o la tastiera, e mostra is_poster |
ib_muted | boolean | false | Toglie l'audio, volume conservato; anche il pulsante della barra e il tasto M lo impostano |
ii_volume | integer | 100 | Volume in percentuale, 0 a 100; anche il cursore della barra e le frecce su/giù |
ib_loop | boolean | false | Ripete il film in ciclo fino a of_stop; un film in ciclo non solleva mai ue_ended |
ii_rate | integer | 100 | Velocità in percentuale, 25 a 400: 50 = metà, 200 = doppia, l'audio segue |
is_stretch | string | "uniform" | Inquadratura: STRETCH_NONE, STRETCH_FILL, STRETCH_UNIFORM, STRETCH_UNIFORMTOFILL — le quattro modalità di un'immagine |
ib_controls | boolean | true | La barra di trasporto del componente, a tema. false la nasconde: la tua finestra pilota il film |
is_poster | string | "" | La locandina mostrata prima del film: file, URL o pack.dll:NOME, come la sorgente di un'immagine. Un prefisso mono:/tint:/white:/black: ricolora un'immagine monocroma sul tema |
is_subtitles | string | "" | Un file di sottotitoli, locale o URL https: WebVTT (.vtt) o SubRip (.srt, convertito — UTF-8, UTF-16 o la code page ANSI della postazione). Un URL è SCARICATO dal componente: il suo server deve consentire CORS (GitHub, un CDN lo fanno); un rifiuto, o un URL http://, è detto da ue_subtitles_failed e il film continua. Una traccia; of_add_subtitles ne accumula diverse. Appartiene al film: un nuovo is_source lo toglie |
is_subtitle_lang | string | "" | La traccia di sottotitoli mostrata (una lingua di of_add_subtitles); vuoto = nessuna |
ii_fps | integer | 25 | Immagini al secondo del film, per of_step_frames |
ib_remember_position | boolean | false | Ricorda dove ogni film è lasciato e riprende lì al prossimo of_play della stessa sorgente |
is_theme_style | string | "" | Stile visivo del componente (costanti THEME_STYLE_*); vuoto = quello dell'applicazione, seguito a ogni cambio |
is_theme_mode | string | "" | Variante chiara o scura (costanti THEME_MODE_*); vuoto = quella dell'applicazione, seguita a ogni cambio |
il_theme_accent | long | -1 | Colore d'accento di questo componente (-1 = accento dell'applicazione, o quello del tema) |
is_tooltip | string | "" | Tooltip semplice mostrato al passaggio del mouse sul componente |
is_super_tooltip_title | string | "" | Titolo del tooltip avanzato (prevale su is_tooltip) |
is_super_tooltip_text | string | "" | Testo del tooltip avanzato (markup avanzato accettato) |
is_super_tooltip_image | string | "" | Immagine del tooltip avanzato |
ib_enabled | boolean | true | false: immagine attenuata, barra e tastiera inerti — tranne Esc a schermo intero: se ne può sempre uscire; il tuo codice comanda ancora |
ib_scrub_preview | boolean | true | Una bolla di tempo segue il cursore sulla barra di scorrimento (true, predefinito), col capitolo se ce ne sono. false la nasconde |
ib_pause_when_hidden | boolean | true | Mette in pausa il film quando il componente è NASCOSTO (un'altra pagina di un tab o di un dock PBToolboxAI, PBT_SetVisible): ue_paused segue, e il film attende of_play, non riprende mai da solo. false lo lascia suonare (una parete di schermi). Un Tab NATIVO di PowerBuilder non avvisa il componente: chiama of_pause nel suo SelectionChanged |
Un clic sull'immagine mette in pausa, un secondo riprende. Tastiera, quando il film ha il focus: Spazio o K riproduci/pausa, ←/→ cinque secondi, ↑/↓ volume, M muto, Inizio/Fine.
Metodi #
| Metodo | Ruolo | |
|---|---|---|
of_play ( ) → long | Riproduce is_source da dov'è: dall'inizio la prima volta, dalla pausa poi (ue_resumed). Rende 0 una volta inviato, -2 se il componente non è creato | |
of_play (string as_source) → long | Imposta is_source e lo riproduce: la stessa chiamata del lettore audio. Rende 0 una volta inviato, -1 senza componente | |
of_pause ( ) → long | Sospende il film dov'è; of_play lo riprende. Rende 0 una volta inviato, -1 senza componente | |
of_stop ( ) | Ferma il film e torna al suo inizio; segue ue_stopped | |
of_seek (long al_ms) → long | Si posiziona in un punto del film, in millisecondi, in riproduzione o no; un file locale cerca subito. ue_seeked segue, come per la barra. Rende 0 una volta inviato, -2 se il componente non è creato | |
of_is_playing ( ) → boolean | Vero finché un film è in corso — pausa compresa, non è finito | |
of_is_paused ( ) → boolean | Vero finché il film è sospeso — da of_pause, dalla barra o dalla tastiera | |
of_is_buffering ( ) → boolean | Vero finché il film GIRA ma attende i suoi dati — il tempo annunciato da ue_buffering. Letto dal componente, mai da una copia | |
of_duration ( ) → long | Rende il numero di millisecondi che dura il film, 0 finché sconosciuto | |
of_position ( ) → long | Rende il numero di millisecondi letti dall'inizio; anche ue_progress lo porta ogni secondo | |
of_capture (string as_path) → long | Salva l'immagine mostrata ora, alla dimensione del film: of_capture(as_path, 0). L'ESTENSIONE sceglie il formato: .jpg o .jpeg scrive un JPEG, tutto il resto un PNG; attende la prima immagine decodificata (10 s al massimo), quindi può seguire direttamente of_play. Rende 0 una volta scritta, -4 senza film, con un film che non si è potuto caricare, senza immagine in tempo, quando un film di un altro sito rifiuta i suoi pixel o quando il file non può essere scritto, -5 su un percorso vuoto o che dipende dalla cartella corrente (\x, C:x), -2 se il componente non è creato; dopo un ritorno negativo, of_get_last_error dice perché. Un percorso relativo si scrive nella cartella in cui l'applicazione è partita (la cartella corrente al caricamento della libreria, la stessa nell'IDE e compilata) | |
of_capture (string as_path, long al_max_width) → long | La stessa cattura, RIDOTTA a al_max_width pixel di larghezza (altezza in proporzione): la miniatura di un film 4K non è un'immagine 4K. 0 conserva la dimensione del film. Stessi ritorni di of_capture(as_path) | |
of_fullscreen (boolean ab_on) → long | Il film su TUTTO il monitor (la DLL sposta il controllo in una finestra sua; la tua finestra non è toccata), o di ritorno. Sopra tutto finché è la finestra attiva: Alt+Tab verso un'altra applicazione porta quella davanti, e tornare alla tua rimette il film sopra tutto. Doppio clic, il pulsante della barra, Esc, Alt+F4. Esc esce anche quando ib_enabled è falso. Questi gesti e questa chiamata sollevano ue_fullscreen_changed (of_is_fullscreen lo legge). Rende 0, -2 se il componente non è creato | |
of_is_fullscreen ( ) → boolean | Vero finché il film copre il monitor | |
of_add_marker (long al_ms, string as_label) → long | Un MARCATORE sulla barra: un segno cliccabile, e ue_marker_reached quando il film lo supera. Rende 0, -5 su una posizione negativa, -2 se il componente non è creato | |
of_clear_markers ( ) → long | Rimuove tutti i marcatori. Rende 0, -2 se il componente non è creato | |
of_marker_count ( ) → long | Rende il numero di marcatori | |
of_play_range (long al_from_ms, long al_to_ms) → long | Suona UN segmento: alla fine ue_ended, o con ib_loop il segmento riparte. Rende 0, -5 su limiti senza senso, -2 se il componente non è creato | |
of_clear_range ( ) → long | Libera il film dal suo segmento. Rende 0, -2 se il componente non è creato | |
of_step_frames (long al_frames) → long | Avanza o arretra di al_frames immagini (ii_fps) e mette in pausa; tasti . e , sull'immagine. ue_seeked segue, come per i tasti. Rende 0, -2 se il componente non è creato | |
of_add_source (string as_source) → long | Aggiunge un film alla PLAYLIST: il primo diventa is_source (sopra un film impostato prima, a meno che non STIA SUONANDO: la playlist lo segue allora alla sua fine), i successivi si susseguono da soli (ue_source_changed per ogni film che segue, e per il primo quando questa chiamata lo carica). Rende 0, -5 su una sorgente vuota, -2 se il componente non è creato | |
of_add_source (string as_source, string as_subtitles) → long | Aggiunge un film CON il suo file di sottotitoli (.vtt o .srt, convertito dalla DLL): il sottotitolo appartiene a quel film e appare solo quando viene riprodotto. Il modo semplice e senza ambiguità di sottotitolare una playlist. Rende 0, -5 su una sorgente vuota | |
of_clear_playlist ( ) → long | Svuota la lista; il film in corso continua. Rende 0, -2 se il componente non è creato | |
of_next ( ) / of_previous ( ) → long | Il film successivo o precedente della lista; of_playlist_index dice dove si trova, e ue_source_changed segue. Rende 0, -2 se il componente non è creato | |
of_playlist_count ( ) → long | Rende il numero di film della lista | |
of_playlist_index ( ) → long | Rende l'indice (da 1) del film della lista in corso, 0 fuori lista | |
of_add_subtitles (string as_lang, string as_source) → long | Una traccia di sottotitoli per lingua: .vtt, o .srt convertito, dalla postazione o da un URL https (scaricato: CORS necessario, vedi ue_subtitles_failed). Il pulsante CC della barra le scorre. Rende 0, -5 su una sorgente vuota, una lingua già posta sul film (prima of_remove_subtitles) o che contiene / o ` | , -2` se il componente non è creato |
of_remove_subtitles (string as_lang) → long | Toglie la traccia di una lingua dal film sullo schermo (e dal film della lista che suona: non torna con of_previous). La traccia di is_subtitles si chiama default. Rende 0, -5 per una lingua che il film non porta, -2 se il componente non è creato | |
of_subtitle_count ( ) → long | Rende il numero di tracce di sottotitoli | |
of_remembered_position ( ) → long | Rende il numero di millisecondi in cui is_source è stato lasciato (ib_remember_position), 0 altrimenti | |
of_has_output ( ) → boolean | Vero se la postazione ha un'uscita audio | |
of_add_chapter (long al_ms, string as_title) → long | Un CAPITOLO (sommario): ue_chapter_changed quando la riproduzione vi entra. of_go_chapter salta (1-based), of_next_chapter / of_previous_chapter li scorrono (ogni salto solleva ue_seeked e ue_chapter_changed), of_chapter_count / of_chapter_index / of_chapters li leggono, of_clear_chapters li svuota. Rende 0, -5 se negativo | |
of_clear_chapters ( ) → long | Rimuove tutti i capitoli; la barra e la bolla di anteprima li dimenticano. Rende 0, -2 se non creato | |
of_go_chapter (long al_index) → long | Salta al capitolo al_index (1-based, nell'ordine di of_add_chapter); of_chapter_index lo legge subito, e ue_seeked poi ue_chapter_changed seguono, come per un clic sulla barra. Rende 0, -5 per un numero inferiore a 1 o superiore a of_chapter_count(), -2 se il componente non è creato | |
of_next_chapter ( ) → long | Salta al capitolo dopo la posizione corrente; of_chapter_index lo legge subito, e ue_seeked poi ue_chapter_changed seguono. Dall'ultimo capitolo nulla si muove. Rende 0, -2 se non creato | |
of_previous_chapter ( ) → long | Salta al capitolo prima di quello in cui si trova la riproduzione; of_chapter_index lo legge subito, e ue_seeked poi ue_chapter_changed seguono. Dal primo capitolo nulla si muove. Rende 0, -2 se non creato | |
of_chapter_count ( ) → long | Rende il numero di capitoli del film (of_add_chapter), 0 senza | |
of_chapter_index ( ) → long | Rende il numero (1-based) del capitolo in cui si trova la riproduzione, 0 prima del primo o senza capitoli. Letto dal vivo | |
of_chapters (ref long al_ms[], ref string as_titles[]) → long | Riempie i capitoli in ordine — la posizione di ciascuno in ms in al_ms, il titolo in as_titles — per costruire un menu tuo; un titolo può contenere qualsiasi carattere. Rende il numero, 0 senza capitoli | |
of_picture_in_picture (boolean ab_on) → long | Il film in una finestra flottante propria (true) o indietro (false); ue_pip_changed segue, come quando l'utente chiude la piccola finestra. of_is_pip dice se flotta, of_pip_available se la postazione lo permette. Rende 0, -2 se non creato | |
of_is_pip ( ) → boolean | Vero finché il film flotta nella sua finestra Picture-in-Picture; di nuovo falso quando l'utente la chiude | |
of_pip_available ( ) → boolean | Vero se il motore e la postazione permettono il Picture-in-Picture: da chiedere prima di offrire il pulsante |
Eventi #
| Evento | Quando |
|---|---|
ue_started (long al_duration_ms) | Il film parte davvero; la lunghezza quando il file la dice, 0 altrimenti |
ue_ended (boolean ab_truncated) | Il film è finito da sé; ab_truncated vero quando il limite demo l'ha tagliato |
ue_failed (string as_message, string as_reason) | Il film non ha potuto suonare. as_reason lo dice in una parola che il tuo codice verifica: REASON_INSECURE (una sorgente http://), REASON_FORMAT (avi, wmv, flv, o un formato che il motore dichiara non riproducibile), REASON_UNSUPPORTED (file mancante o contenitore non decodificabile), REASON_DECODE, REASON_NETWORK, REASON_NO_SOURCE, REASON_FAILED; as_message è il testo mostrato sull'immagine |
ue_stopped ( ) | of_stop ha tagliato un film in corso |
ue_paused ( ) / ue_resumed ( ) | Il film è sospeso, poi riprende — dal tuo codice, dalla barra o dalla tastiera indifferentemente; anche quando il componente è nascosto (ib_pause_when_hidden) |
ue_progress (long al_position_ms, long al_duration_ms) | Una volta al secondo durante la riproduzione: ciò che una tua barra di avanzamento aspetta, senza timer |
ue_seeked (long al_position_ms) | La posizione si è spostata: l'utente (barra, frecce, marcatore) o il tuo codice — anche of_seek, of_step_frames e le funzioni dei capitoli lo sollevano, come il gesto |
ue_volume_changed (long al_percent) | L'utente ha girato il volume; mai ii_volume |
ue_rate_changed (long al_percent) | L'utente ha scelto una velocità sulla barra; mai ii_rate |
ue_subtitles_changed (string as_lang) | L'utente ha scorso i sottotitoli (CC); vuoto = nessuno |
ue_muted_changed (boolean ab_on) | L'utente ha tolto (true) o ridato (false) il suono — l'altoparlante della barra, il tasto M; mai ib_muted |
ue_fullscreen_changed (boolean ab_on) | Il film è passato a schermo intero, o ne è tornato: doppio clic, il pulsante, Esc, Alt+F4, o of_fullscreen. of_reset non lo solleva mai |
ue_marker_reached (long al_ms, string as_label) | Il film supera un marcatore |
ue_source_changed (long al_index, string as_source) | La playlist passa a un altro film: da sola, finito il precedente, o con of_next, of_previous e il primo of_add_source |
ue_chapter_changed (long al_index, string as_title) | La riproduzione entra in un altro capitolo (of_add_chapter): il suo numero (1-based, 0 prima del primo) e il titolo; anche quando l'utente o il tuo codice (of_go_chapter, of_next_chapter, of_previous_chapter) vi salta |
ue_pip_changed (boolean ab_on) | Il film è entrato (true) nella finestra Picture-in-Picture o ne è uscito (false): l'utente l'ha chiusa, il motore vi ha messo il film da solo, o of_picture_in_picture l'ha chiesto (of_is_pip lo legge) |
ue_subtitles_failed (string as_lang, string as_reason) | Un file di sottotitoli non si è potuto caricare: un URL https il cui server rifiuta CORS o risponde un errore (REASON_NETWORK, REASON_NOT_FOUND), un URL http:// (REASON_INSECURE). La traccia è tolta, il film continua |
ue_buffering (boolean ab_on) | Il film GIRA ma deve attendere i suoi dati per più di un quarto di secondo (true) — una rete lenta, un salto lontano in un film da un URL: un anello nel colore d'accento del tema gira sull'immagine — poi l'attesa finisce (false): il film riparte, oppure è stato messo in pausa, fermato, sostituito, o è fallito. of_reset non lo solleva mai |
Schermo intero, marcatori, segmento, fotogramma per fotogramma #
- Schermo intero.
of_fullscreen(true), un doppio clic sull'immagine o l'ultimo pulsante della barra. La DLL sposta il controllo in una finestra sua che copre il monitor; la tua finestra PowerBuilder non è toccata, ed Esc (o Alt+F4) riporta il film. Resta sopra tutto solo finché è la finestra attiva: Alt+Tab verso un'altra applicazione porta quella davanti, e tornare alla tua rimette il film sopra tutto. Esc esce anche quandoib_enabledè falso.ue_fullscreen_changeddice ogni passaggio, in entrambi i sensi: questi gesti dell'utente comeof_fullscreen. - Marcatori.
of_add_marker(ms, etichetta)mette un segno sulla barra: l'utente lo vede, lo sorvola (l'etichetta), lo clicca (il film vi salta,ue_seeked), eue_marker_reachedarriva quando il film lo supera. Capitoli di una formazione, punti da controllare, difetti rilevati. - Segmento.
of_play_range(da, a)suona solo un estratto; conib_looplo ripete fino aof_clear_range. - Fotogramma per fotogramma.
of_step_frames(±n)avanza o arretra di n immagini aii_fpsal secondo e mette in pausa; i tasti . e , fanno lo stesso. Il motore non dice la cadenza di un film: dilla tu. - La barra parla. Ogni gesto ha il suo evento:
ue_seeked,ue_volume_changed,ue_rate_changed(il pulsante di velocità, 0,5× a 2×),ue_subtitles_changed(il pulsante CC),ue_muted_changed(l'altoparlante, il tasto M). Uno spostamento chiesto dal tuo codice solleva lo stesso evento del gesto:of_seek,of_step_framese le funzioni dei capitoli sollevanoue_seeked. Un VALORE impostato dal tuo codice resta muto, comeSetItem:ii_volume,ii_rate,is_subtitle_lang,ib_muted.
// Chapters on the bar, then one extract in a loop
uo_video.of_add_marker(/*ms*/ 2000, /*label*/ "Intro")
uo_video.of_add_marker(/*ms*/ 5000, /*label*/ "The bunny")
uo_video.ib_loop = true
uo_video.of_play_range(/*from_ms*/ 2000, /*to_ms*/ 8000)
// Surveillance : back one picture at a time
uo_video.ii_fps = 30
uo_video.of_step_frames(/*frames*/ -1)
Playlist, sottotitoli, ripresa, formati #
- Playlist.
of_add_sourceaccumula film; il primo diventais_source, i successivi si susseguono da soli alla fine di ciascuno,ue_source_changednomina ogni passaggio.of_nexteof_previousa mano, con lo stesso evento:of_playlist_indexdice dove si trova la lista. - Ciò che appartiene a un film. Il suo segmento, i sottotitoli, i marcatori e i capitoli: un nuovo
is_sourceli lascia indietro (impostati prima di ogni film, aspettano il primo). La playlist conserva i suoi: il sottotitolo dato aof_add_source(film, sottotitolo)torna con il suo film. - Più tracce di sottotitoli.
of_add_subtitles(lingua, file)per lingua,of_remove_subtitles(lingua)per toglierne una;is_subtitle_langsceglie, il pulsante CC della barra scorre. Un.srtè convertito in WebVTT al momento di servirlo: niente da convertire da parte tua. Un sottotitolo dato da un URLhttpsè scaricato dal componente: il suo server deve consentire CORS, altrimentiue_subtitles_failedlo dice e il film continua senza. - Ripresa.
ib_remember_position = true: dove un film è lasciato (pausa, stop) è conservato dal motore su questa postazione, per utente, e il prossimoof_playdella stessa sorgente riprende lì. Un film visto fino in fondo riparte dall'inizio. - Formati. Ciò che WebView2 decodifica: mp4 (H.264, AAC), webm (VP8, VP9, AV1), mov (l'H.264 di un iPhone o di una videocamera), mkv (una registrazione OBS), e i formati audio (mp3, wav, ogg, opus, flac, aac, m4a). Non l'H.265/HEVC senza l'estensione Windows (un
.movHEVC finisce inue_failed, che nomina l'estensione), né AVI, WMV, FLV: il componente li rifiuta dal loro nome (REASON_FORMAT) invece di uno schermo nero. Né HLS né DASH: una telecamera IP passa per un flusso mp4 o webm. Solohttps: un indirizzohttp://di intranet è rifiutato (REASON_INSECURE) — scarica prima il film (restclient,of_download) o servilo da una condivisione\\server\…. - Più tracce audio. Chromium le nasconde dietro un flag: non esposte.
// A playlist, each film WITH its subtitles, the position remembered
uo_video.ib_remember_position = true
uo_video.of_add_source(/*source*/ "intro.mp4", /*subtitles*/ "intro.en.vtt")
uo_video.of_add_source(/*source*/ "lesson-1.mp4", /*subtitles*/ "lesson-1.en.srt") // .srt : converted by the DLL
uo_video.of_play()
// A second language for the film on screen : it stays with that film
uo_video.of_add_subtitles(/*lang*/ "fr", /*source*/ "intro.fr.vtt")
uo_video.is_subtitle_lang = "fr"
Esempi #
Un ciclo di presentazione silenzioso, senza barra #
// A silent showcase film, in a loop, without its bar
uo_video.ib_controls = false
uo_video.ib_muted = true
uo_video.ib_loop = true
uo_video.is_stretch = u_pbt_video.STRETCH_UNIFORMTOFILL
uo_video.of_play(/*source*/ "films\showcase.mp4")
I tuoi pulsanti e una barra di avanzamento #
// cb_play.clicked
if uo_video.of_is_paused() or not uo_video.of_is_playing() then uo_video.of_play() else uo_video.of_pause()
// uo_video.ue_progress : once a second, no timer needed
hpb_progress.Position = al_position_ms * 100 / Max(al_duration_ms, 1)
Una miniatura del film per un rapporto #
// Stop the film on the picture to keep
uo_video.of_play(/*source*/ "films\training.mp4")
uo_video.of_pause()
uo_video.of_seek(/*ms*/ 15000) // the frame at 0:15
// of_capture waits for the picture itself (10 s at most) : no timer to write.
// A .jpg path writes a JPEG ; 320 : a thumbnail 320 pixels wide.
// A relative path goes to the folder the application started in.
if uo_video.of_capture(/*path*/ "C:\Reports\training.jpg", /*max_width*/ 320) < 0 then MessageBox("Capture", uo_video.of_get_last_error())
Buone pratiche #
- Un file della postazione piuttosto che un URL appena puoi: servito in flusso dalla DLL, parte subito, cerca senza ricaricare, e
of_capturepuò leggerne i pixel — ciò che un film di un altro sito rifiuta. - Scripta
ue_failedsu ogni film il cui percorso dipende dai dati: è la tua unica rete, e il messaggio è già sullo schermo. - Imposta
ib_autoplaysolo per un ciclo di presentazione: un film che parte da solo con l'audio sorprende l'utente; altrove bastano la locandina e il pulsante di riproduzione. ue_progresssostituisce un timer: una volta al secondo, posizione e lunghezza, solo durante la riproduzione.
Ereditato dalla base comune #
Questi membri esistono su tutti i componenti visivi — non sono propri di questo. Sono descritti una sola volta, nei capitoli trasversali; questa tabella dice solo dove leggerli.
| Membri | Ruolo | Descritto in |
|---|---|---|
of_reset | Riportare il componente a zero | 3.6 Riportare un componente a zero: of_reset() |
of_register_shortcut · of_clear_shortcuts | Scorciatoie da tastiera del componente | 3.5 Le scorciatoie da tastiera |
of_is_created · of_is_ready · of_get_last_error | Se è nato, se è pronto, cosa è fallito | 3.7 Diagnostica |
of_save_as_png · of_save_as_jpg | Esportare il rendering in immagine | 3.8 Esportare il rendering come immagine |
of_set_redraw | Raggruppare le modifiche in un solo ridisegno | 3.10 Buone pratiche |
of_preload_icons | Icone mostrate senza ritardo | Visualizzazione istantanea: of_icon |
of_set_translation | Tradurre una dicitura del componente | 5.2 Adattare un'etichetta: of_set_translation |
of_focus_webview | Dare il focus al componente | 6.4 Tastiera e focus |
of_print · of_print_to_pdf | Stampare, o scrivere un PDF | 6.9 Stampare |
of_set_property · of_get_property · of_component_name | Pilotare una proprietà per nome | 3.1 Il motore delle proprietà |