标签: directshow

FFPLAY 显示视频,但 FFMPEG 仅显示黑色

我正在尝试使用ffmpeg从 VIDBOX 设备录制视频/音频。使用 Windows 10 和ffmpeg版本 N-86129-g1e8daf3,执行时我可以正常看到和听到视频/音频

ffplay -f dshow -i video="VIDBOX NW07":audio="Microphone (VIDBOX NW07)"
Run Code Online (Sandbox Code Playgroud)

但是,当我执行时,我只录制黑屏(和正确的音频)

ffmpeg -f dshow -i video="VIDBOX NW07":audio="Microphone (VIDBOX NW07)" -c:v libx264 out.mp4
Run Code Online (Sandbox Code Playgroud)

是什么原因导致它在ffplay中工作但在ffmpeg 中不起作用?

directshow ffmpeg

1
推荐指数
1
解决办法
1941
查看次数

用于Symbian OS的DirectShow模拟?

所以Windows Mobile有DirectShow用于媒体编辑捕获,那么Symbian OS(s60 v5)的模拟是什么?

windows directshow symbian nokia

0
推荐指数
1
解决办法
445
查看次数

如何获得directshow网络摄像头视频流的宽度和高度

我发现了一些代码,可以让我访问网络摄像头的原始像素数据.但是我需要知道图像的宽度,高度,像素格式,最好是数据步幅(音高,内存填充或任何你想要调用它),如果它不是每个像素的宽度*字节之外的东西

#include <windows.h>
#include <dshow.h>

#pragma comment(lib,"Strmiids.lib")

#define DsHook(a,b,c) if (!c##_) { INT_PTR* p=b+*(INT_PTR**)a;   VirtualProtect(&c##_,4,PAGE_EXECUTE_READWRITE,&no);\
                                          *(INT_PTR*)&c##_=*p;   VirtualProtect(p,    4,PAGE_EXECUTE_READWRITE,&no);   *p=(INT_PTR)c; }


// Here you get image video data in buf / len. Process it before calling Receive_ because renderer dealocates it.
HRESULT ( __stdcall * Receive_ ) ( void* inst, IMediaSample *smp ) ; 
HRESULT   __stdcall   Receive    ( void* inst, IMediaSample *smp ) {     
    BYTE*     buf;    smp->GetPointer(&buf); DWORD len = smp->GetActualDataLength();
    //AM_MEDIA_TYPE* info;
    //smp->GetMediaType(&info);
    HRESULT   ret  =  Receive_   ( inst, smp …
Run Code Online (Sandbox Code Playgroud)

c++ webcam directshow

0
推荐指数
1
解决办法
3925
查看次数

如何在Windows中使用openCV FFMPEG视频I/O而不是DirectShow?

所以我正在尝试使用openCV videoWriter编写视频:

writer=cv.CreateVideoWriter(path+"test_output.avi",-1,fps,(W,H),1)
Run Code Online (Sandbox Code Playgroud)

因此,不是提供我提供的FOURCC -1,而是为了查看我可用的编解码器.结果是Microsoft RLE,Microsoft Video 1,Intel YUV和Uncompressed.

原因是当使用CMAKE为Visual Studio 10 x64配置openCV时,这就是我在视频i/o中所拥有的:视频I/O:DirectShow

有没有办法将其切换到FFMPEG?我知道ffmpeg dll存在于\ 3dparty\ffmpeg中.我找了Cmake FFMPEG标志,但没有找到任何标志.奇怪的是在视频部分下的opencv根目录中的CmakeLists.txt中:

if(UNIX AND NOT APPLE)
<FFMPEG stuff>
elseif(WIN32)
    status("  Video I/O:"        HAVE_VIDEOINPUT     THEN DirectShow ELSE NO)
endif()
Run Code Online (Sandbox Code Playgroud)

所以在我看来opencv自动切换到DirectShow并且不允许使用FFMpeg.或者更确切地说,可以升级Driectshow以支持其他格式,如Divx或h264?有任何想法吗?

opencv directshow ffmpeg cmake

0
推荐指数
1
解决办法
2万
查看次数

如何在需要 LPCOLESTR 的函数中使用 argv[]

我有一个项目,其中一个函数使用 LPCOLESTR 类型的参数

 HRESULT BuilGraph(IGraphBuilder *pGraph,LPCOLESTR dstFile)
Run Code Online (Sandbox Code Playgroud)

我的问题是如何使用 argv[1] 并将其放入 dstFile 中,我尝试过:

LPCOLESTR somevar =OLESTR(argv[1]) ; 
Run Code Online (Sandbox Code Playgroud)

感谢 Roman 和 Joachim,我对代码做了一些修改,现在看起来像这样: char pathstuff[50]; sprintf(pathstuff,"C:\Users\engine\Desktop\engine%s.avi",argv[1]);

所以我得到了路径视频名称,知道 argv[1] 将是一个数字,我如何将其转换为

 LPCOLESTR  ???      
Run Code Online (Sandbox Code Playgroud)

它不起作用,任何想法如何解决这个问题。提前致谢。

c directshow visual-studio-2010

0
推荐指数
1
解决办法
525
查看次数

VARIANT结构(COM)似乎没有成员

使用Visual Studio 2015 RC和Windows SDK 7.1以及这个简单的DirectShow代码(带有COM的C++)

#include <dshow.h>
#include <iostream>

int main ()
{
    CoInitialize(nullptr);


    ICreateDevEnum* devEnum = nullptr;
    CoCreateInstance(
        CLSID_SystemClock,
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_ICreateDevEnum,
        reinterpret_cast<void**>(devEnum)
    );

    IEnumMoniker* monikerEnum = nullptr;
    devEnum->CreateClassEnumerator(
        CLSID_VideoInputDeviceCategory,
        &monikerEnum,
        0
    );

    IMoniker* moniker = nullptr;
    ULONG fetchedCount = 0;

    while (monikerEnum->Next(1, &moniker, &fetchedCount))
    {
        IPropertyBag* propBag = nullptr;
        moniker->BindToStorage(0, 0, IID_IPropertyBag, reinterpret_cast<void**>(propBag));

        VARIANT var;
        VariantInit(&var);

        propBag->Read(L"FriendlyName", &var, nullptr);

        std::cout << var.bStrVal;

        VariantClear(&var);
    }
}
Run Code Online (Sandbox Code Playgroud)

导致:

错误C2039:'bStrVal':不是'tagVARIANT'的成员

tagVARIANT结构被定义为:

typedef /* [wire_marshal] */ struct tagVARIANT VARIANT; …
Run Code Online (Sandbox Code Playgroud)

c++ com directshow variant visual-studio-2015

0
推荐指数
1
解决办法
641
查看次数