C语言播放视频的两种方法

下面两种方法可以使用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操作系统中执行以下步骤:

  1. 找到你要关联的视频文件类型的一个示例文件(例如.mp4文件)。
  2. 右键单击该文件,选择 "打开方式" 或 "打开方式" -> "选择默认程序"。
  3. 在弹出的对话框中,选择你希望关联的媒体播放器应用程序。如果列表中没有所需的播放器,可以单击 "浏览" 或 "查找" 按钮,然后浏览到播放器应用程序的可执行文件(.exe文件)。
  4. 选中 "始终使用选择的程序打开此类文件" 的复选框。
  5. 单击 "确定" 或 "应用"。

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值