大家好!vs+mfc+ffmpeg求一个最简单的视频播放器,只需要播放,暂停,停止,拖动进度条到指定时间播放这几个功能就可,谢谢(播放时间精确到毫秒),谢谢!
6条回答 默认 最新
- Leodong. 2023-03-13 14:18关注
以下是一个vs+mfc+ffmpeg简单的视频播放器主界面,具体代码如下:
// VideoPlayerDlg.h 文件 #pragma once #include "ffmpeg.h" #include "SliderCtrlEx.h" // 自定义滑动条控件 class CVideoPlayerDlg : public CDialogEx { public: CVideoPlayerDlg(CWnd* pParent = nullptr); // 标准构造函数 virtual ~CVideoPlayerDlg(); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_VIDEOPLAYER_DIALOG }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: HICON m_hIcon; BOOL m_bPlaying; // 是否正在播放 BOOL m_bPause; // 是否暂停 BOOL m_bDragSlider; // 是否正在拖动滑动条 int64_t m_iDuration; // 视频总时长 int64_t m_iCurrentTime; // 当前播放时间 AVFormatContext* m_pFormatCtx; // 视频格式上下文 AVCodecContext* m_pCodecCtx; // 视频解码器上下文 AVCodec* m_pCodec; // 视频解码器 AVFrame* m_pFrame; // 视频帧 uint8_t* m_pFrameBuffer; // 视频帧缓存 int m_iVideoStreamIndex; // 视频流索引 CSliderCtrlEx m_slider; // 自定义滑动条控件 void OpenVideo(const char* szFileName); // 打开视频文件 void CloseVideo(); // 关闭视频文件 void PlayVideo(); // 播放视频 void PauseVideo(); // 暂停视频 void StopVideo(); // 停止视频 void SeekTo(int64_t iTime); // 跳转到指定时间播放 void DrawFrame(AVFrame* pFrame); // 绘制视频帧 static DWORD WINAPI DecodeThread(LPVOID lp); // 解码线程函数 void OnTimer(UINT_PTR nIDEvent); // 定时器回调函数 virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnBnClickedButtonPlay(); afx_msg void OnBnClickedButtonPause(); afx_msg void OnBnClickedButtonStop(); afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); DECLARE_MESSAGE_MAP
如果以上回答对您有所帮助,望采纳~谢谢
解决 无用评论 打赏 举报
悬赏问题
- ¥15 Vue3 大型图片数据拖动排序
- ¥15 划分vlan后不通了
- ¥15 GDI处理通道视频时总是带有白色锯齿
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大