Open sunflover opened 8 years ago
demo 已经上传
编译通过了,跑起来,既没有视频也没有音频。
CMedia m_media;//类成员 m_media.SetHWND(GetDlgItem(IDC_STATIC)->m_hWnd);//Picture Control On Dialog m_media.OpenFile("D:\CloudSync\PlayerProject\Wildlife.mkv");
void CffplaySDL2Dlg::OnBnClickedOk() { m_media.SetHWND(GetDlgItem(IDC_STATIC)->m_hWnd); m_media.OpenFile("D:\CloudSync\PlayerProject\Wildlife.mkv"); //m_media.OpenFile("D:\CloudSync\PlayerProject\Wildlife.mkv"); //m_media.OpenFile("D:/CloudSync/PlayerProject/Wildlife.mkv"); }
这几种写法都不行,换其他视频文件也都不行哦! 你确定你那儿是正常的吗?
我这里是正常的,能正常跑才发上来
注意:openfile 之后是跑的线程,如果你的程序创建的播放类不是指针的话,请创建全局变量,而不是局部变量 你直接跑我的项目,把里面的 void CffplaySDL2Dlg::OnBnClickedOk() { //其它代码不动 //这里改成你的路径 pChild1->media->OpenFile("D:/CloudSync/PlayerProject/Wildlife.mkv"); }
这样也跑不起来?
按照你的方法,我把代码改成如下,也没问题 注意,资源ID是 IDC_STATIC1 和 IDC_STATIC2,而不是IDC_STATIC void CffplaySDL2Dlg::OnBnClickedOk() { media.SetHWND(GetDlgItem(IDC_STATIC1)->GetSafeHwnd()); media.OpenFile("D:/CloudSync/PlayerProject/Wildlife.mkv"); }
代码如下: // ffplaySDL2Dlg.h : 头文件 //
// CffplaySDL2Dlg 对话框 class CffplaySDL2Dlg : public CDialogEx { // 构造 public: CffplaySDL2Dlg(CWnd* pParent = NULL); // 标准构造函数
// 对话框数据 enum { IDD = IDD_FFPLAYSDL2_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现 protected: HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public: CMedia m_media; afx_msg void OnBnClickedOk(); };
// ffplaySDL2Dlg.cpp : 实现文件 void CffplaySDL2Dlg::OnBnClickedOk() { m_media.SetHWND(GetDlgItem(IDC_STATIC_PIC)->GetSafeHwnd());//IDC_STATIC_PIC是一个Picture Control,在主对话框上; m_media.OpenFile("D:\CloudSync\PlayerProject\Wildlife.wmv"); //m_media.OpenFile("D:/CloudSync/PlayerProject/Wildlife.mkv"); }
结果要么崩溃,要么就是Picture Control是黑的,可以的话留个邮箱,方便交流。
你用我的demo代码成功了吗
想法很不错,把ffplay封装成类,把SDL换成最新版的 但是,请带一个Demo呀,我这样写 void CffplayTestDlg::OnBnClickedBtnOpen() { // TODO: 在此添加控件通知处理程序代码 CMedia video; video.SetHWND(GetDlgItem(IDC_STATIC)->m_hWnd); video.OpenFile("D:\CloudSync\PlayerProject\Wildlife.mkv"); } 跑到这一行,奔溃了 Media.cpp int read_thread(void *arg) is->last_video_stream = is->video_stream = -1;
再次希望能带一个能直接执行的Demo项目。