Directshow capture from avermedia gamer portable C875 - directshow

I have purchased an avermedia Gamer portable C875 capture device and wish to integrate to it using directshow.
I have tried OBS Studio and this captures fine, however when I try any of my own directshow code in c++ builder I can see the device, but I cannot obtain video format or any video feed.
I have tried datastead ffmpeg components, mitov basic video, winsoft wcamera and FFVCL components, all which are directshow compatible and all of which detect the device but cannot preview or capture any video.
I even used straight forward directshow code from #Spektre which is just a basic wrapper for the windows DirectShow API.
This detects but freezes when calling
hr = graph->AddSourceFilterForMoniker(moniker, 0, dev->filtername, &dev->filter);
and dev->filtename = "LGP Stream Engine"
If I take this device out of the list then directshow driver fails on Select of the "Avermedia C875 Capture device"
I contacted avermedia and they say the device is directshow 10 compatible and no new driver work being done as it is EOL.
Any suggestions as to how I can interface to and capture from this device using directshow? EZCapture works fine, C875 doesn't.

It turns out that the avermedia C875 is not compatible with writing direct to an AVI capture or video render. As it is an obsolete product avermedia are not interested in providing a more compliant directshow driver.
Avermedia gamer lite portable 2 plus, is directshow compliant and does render as well as save to AVI.
I am not sure what OBS does that is different, the project is a bit too complex for me to try and extract just the video recording section to see how it handles things differently.
Thanks for the feedback #Roman, helped me track things down.

Related

Displaying different stuff to multiple Projectors.

I want to connect multiple projector to single laptop, I found about VGA Splitter (http://www.kvmswitchtech.com/vga-splitter-350mhz-8-port-p46359.htm) which can use to connect multiple projectors to single PC.
But I don’t want to display whole screen in both Projectors, in short Projectors should display different stuff at same time.
For Example:-
Projector 1 can Display Power point Presentation and Projector 2 can Display the running movie in player.
I got below set of Questions
Is there any Software available to perform this operation?
If I want to write my own application, Is Directshow (Provided by Microsoft ) is good one to start?
Is there any other VGA Programming language available?
Is there any Software available to perform this operation?
The primary question you are going to get here is how the projectors are connected to PC. The device might need specific integration and you're moving the item #2 below immediately. Otherwise it can be a sort of secondary monitor and you can extend your desktop over it, and then any full screen application running on the secondary monitor is going to be projected.
Perhaps, you will find more software choices going to SuperUser.
If I want to write my own application, Is Directshow (Provided by Microsoft ) is good one to start?
As mentioned above, the hardware might need you to use specific SDK from the vendor and this is your starting point. DirectShow is the API that covers multiple related tasks and might be of use here:
it is capable to built media pipelines terminating at DirectShow-compatible video output device (the projector might be not might be not capable/compatible)
it allows you to play media files into your application and otherwise control video/audio and integrate it into higher level software
DirectShow as API does not fully cover requested task, but it definitely relevant might be used in the in-house built Windows based app.
Is there any other VGA Programming language available?
The "language" is not actually language and it is how particular device is integrated with PC. This is typically covered by hardware vendors who provide the hardware with accompanying development kits and samples.

OpenRTSP Qt integration for video rendering

I was trying to use Qt for playing live video for which Qt provides a phonon class. However, the limitation with this is that it is not capable of decoding RTSP packets on windows (since phonon uses Directshow on windows platform).
In order to make it capable of doing this, I am planning to now integrate openRTSP with Qt. Within openRTSP where can I find a pointer / handle to the video buffer or frame buffer so that I can pass on this to my Qt widget for display.
Has anyone attempted this before?
Any pointers on the correct approach for doing this would be highly appreciated.
Take a look at GStreamer and GStreamer Qt bindings. They provide VideoWidget etc so it should provide you enough code examples how you should do this: http://gstreamer.freedesktop.org/modules/qt-gstreamer.html

How are codecs registered?

I am trying to get a deeper understanding around the codec area and how it all works.
The primary drive is the uncertainty of installing codec packs to deal with certain unplayable videos, which ends up not allowing the playback of those files anyway. This is often later complicated by installing other codec packs on top. I have also noticed that sometimes simply reinstalling a codec pack can cause videos, which were playable before to be unplayable after codec pack reinstall.
What I am curious about the most is what is happening in the background when a codec pack is installed (Shark007, CCCP, K-Lite) - how are codecs registered with different players, windows media player in particular? Is there a list of known codecs in WMP internals which gets new codecs added to? How can I find out whether I have a particular codec for a particular encoding type? How does DirectShow and its filters work together with new codecs?
Most of the information that I have found has been quite top level, with most advice being playing around with codec pack settings and/or installing other codec packs.. :(
Any sort of advice or recommendations for further info on this area (books, links, etc) would be GREATLY appreciated! :)
In Windows the most widely used multimedia API is DirectShow, and as you indicated in question tag you perhaps target exactly it. There are other APIs too. Important note is that DirectShow is NOT the primary API for Windows Media Player: WMP would attempt to play a file through Media Foundation, and if failed, the second attempt would be to leverage legacy DirectShow. Still, DirectShow is the most commonly used in applications.
In DirectShow, the multimedia pipeline is built from filters which are connected into a graph through their pins. The connected structure has the data streamed through, e.g. from file to decoded video/audio delivered to the devices. The codecs are components that frequently used within this pipeline.
The registration of codecs is the scope of authority of Filter Mapper subsystem. It takes care of all registrations and provides connectivity options for Intelligent Connect - the subsystem which connects stuff together, including supplies codecs when they are needed and the application requests the codec to be provided automatically.
The best documentation of the internals you will find on MSDN, under DirectShow.

Develop a media player which accept commands from serial port. Is it possible? How to do it?

I'm trying to develop a media player in which the control commands are comming from serial port like
for play you will get 'P' charcter from serial port.....
for Forward = 'F'
for Reverse = 'R'
for Pause = 'P'
These commands are comming from our microcontroller board.
Can anyone help me where should i start? How to do this?
Its going to be very very basic player. No fancy things at all. For e.g. a C program output etc.
I'm going to use it for my presentations. I don't know how to do this so please help.
It doesn't matter where the commands are coming from, you can pass them to a media player object like Windows Media Player. On Windows, .Net has pretty good support for the Media Player. I am sure the same can be done on other platforms too.
Here's a reference article for exposing the Media Player to C++ and here's another one for embedding it in a .NET form.
Also, take a look at this Video LAN project page (they manage the development of VLC). You can do a lot with the VLC player through command line.
A cross platform media player like VLC can be controlled via command line switches as mentioned here, or via API as explained here.

What are effective options for embedding video in an ASP.NET web site?

A quick glance at the present-day internet would seem to indicate that Adobe Flash is the obvious choice for embedding video in a web page. Is this accurate, or are they other effective choices? Does the choice of ASP.NET as a platform influence this decision?
Flash is certainly the most ubiquitous and portable solution. 98% of browsers have Flash installed. Other alternatives are Quicktime, Windows Media Player, or even Silverlight (Microsoft's Flash competitor, which can be used to embed several video formats).
I would recommend using Flash (and it's FLV video file format) for embedding your video unless you have very specific requirements as far as video quality or DRM.
Flash is usually the product of choice: Everyone has it, and using the JW FLV Player makes it relatively easy on your side.
As for other Video Formats, there are WMV and QuickTime, but the players are rather "heavy", not everyone might have them and they feel so 1990ish...
Real Player... Don't let me even start ranting about that pile of ...
The only other alternative of Flash that I would personally consider is Silverlight, which allows streaming WMV Videos. I found the production of WMV much better and easier than FLV because all Windows FLV Encoders I tried are not really good and stable, whereas pretty much every tool can natively output WMV. The problem with Silverlight is that no one has that Browser Plugin (yet?). There is also a player from JW.
One consideration would be whether video playback is via progressive download or streaming. If it's progressive download, then I would say use Flash because you get a wider audience reach.
For streaming wmv, it is out of the box functionality provided by Windows Media Services
For streaming flash, you will have to install a streaming server on your Windows box. Some options are:
Adobe Flash Media Server (Commercial)
Wowza Media Server (Free/Commercial)
Red5 Flash Server (Open Source)
If you have access to Microsoft Expression Encoder 2, you can use that to encode a video file and generate a Silverlight video player. Then if you have IIS 7, you can use Adaptive or Smooth Streaming also checkout Smooth HD for a really cool example.
You can also do streaming from the free Microsoft Silverlight Streaming Service. It's connected to a Windows Live account.
A consideration is that the client will need to have Silverlight installed, just like Flash, but Flash has been around longer.
<object width="660" height="525"><param name="movie" value="http://www.youtube.com/v/WAQUskZuXhQ&hl=en&fs=1&color1=0x006699&color2=0x54abd6&border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/WAQUskZuXhQ&hl=en&fs=1&color1=0x006699&color2=0x54abd6&border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="525"></embed></object>
I have worked for a company that developed a system for distributing media content to dedicated "players". It was web based and used ASP.NET technology and have tried almost every possible media format you can think of and your choice really comes down to asking yourself:
does it needs to play directly out of the box, or can I make sure that the components required to play the videos can be installed beforehand?
If your answer is that it needs to play out of the box then really your only option is flash (I know that it is not installed by default, but most will already have it installed)
If it is not a big issue that extra components are needed then you can go with formats that are supported by windows media player
The reason why windows media player falls into the second option is because for some browsers and some formats extra components must be installed.
We had the luxury that the "players" were provided by us, so we could go for the second option, however even we tried to convert as much as possible back to flash because it handles way better than windows media player
"Does the choice of ASP.NET as a platform influence this decision?"
Probably not.

Resources