#ffmpeg #egui #player #video-player #cross #rust

bin+lib door_player

Door Player,通过 ffmpeg 和 egui 实现跨平台

1 个不稳定版本

0.3.12 2024年8月4日
0.3.11 2024年7月5日
0.3.10 2024年5月13日
0.3.8 2024年3月28日
0.3.1 2023年11月30日

#33多媒体

Download history 171/week @ 2024-05-03 123/week @ 2024-05-10 16/week @ 2024-05-17 1/week @ 2024-05-24 1/week @ 2024-05-31 2/week @ 2024-06-07 1/week @ 2024-06-14 2/week @ 2024-06-28 175/week @ 2024-07-05 4/week @ 2024-07-12 195/week @ 2024-07-26 127/week @ 2024-08-02 7/week @ 2024-08-09

每月329次下载

Apache-2.0

135KB
2.5K SLoC

播放器

Door player is cross-platform and simple, it is a good project for learning rust egui ffmpeg  

功能

  1. 播放 mp4/mkv 视频文件
  2. 嵌入式字幕
  3. 通过数据包快进(不支持倒退)
  4. 通过帧快进(不支持倒退)
  5. 下一/上一文件
  6. 键盘
    • 空格/左键点击 -> 切换播放或暂停
    • Esc -> 关闭
    • 双击/F1 -> 切换全屏
    • → 向左箭头 -> 快进数据包/帧/毫秒
    • ← 向右箭头 -> 快退毫秒
    • ↑ 向上箭头/+ -> 音量+
    • ↓ 向下箭头/- -> 音量-
    • Tab -> 标签搜索
    • Ctrl + Tab -> 为 "Tab" 保存当前位置
  7. 自动播放下一文件
  8. 按文件大小解码线程
  9. 其他

构建

ffmpeg

Ubuntu

#   ffmpeg 7
   sudo add-apt-repository ppa:ubuntuhandbook1/ffmpeg7 
   sudo apt update  
   sudo apt install libass-dev libavdevice-dev ffmpeg  
   
   note: if you want to downgrade to 6.0.  
   sudo apt install ppa-purge && sudo ppa-purge ppa:ubuntuhandbook1/ffmpeg7  
   sudo add-apt-repository ppa:ubuntuhandbook1/ffmpeg6  
   sudo apt update  
   sudo apt install libass-dev libavdevice-dev ffmpeg  
   
#   dependencies
   sudo apt install librust-alsa-sys-dev  

Windows

   git clone https://github.com/microsoft/vcpkg.git
   cd  vcpkg
   .\bootstrap-vcpkg.bat
   .\vcpkg.exe install ffmpeg
   set FFMPEG_DIR=C:/lang/vcpkg/installed/x64-windows

ffmpeg 代码(仅记录)

克隆 ffmpeg
cd ffmpeg
[//]: # (// --enable-libass --enable-avfilter : 添加滤镜字幕 )
./configure --enable-gpl --enable-static --enable-libass --enable-avfilter --enable-libx264 --enable-pic --enable-ffplay --enable-decoder=pcm*
make -j16 && sudo make install && sudo make uninstall

字体

egui 的默认字体不支持中文,因此在构建时从网上获取免费开源字体
从 GitHub URL 获取下载链接
GitHub URL: https://github.com/wordshub/free-font/blob/master/assets/font/%E4%B8%AD%E6%96%87/%E6%96%87%E6%B3%89%E9%A9%BF%E7%B3%BB%E5%88%97/%E6%96%87%E6%B3%89%E9%A9%BF%E5%BE%AE%E7%B1%B3%E9%BB%91.ttc
规则: https://[github_user_id].github.io/[repo_name]/ ,无 master 分支
下载链接: https://wordshub.github.io/free-font/assets/font/%E4%B8%AD%E6%96%87/%E6%96%87%E6%B3%89%E9%A9%BF%E6%AD%A3%E9%BB%91.ttc
查看: https://github.com/orgs/community/discussions/42655#discussioncomment-5669289
https://nvm-sh.github.io/nvm/blob/v0.39.5/install.sh

symphonia

查看
纯 Rust 媒体容器和音频解码库

matroska

查看

查看

egui-video(player) 门的播放器第一版基于此项目
small-player
ffmpeg-cpal-play-audio
stainless-ffmpeg
ffplay源码分析
ffplay源码分析4-音视频同步
FFplay视频同步分析—ffplay.c源码分析
ffplay
ffmpeg
ffmpeg播放器
学习如何使用 FFmpeg 打造自己的播放器
将音视频时钟同步封装成通用模块
FFmpeg 入门(5):视频同步
FFMPEG 硬件解码API介绍
ffmpeg 时基timebase、时间戳pts/dts、延时控制delay
FFmpeg DTS、PTS和时间戳TIME_BASE详解

依赖项

~15–58MB
~1M SLoC