5个版本
0.2.0 | 2024年8月7日 |
---|---|
0.1.3 | 2024年2月19日 |
0.1.2 | 2024年2月19日 |
0.1.1 | 2024年2月19日 |
0.1.0 | 2024年2月19日 |
#73 在 多媒体
每月139次下载
1MB
822 行
Iced视频播放小部件
一个可组合组件,用于在任何基于优秀的GStreamer库构建的Iced应用程序中播放视频。
概述
一般来说,它支持gstreamer/playbin
支持的所有内容。
功能
- 可以从任何文件路径或URL加载视频文件(支持通过网络进行流式传输)。
- 网络流式传输时的视频缓冲。
- 音频支持。
- 程序控制。
- 从一组时间戳捕获缩略图。
- 良好的性能。跳过Iced
Image
的大部分开销,直接将帧数据复制到WGPU纹理,并使用自定义WGPU渲染管线进行渲染。根据一个非常主观的参考,我在调试模式下可以无阻碍地播放1080p HEVC视频,并且硬件解码。
限制(希望修复)
- GStreamer在Windows上设置有点麻烦。
播放器不附带任何周围的GUI控件,但如果需要,应该很容易实现。请参阅“最小化”示例,了解如何实现暂停、循环和查找。
示例用法
use iced_video_player::{Video, VideoPlayer};
use iced::{Sandbox, Element};
fn main() {
App::run(Default::default());
}
struct App {
video: Video,
}
impl Sandbox for App {
type Message = ();
fn new() -> Self {
App {
video: Video::new(&url::Url::parse("file:///C:/my_video.mp4").unwrap()).unwrap(),
}
}
fn title(&self) -> String {
String::from("Video Player")
}
fn update(&mut self, _message: ()) {}
fn view(&mut self) -> Element<()> {
VideoPlayer::new(&self.video).into()
}
}
构建
遵循GStreamer构建说明。这应该能够在MSVC、MinGW、Linux和MacOS上编译。
许可
根据您的选择,许可为以下之一
。
依赖关系
~42–80MB
~1.5M SLoC