https://github.com/cool-dev-guy/tkintervideo
A simple Video Player widget with audio support for tkinter.
https://github.com/cool-dev-guy/tkintervideo
Last synced: 3 months ago
JSON representation
A simple Video Player widget with audio support for tkinter.
- Host: GitHub
- URL: https://github.com/cool-dev-guy/tkintervideo
- Owner: cool-dev-guy
- Created: 2023-12-09T03:28:36.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-15T09:56:12.000Z (over 2 years ago)
- Last Synced: 2025-12-28T21:41:43.352Z (6 months ago)
- Language: Python
- Size: 31.3 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# tkintervideo
A simple Tkinter Python Package For synced audio & video playback with a real-time API.
`beta 0.0.3`
## Installation
- From PyPi
- ```bash
pip install tkvideo
```
- If any error's:
- ```bash
pip install -r requirements.txt
```
- Or Build it normally(refer web).
## Features:
- Controls Widget Added
- Timeline seeking.(slider based & button based)
- Synced audio playback.(Video is synced with audio)
- Upto any Resolution video playback(using PIL & imageio)
- TODO: youtube/hls support.
- In-player real-time audio & video edits.
- duration
- fps
- audio frame rate
- state detection
- auto resize(based on window resize)
- total frames
- current play position
- seeking(to a second or a frame)
- play/pause/stop/resume
- volume
- edits(you can edit the video & audio because moviepy & pydub are built-in)
### Buy me a cool-milk for support & updates
(Note: Two buttons are the same,added both because i like the color.)
## Usage
```python
from tkintervideo import player
from tkintervideo.tools import Controls
import tkinter as tk
from tkinter import ttk
import sv_ttk
import time
class App(tk.Tk):
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
sv_ttk.set_theme('dark')
self.m_widget = player.Player(self,height=200,width=300)
self.rowconfigure(0,weight=1)
self.rowconfigure(1,weight=0)
self.columnconfigure(0,weight=1)
self.m_widget.grid(column=0,row=0,sticky=tk.NSEW,padx=5,pady=5)
self.m_widget.load('output.avi')
self.controls = Controls(self,self.m_widget)
self.m_widget.bind("<>",self.controls.update_scale)
self.controls.grid(column=0,row=1,sticky=tk.NSEW,padx=10,pady=10)
myApp = App()
myApp.mainloop()
```
## Contributing
Pull requests are welcome.
## License
[GPL-3](https://choosealicense.com/licenses/gpl-3.0/)