标签: directshow

DirectShow编译问题

我正在 64 位平台和 Windows SDKv 7.1 上使用 vs2010。我为 64 位平台构建了基类并在我的项目中进行了配置。但我面临以下问题。我正在尝试连接 Logitech 910 HD 摄像头。

1>LogitechC910Interface.obj : error LNK2001: unresolved external symbol __imp_VariantClear
1>LogitechC910Interface.obj : error LNK2001: unresolved external symbol __imp_CoCreateInstance
1>LogitechC910Interface.obj : error LNK2001: unresolved external symbol __imp_CoUninitialize
1>LogitechC910Interface.obj : error LNK2001: unresolved external symbol __imp_VariantInit
1>LogitechC910Interface.obj : error LNK2001: unresolved external symbol __imp_CoInitializeEx
1>C:\PMD\windows\windows64bit\PMDSDK\examples\Release\simple.exe : fatal error LNK1120: 5 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

c++ windows directshow

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

空渲染器不在 graphedit 中

我在 Windows Server 2012 R2 上运行 GraphEdit,我注意到空渲染器不存在。我正在使用的其他一些 directshow 过滤器将在此服务器中运行,而空渲染器是唯一不存在的过滤器。

我已经注册了quartz.dll和qedit.dll,但仍然没有任何东西。如何在 Server 2012 上使用空渲染?

干杯。

winapi directshow

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

网络摄像头 MJPG 捕获流在 Windows 10 上不可用

在 Windows 10 build 10.1607.14393.10(又称周年纪念版)上,我无法再获取 MJPG 捕获流。曾经是 MJPG 和 YUY2 分辨率,现在我在 DirectShow(内核流)和 Media Foundation MJPG 中仅获得 YUY2,然后在 IBaseFilter 源连接到任何内容之前将媒体类型转换为 NV12。尝试使用不同相机的多个系统。有什么想法可能是错的吗?

     640x480   @30   YUY2
     ...
     640x480   @30   MJPG <- gone
 ...
DirectShow:
    com_t<IAMStreamConfig> sc;
    if_failed_return_result(camera_output_pin->QueryInterface(&sc));
    int number_of_capabilities = 0;
    int capability_size = 0;
    if_failed_return(sc->GetNumberOfCapabilities(&number_of_capabilities, &capability_size), -1);
    for (int i = 0; i < number_of_capabilities && k < count; i++) {
        VIDEO_STREAM_CONFIG_CAPS scc;
        assert(sizeof(scc) == capability_size);
        AM_MEDIA_TYPE* mt = null;
        if_failed_return(sc->GetStreamCaps(i, &mt, (BYTE*)&scc), -1);
...
Run Code Online (Sandbox Code Playgroud)

在MMF中:

    640x480   @30   YUY2
    ...
    640x480   @30 …
Run Code Online (Sandbox Code Playgroud)

webcam directshow video-capture ms-media-foundation windows-10

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

我可以使用 av_write_frame() 而不是 av_interleaved_write_frame() 吗?

我正在使用 ffmpeg 在 Windows 平台上编写 AV muxer DirectShow Filter,它将视频和音频流混合到 mp4/ts/flv 文件或 rtsp/rtmp/udp 流中,我确认视频/音频流的 dts 有序增加所以不需要 dts 重新排序,所以我可以用av_write_frame()代替av_interleaved_write_frame()吗?av_write_frame()直接将数据包写入多路复用器,av_interleaved_write_frame()如果没有引用计数,则会复制数据包,所以我更喜欢使用,av_write_frame()因为我认为它应该更有效(没有复制或缓冲),我的想法正确吗?我可以使用av_write_frame()吗?

directshow ffmpeg libavformat

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

directshow反向播放

我目前有一个正确播放的DirectShow.NET图形,但我希望它能够反向播放(从最后开始并向后播放到开头).

我试过玩IMediaSeeking :: SetRate(double)方法,但这只适用于正值.当我尝试使用负值时,它会崩溃.

救命!

我正在使用.avi视频文件,但如果能够解决这个问题,我会尝试不同的格式.

video directshow directshow.net

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

WPF控制问题

我面临一个问题,其中WPF应用程序无法更新进度条甚至wpf窗口上的按钮停止发光,直到我移动窗口然后一切都很好.

每次我更新实际生成WM_PAINT消息但没有解决问题的进度条时,我都尝试调用InvalidateRect.这个问题是随机发生的,有些时候不会发生.

我的应用程序在后台使用DirectShow,增强视频渲染用于视频渲染.如果我用VMR替换增强型视频渲染器一切正常.

如果有人能帮助我,我将不胜感激.

谢谢Sohrab.

wpf directshow

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

为什么VC2008认为这个类是抽象的?

我正在编写一些代码来处理使用DirectShow从某些摄像头输入的视频,所以我必须实现ISampleGrabberCB.

我实现接口的类编译好了,但是当我尝试实例化它时,编译器会引发" error C2259: 'SampleGrabberCB' : cannot instantiate abstract class".

这是我正在实现的界面:

interface ISampleGrabberCB : public IUnknown {
    virtual STDMETHODIMP SampleCB( double SampleTime, IMediaSample *pSample ) = 0;
    virtual STDMETHODIMP BufferCB( double SampleTime, BYTE *pBuffer, long BufferLen ) = 0;
};
Run Code Online (Sandbox Code Playgroud)

这是我的SampleGrabberCB标题:

#pragma once

#include "stdafx.h"

class SampleGrabberCB : public ISampleGrabberCB {
private:

    int                 _refCount;
    DShowCaptureDevice* _parent;

public:
//  SampleGrabberCB();
    SampleGrabberCB(DShowCaptureDevice* parent);
    ~SampleGrabberCB();

    virtual STDMETHODIMP BufferCB(double sampleTime, BYTE* pBuffer, long bufferLen);
    virtual STDMETHODIMP SampleCB(double sampleTime, IMediaSample * pSample, long bufferLen); …
Run Code Online (Sandbox Code Playgroud)

c++ abstract-class directshow

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

GDCL Mpeg-4多路复用器问题

我只是创建一个简单的图形

SourceFilter(*.mp4 file format) ---> GDCL MPEG 4 Mux Filter ---> File writer Filter
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是当源是h264文件格式时

SourceFilter( *.h264 file format) ---> GDCL MPEG 4 Mux Filter---> File writer Filter
Run Code Online (Sandbox Code Playgroud)

它录制文件,但录制的文件无法在VLC播放器,QuickTime,BS播放器,WM播放器中播放.我做错了什么?记录h264视频源的任何想法?我需要H264 Mux吗?

最好的祝愿

PS:我只想录制视频...为什么我需要多路复用?

directshow

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

有效地从视频中抓取像素

我正在寻找一种有效的方法来从视频文件中获取图像数据.我目前正在测试FilgraphManagerClass.GetCurrentImage()Interop.QuartzTypeLib库.这就是我需要的,但速度很慢.我需要处理每个视频的所有帧.我有什么更好的选择?

要求

  • 必须是帧精确的.< - 非常重要!
  • 允许我访问解码的像素缓冲区(int或者数组byte[]),理想情况下是RGB24或RGB32.
  • 可以实时或更快地抓取缓冲区.我不需要显示视频,我只需要分析像素.
  • 处理mp4文件(h264/aac).如果需要,我可以通过AviSynth重新打包或帧服务,但不能涉及重新编码.

欢迎大家提出意见.

一些代码请求:

FilgraphManagerClass graphClass = new FilgraphManagerClass();
graphClass.RenderFile(@"C:\tmp\tmp.avs");

int sz = (graphClass.Width * graphClass.Height + 10) * 4;    
int[] buffer = new int[sz - 1];
Run Code Online (Sandbox Code Playgroud)

然后我逐步走过每一帧.我在循环中有这样的东西:

graphClass.GetCurrentImage(ref sz, out buffer[0]);
//DoStuff(buffer);
graphClass.CurrentPosition += graphClass.AvgTimePerFrame;
Run Code Online (Sandbox Code Playgroud)

c# video directshow

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

使用DirectShow从内存渲染

我是DirectShow的新手,我正在寻找一种方法来渲染已经使用DirectShow.NET加载到内存中的视频.我怎样才能做到这一点?即使你给我一个亮点,我也要感恩.

c# video directshow directshow.net

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