4406|11

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

在WinCE下可以用DirectShow播放MPEG4视频文件 的问题??求教!!! [复制链接]

各位高手:求教!
我在EVC中利用DirectShow开发出的播放器,播放WMV格式的文件时,只有声音,没有视频!在WINCE的OS 设计中,改加的feature 也都有加了!不知为什么?还请各位高手赐教?

最新回复

解码出来的RGB数据(BYTE *pBuf),一包一包的,如何送往你的CMedia播放器?  详情 回复 发表于 2009-12-19 15:48
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
应该是你的程序写的有问题吧。
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
能播放,说明视频文件的解码库系统都支持。否则会提示无效的路径之类的错误。

应该是楼上所说的问题,楼主写的程序有问题。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

4
 
我做的利用DIRECTSHOW可以在CE5.0下播放的,没问题的
LZ可以参照下陆其明的《DIRECTSHOW开发指南》
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢各位的帮忙!我的程序是这样子的:
// Wceapp.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "Wceapp.h"
#include
#include
#include
#include
//#include


#define MAX_LOADSTRING 100
WINOLEAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter,DWORD dwClsContext, REFIID riid, LPVOID FAR* ppv);

IGraphBuilder   *pGraph = NULL;
IMediaControl   *pMediaControl = NULL;
IVideoWindow    *pVidWin = NULL;
HWND            g_hwnd;

// Global Variables:
HINSTANCE                        hInst;                        // The current instance
HWND                                hwndCB;                        // The command bar handle


// Forward declarations of functions included in this code module:
ATOM                                MyRegisterClass        (HINSTANCE, LPTSTR);
BOOL                                InitInstance        (HINSTANCE, int);
LRESULT CALLBACK        WndProc                        (HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK        About                        (HWND, UINT, WPARAM, LPARAM);


void PlayFile(void)
{
    // Create the filter graph manager.
    CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC,
        IID_IGraphBuilder, (void **)&pGraph);
    pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
    pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin);

    // Build the graph.
    pGraph->RenderFile(L"\\Storage Card\\BRIDGE\\cyl.wmv", NULL);

    //Set the video window.
    pVidWin->put_Owner((OAHWND)g_hwnd);
    pVidWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS);

    RECT grc;
    GetClientRect(g_hwnd, &grc);
    pVidWin->SetWindowPosition(0, 0, grc.right, grc.bottom);

    // Run the graph.
    pMediaControl->Run();
         //MessageBox (  NULL, TEXT ("This program requires Windows NT!"),
    //   
     //                             NULL, MB_ICONERROR) ;

}

int WINAPI WinMain(        HINSTANCE hInstance,
                                        HINSTANCE hPrevInstance,
                                        LPTSTR    lpCmdLine,
                                        int       nCmdShow)
{
        MSG msg;
        HACCEL hAccelTable;

        CoInitialize(NULL);

        // Perform application initialization:
        if (!InitInstance (hInstance, nCmdShow))
        {
                return FALSE;
        }

        hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_WCEAPP);

        PlayFile();

        // Main message loop:
        while (GetMessage(&msg, NULL, 0, 0))
        {
                if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
                {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                }
        }

        CoUninitialize();

        return msg.wParam;
}

//
//  FUNCTION: MyRegisterClass()
//
//  PURPOSE: Registers the window class.
//
//  COMMENTS:
//
//    It is important to call this function so that the application
//    will get 'well formed' small icons associated with it.
//
ATOM MyRegisterClass(HINSTANCE hInstance, LPTSTR szWindowClass)
{
        WNDCLASS        wc;

    wc.style                        = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc                = (WNDPROC) WndProc;
    wc.cbClsExtra                = 0;
    wc.cbWndExtra                = 0;
    wc.hInstance                = hInstance;
    wc.hIcon                        = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WCEAPP));
    wc.hCursor                        = 0;
    wc.hbrBackground        = (HBRUSH) GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName                = 0;
    wc.lpszClassName        = szWindowClass;

        return RegisterClass(&wc);
}

//
//  FUNCTION: InitInstance(HANDLE, int)
//
//  PURPOSE: Saves instance handle and creates main window
//
//  COMMENTS:
//
//    In this function, we save the instance handle in a global variable and
//    create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
        HWND        hWnd;
        TCHAR        szTitle[MAX_LOADSTRING];                        // The title bar text
        TCHAR        szWindowClass[MAX_LOADSTRING] = TEXT ("Hello DirectShow") ;                // The window class name

        hInst = hInstance;                // Store instance handle in our global variable
        // Initialize global strings
        LoadString(hInstance, IDC_WCEAPP, szWindowClass, MAX_LOADSTRING);
        MyRegisterClass(hInstance, szWindowClass);

        LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
        hWnd = CreateWindow(szWindowClass, TEXT ("DirectShow Sample"),, (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU |
        WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX),
                CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
                //50, 50, 50, 50, NULL, NULL, hInstance, NULL);

        if (!hWnd)
        {       
                return FALSE;
        }

        ShowWindow(hWnd, nCmdShow);
        UpdateWindow(hWnd);
        if (hwndCB)
                CommandBar_Show(hwndCB, TRUE);

        return TRUE;
}

//
//  FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
//
//  PURPOSE:  Processes messages for the main window.
//
//  WM_COMMAND        - process the application menu
//  WM_PAINT        - Paint the main window
//  WM_DESTROY        - post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        HDC hdc;
        int wmId, wmEvent;
        PAINTSTRUCT ps;
        TCHAR szHello[MAX_LOADSTRING];

        switch (message)
        {
                case WM_COMMAND:
                        wmId    = LOWORD(wParam);
                        wmEvent = HIWORD(wParam);
                        // Parse the menu selections:
                        switch (wmId)
                        {
                                case IDM_HELP_ABOUT:
                                   DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
                                   break;
                                case IDM_FILE_EXIT:
                                   DestroyWindow(hWnd);
                                   break;
                                default:
                                   return DefWindowProc(hWnd, message, wParam, lParam);
                        }
                        break;
                case WM_CREATE:
                        hwndCB = CommandBar_Create(hInst, hWnd, 1);                       
                        CommandBar_InsertMenubar(hwndCB, hInst, IDM_MENU, 0);
                        CommandBar_AddAdornments(hwndCB, 0, 0);
                        break;
                case WM_PAINT:
                        RECT rt;
                        hdc = BeginPaint(hWnd, &ps);
                        GetClientRect(hWnd, &rt);
                        LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
                        DrawText(hdc, szHello, _tcslen(szHello), &rt,
                                DT_SINGLELINE | DT_VCENTER | DT_CENTER);
                        EndPaint(hWnd, &ps);
                        break;
                case WM_DESTROY:
                        CommandBar_Destroy(hwndCB);
                        PostQuitMessage(0);
                        break;
                default:
                        return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

// Mesage handler for the About box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
        RECT rt, rt1;
        int DlgWidth, DlgHeight;        // dialog width and height in pixel units
        int NewPosX, NewPosY;

        switch (message)
        {
                case WM_INITDIALOG:
                        // trying to center the About dialog
                        if (GetWindowRect(hDlg, &rt1)) {
                                GetClientRect(GetParent(hDlg), &rt);
                                DlgWidth        = rt1.right - rt1.left;
                                DlgHeight        = rt1.bottom - rt1.top ;
                                NewPosX                = (rt.right - rt.left - DlgWidth)/2;
                                NewPosY                = (rt.bottom - rt.top - DlgHeight)/2;
                               
                                // if the About box is larger than the physical screen
                                if (NewPosX < 0) NewPosX = 0;
                                if (NewPosY < 0) NewPosY = 0;
                                SetWindowPos(hDlg, 0, NewPosX, NewPosY,
                                        0, 0, SWP_NOZORDER | SWP_NOSIZE);
                        }
                        return TRUE;

                case WM_COMMAND:
                        if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL))
                        {
                                EndDialog(hDlg, LOWORD(wParam));
                                return TRUE;
                        }
                        break;
        }
    return FALSE;
}


各位再帮忙see see!谢谢!
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
用我这个封装好的CMedia类看看?
http://blog.eeworld.net/norains/archive/2007/07/27/1712083.aspx
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

7
 
感谢中!从Norains那里得到了很大的启示!现在已经调好了!再次感谢各位
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
进来学习!
,,,,,
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

9
 
本人正准备用EVC做一个MP4不知各位有没有些建议先提醒提醒。谢谢!!!
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

10
 
mark
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

11
 
学习
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 5 楼 norains 的回复:
用我这个封装好的CMedia类看看?
http://blog.eeworld.net/norains/archive/2007/07/27/1712083.aspx


解码出来的RGB数据(BYTE *pBuf),一包一包的,如何送往你的CMedia播放器?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表