I am trying to use flet to play a local MP4 file.
When I read the reference, I found that their shown code example is using only "http" resources:
sample_media = [ ft.VideoMedia("https://user-images.githubusercontent.com/28951144/229373720-14d69157-1a56-4a78-a2f4-d7a134d7c3e9.mp4"), ft.VideoMedia("https://user-images.githubusercontent.com/28951144/229373718-86ce5e1d-d195-45d5-baa6-ef94041d0b90.mp4") ]
Question:
Can I use a local resource (file) for MP4 playback using flet, and how?
There was no example of specifying a local video. Does that mean it can't be done with flet?
Whay I've tried:
I changed the URL from http
to ./video/movie.mp4
, but it did not work.
Environment : MacLanguage : PythonLibrary : flet
import randomimport flet as ftdef main(page: ft.Page): page.theme_mode = ft.ThemeMode.LIGHT page.title = "TheEthicalVideo" page.window_always_on_top = True page.spacing = 20 page.horizontal_alignment = ft.CrossAxisAlignment.CENTER def handle_pause(e): video.pause() print("Video.pause()") def handle_play_or_pause(e): video.play_or_pause() print("Video.play_or_pause()") def handle_play(e): video.play() print("Video.play()") sample_media = [ ft.VideoMedia("https://user-images.githubusercontent.com/28951144/229373709-603a7a89-2105-4e1b-a5a5-a6c3567c9a59.mp4", extras={"artist": "Thousand Foot Krutch","album": "The End Is Where We Begin", }, http_headers={"Foo": "Bar","Accept": "*/*", }, ), ] page.add( video := ft.Video( expand=True, playlist=sample_media[0:2], playlist_mode=ft.PlaylistMode.LOOP, fill_color=ft.colors.BLUE_400, aspect_ratio=16/9, volume=100, autoplay=False, filter_quality=ft.FilterQuality.HIGH, muted=False, on_loaded=lambda e: print("Video loaded successfully!"), on_enter_fullscreen=lambda e: print("Video entered fullscreen!"), on_exit_fullscreen=lambda e: print("Video exited fullscreen!"), ), ft.Row( wrap=True, alignment=ft.MainAxisAlignment.CENTER, controls=[ ft.ElevatedButton("Play", on_click=handle_play), ft.ElevatedButton("Pause", on_click=handle_pause), ft.ElevatedButton("Play Or Pause", on_click=handle_play_or_pause), ft.ElevatedButton("Stop", on_click=handle_stop), ft.ElevatedButton("Next", on_click=handle_next), ft.ElevatedButton("Previous", on_click=handle_previous), ft.ElevatedButton("Seek s=10", on_click=handle_seek), ft.ElevatedButton("Jump to first Media", on_click=handle_jump), ft.ElevatedButton("Add Random Media", on_click=handle_add_media), ft.ElevatedButton("Remove Random Media", on_click=handle_remove_media), ], ), ft.Slider( min=0, value=100, max=100, label="Volume = {value}%", divisions=10, width=400, on_change=handle_volume_change, ), ft.Slider( min=1, value=1, max=3, label="PlaybackRate = {value}X", divisions=6, width=400, on_change=handle_playback_rate_change, ), )ft.app(target=main)