下面两种方法可以使用C语言来简单的播放视频
废话不多说,直接上代码
方法一 使用DirectShow API
#include <windows.h>
#include <dshow.h>
#pragma comment(lib, "strmiids.lib") // 链接 DirectShow 库
int WINAPI main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
CoInitialize(NULL); // 初始化 COM 组件
IGraphBuilder* pGraphBuilder = NULL;
IMediaControl* pMediaControl = NULL;
// 创建 Filter Graph Manager
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGraphBuilder);
// 从文件名创建 DirectShow Filter
WCHAR fileName[] = L"exampl.wmv";//换成你的需要播放视频的地址
pGraphBuilder->RenderFile(fileName, NULL);
// 获取 IMediaControl 接口
pGraphBuilder->QueryInterface(IID_IMediaControl, (void**)&pMediaControl);
// 播放视频
pMediaControl->Run();
// 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// 停止播放并释放资源
pMediaControl->Stop();
pMediaControl->Release();
pGraphBuilder->Release();
CoUninitialize();
return (int)msg.wParam;
}
上述代码使用DirectShow API来播放名为exampl.wmv
的视频文件。你需要将视频文件与代码文件放在同一个目录下或使用绝对路径,并将示例代码中的文件名修改为视频文件的实际名称。
方法二 利用媒体播放器
#include <windows.h>
#include <shellapi.h>
#include <stdio.h>
int main()
{
// 使用 ShellExecute 打开默认的媒体播放器
HINSTANCE hInst = ShellExecute(NULL, L"open", L"视频路径", NULL, NULL, SW_SHOWNORMAL);
if ((INT_PTR)hInst <= 32)
{
// 打开失败
printf("无法打开媒体播放器\n");
}
return 0;
}
上述代码将使用默认的媒体播放器打开名为exampl.mp4
的视频文件。你需要将视频文件与代码文件放在同一个目录下或使用绝对地址,并将示例代码中的文件名修改为视频文件的实际名称。
如果遇到打开失败的情况,你可以尝试以下解决方法:
- 确认系统中已安装支持播放视频文件的媒体播放器,并且该播放器与视频文件类型关联。
- 验证指定的视频文件路径是否正确,尝试使用绝对路径来确保准确性。
- 尝试手动打开视频文件,检查是否能够在系统中正常播放。
要为特定的文件类型设置默认关联的媒体播放器,可以在Windows操作系统中执行以下步骤:
- 找到你要关联的视频文件类型的一个示例文件(例如
.mp4
文件)。 - 右键单击该文件,选择 "打开方式" 或 "打开方式" -> "选择默认程序"。
- 在弹出的对话框中,选择你希望关联的媒体播放器应用程序。如果列表中没有所需的播放器,可以单击 "浏览" 或 "查找" 按钮,然后浏览到播放器应用程序的可执行文件(
.exe
文件)。 - 选中 "始终使用选择的程序打开此类文件" 的复选框。
- 单击 "确定" 或 "应用"。