#video #iced #networking #file-path

iced_video_player

为Iced提供便捷的视频播放小部件

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多媒体

Download history 4/week @ 2024-06-10 131/week @ 2024-08-05 8/week @ 2024-08-12

每月139次下载

MIT/Apache

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