V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
tsl0922
V2EX  ›  分享创造

1 个多月时间,用 C++ 撸了个跨平台桌面视频播放器,现发布 1.0 版本

  •  3
     
  •   tsl0922 ·
    tsl0922 · 2023-01-12 15:59:45 +08:00 · 2987 次点击
    这是一个创建于 710 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前情提要:尝试做了个 mpv 播放器的图形界面 - ImPlay

    在那之后过了 1 个多月了,终于把功能完善的差不多、并且准备好构建叫不能,可以拿出来给大家试试了。

    预编译版本下载地址: https://github.com/tsl0922/ImPlay/releases

    Release 下有每个平台的安装方法。

    功能特性

    从 README 复制过来的,懒得再逐个翻译了。

    • Highly compatible with mpv
    • Graphical User Interface
      • Context Menu with most commonly used commands
      • Command Palette to quickly search commands and keys
      • Open Dialog for Media Files / Folders
      • Open URL / Path from Clipboard
      • Open DVD / Blu-ray Folder and ISO Image
      • Playlist Editing: Add, Clear, Shuffle
      • Shadow and Rounding effect for Interface
    • Scripting Developer Friendly
      • Visual view of mpv's internal properties
      • Console with completion, history support
      • Colorful mpv logs view with filter support
    • Cross platform: Window, Linux, macOS

    界面截图

    应上个帖子网友要求,加了圆角和阴影。

    • 右键菜单:基本包含了最常使用的功能 1
    • 命令面板:支持多种数据源,默认为快捷键绑定列表,还可以显示播放列表(可以搜索,对于打开 m3u 类的直播源播放列表很有用) 2 4
    • 调试窗口:(插件)开发神器,能显示 mpv 的内部属性,带颜色的实时日志,还可以执行命令(支持补全和历史)。 3

    新手写了 1 个月的 C++ 感受:发现还是有点点按照 C 的风格来写代码。有标准库确实稍微方便了一点点,不过 C++ 的标准库也真的是一言难尽,比如 string 很多常用的方法都没有。(楼主有一定 C 语言基础(写过 ttyd),C++ 是现学现卖的)

    24 条回复    2023-02-22 11:15:40 +08:00
    ipwx
        1
    ipwx  
       2023-01-12 16:07:54 +08:00   ❤️ 1
    C++ 标准库的很多问题,可以通过 boost 解决。

    boost 大部分库是 header-only ,不需要在系统级别安装依赖,只要把源代码塞到你项目里面就行。

    为了解决 boost 整个库过于庞大的问题,你可以使用 bcp 这个官方工具,从中裁剪你需要的子集出来。
    ipwx
        2
    ipwx  
       2023-01-12 16:10:54 +08:00
    比如 string 的常用方法可以用 boost 的 string algo 子库。

    https://www.boost.org/doc/libs/1_81_0/doc/html/string_algo/usage.html
    ttwxdly
        3
    ttwxdly  
       2023-01-12 16:22:16 +08:00
    膜拜一下大佬。
    ixinshang
        4
    ixinshang  
       2023-01-12 16:44:55 +08:00
    看着挺简洁啊,想拿到看网上的 IPTV 。
    xiaoz
        5
    xiaoz  
       2023-01-12 17:58:19 +08:00 via Android
    楼主强啊👍🏻谁问支持注册协议不?就是第三方通过注册协议调用,比如 potplayer://
    tsl0922
        6
    tsl0922  
    OP
       2023-01-12 18:03:08 +08:00   ❤️ 1
    @xiaoz 还不支持,可以考虑添加,我有空研究下。
    xiaoz
        7
    xiaoz  
       2023-01-12 18:17:43 +08:00
    @tsl0922 #6,感谢,支持了会很方便的调用播放。
    lw0717
        8
    lw0717  
       2023-01-12 18:56:22 +08:00
    star 一下
    justin2018
        9
    justin2018  
       2023-01-12 19:38:29 +08:00
    膜拜一下大佬
    yyt6801
        10
    yyt6801  
       2023-01-12 19:46:46 +08:00 via iPhone
    看起来不错哈
    lizhenda
        11
    lizhenda  
       2023-01-13 09:13:51 +08:00
    有点厉害啊
    Kimen
        12
    Kimen  
       2023-01-13 14:02:37 +08:00
    问一下,mpv 的 HDR 是需要自己实现的吗?
    tsl0922
        13
    tsl0922  
    OP
       2023-01-16 11:52:11 +08:00
    @Kimen 还没研究。看了下文档有不少参数可以配置,应该是 mpv 已经实现了的。
    Ccf
        14
    Ccf  
       2023-01-16 19:30:02 +08:00
    一直在追版本,发现有的 iso 格式的原盘播不了,蓝光文件夹和蓝光在播放时有点类似 vlc 会把所有的文件逐个播放,因为没法显示菜单,这种情况下,如何选择主视频文件?
    为何我在看直播的时候列表会出现乱码?
    [URL=https://www.imagebam.com/view/MEI4X1P][IMG]https://thumbs4.imagebam.com/60/64/2f/MEI4X1P_t.png[/IMG][/URL]
    能实现添加 smb 或者 webdav 格式的地址么?这样可以连 nas 了。
    Ccf
        15
    Ccf  
       2023-01-16 19:31:59 +08:00
    补充下测试环境:windows ltsc 1809 ,windows server 2019
    tsl0922
        16
    tsl0922  
    OP
       2023-01-16 20:32:01 +08:00
    @Ccf iso 直接用 mpv 也播放不了吗?选择文件的问题,可以看 Chapter 列表,不过我试了下一些 iso 里的 Chapter 也没标题,只能显示时间区间。
    直播乱码,可能是播放列表编码文件的问题,你可以试下用 mpv 会不会乱码,菜单里显示的列表也是 mpv 解析后拿过来的,或者把列表文件提供给我来测试一下。
    tsl0922
        17
    tsl0922  
    OP
       2023-01-16 20:36:28 +08:00
    smb 和 webdav 应该是支持的,只是没有浏览目录功能。你直接资源管理器里浏览文件,用播放器打开就可以了(或者直接拖到播放器窗口),我试了下 smb 没问题。

    webdav 地址 mpv 还没有直接支持,但是可以把 webdav:// 替换为 http:// 来播放
    https://github.com/mpv-player/mpv/pull/11081
    drw
        18
    drw  
       2023-01-17 09:36:40 +08:00
    大佬不准备添加中文界面吗
    Ccf
        19
    Ccf  
       2023-01-17 14:43:01 +08:00
    @tsl0922 我没有单独装 mpv 测试。
    自己复制了 alist 的文件播放,implay 只显示了下标题就回到默认桌面了。
    tsl0922
        20
    tsl0922  
    OP
       2023-01-17 16:31:56 +08:00
    @drw 有计划,但是需要慢慢来。。
    tsl0922
        21
    tsl0922  
    OP
       2023-02-08 14:17:20 +08:00
    @drw 已支持中文。可在最新开发版体验: https://github.com/tsl0922/ImPlay/releases/tag/continuous
    drw
        22
    drw  
       2023-02-22 09:41:48 +08:00
    @tsl0922 能否增加鼠标快捷支持?比如单击画面暂停 /播放,滚轮调节音量大小,双击全屏 /恢复等。这是播放器的一些习惯操作。
    tsl0922
        23
    tsl0922  
    OP
       2023-02-22 09:46:43 +08:00 via iPhone
    @drw 这个应该可以通过修改 mpv 的 input.conf 实现,不用额外加支持
    tsl0922
        24
    tsl0922  
    OP
       2023-02-22 11:15:40 +08:00
    input.conf 参考文档: https://mpv.io/manual/stable/#input-conf

    比如,要想实现你说的效果(单击暂停播放,滚轮调整音量大小,默认已经是双击全屏),可以添加下面内容到 input.conf:

    MBTN_LEFT cycle pause
    WHEEL_UP add volume 1
    WHEEL_DOWN add volume -1

    ImPlay 的 input.conf 可以在 "工具-打开配置目录" 的文件夹内找到。 @drw
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5832 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:26 · PVG 11:26 · LAX 19:26 · JFK 22:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.