# NativeVideo **Repository Path**: judgeou/native-video ## Basic Information - **Project Name**: NativeVideo - **Description**: 尝试构建一个视频播放器,使用 DirectX 11 渲染 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 40 - **Forks**: 25 - **Created**: 2021-01-23 - **Last Updated**: 2025-06-19 ## Categories & Tags **Categories**: multimedia **Tags**: None ## README # NativeVideo C++ 编写的视频播放器,使用 DirectX 11 渲染,尽可能少依赖 ## 依赖 * FFmpeg 4.3 以上 * [Dear ImGui](https://github.com/ocornut/imgui) (已经包含在项目里面了) ## 编译 * 把 include 和 lib 路径配置好 * 用 Visual studio 2019 打开 * 直接编译解决方案 ## 操作 * 鼠标移动就会出现UI,可以拖动播放进度条,滚轮调整音量,回车键全屏(不要按ALT + ENTER)。鼠标不动UI自然消失 * WASD 前进后退,按住鼠标右键可以移动视角,总之就像FPS一样(但是空格不能跳跃😂)。Setting 窗口的 `Reset` 按钮可以恢复视角 * 可以插入xbox手柄,用左摇杆和右摇杆控制摄像机,LT键按住可以放大,松开恢复,手柄十字键的上下控制音量,左右控制进度,A键控制暂停播放 * 其实这个3D世界有两块屏幕,另外一块在背面,`back` 按钮可以将视角移动到背面,Filters 的各种画面效果只会作用在背面的这块屏幕。 ## 目前的效果 ![a](images/Snipaste_2021-02-18_14-33-49.png) ![a](images/Snipaste_2021-02-18_14-34-18.png) ![a](images/Snipaste_2021-02-19_01-58-57.png) ![a](images/Snipaste_2021-02-19_20-20-41.png) ## 参考资料 * [FFmpeg examples](https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples) * [FFmpeg 使用 Dxva2 硬件加速以及渲染的一种方法](https://www.z4none.me/post/2020/ffmpeg-dxva2/) * [Streaming Video With FFmpeg and DirectX 11](https://medium.com/swlh/streaming-video-with-ffmpeg-and-directx-11-7395fcb372c4) * [Windows平台上编译ffmpeg源码,调试ffplay](https://www.bilibili.com/video/BV1VE411K766) * [【人工听译】Directx3D11入门详细教程](https://www.bilibili.com/video/BV1KC4y1Y7tc) * [Kernel (image processing)](https://en.wikipedia.org/wiki/Kernel_image_processing) * [bShaders](https://github.com/butterw/bShaders) * [Core Audio APIs, WASAPI, Rendering a Stream](https://docs.microsoft.com/en-us/windows/win32/coreaudio/rendering-a-stream)