none
Display Live TV RRS feed

  • Question

  • Hi,

    I have an application which will be shown on TV in the customers' waiting area to show the ticket numbers.

    I want to know how can I display a live TV in the same application within a panel or a component so it will be part of the screen?

    Saturday, September 8, 2012 8:27 AM

Answers

  • I'm not certain that I fully understand what exactly your position is, which is why I was asking questions.

    To do what you originally asked, then I'd choose a video capture card or tuner card, and just play the incoming video in a window either by calling out to an external player application that lets you position its window, or by creating a DirectShow graph that renders to a video window.

    However, the first obvious option is to put up two displays in the waiting room.  One that is a TV and a second that is the "now serving" ticket number.  This is going to be the cheapest by far, because a TV doesn't cost as much as the development cost to develop this solution.

    But you seem to be keen on the idea of combining the displays, so you must have a particular look in mind.

    I'm not sure what the reasoning for combining the ticket number with the TV display is.  I can only assume either you want to overlay a "now serving" on the TV, so that people watching TV will see it (at the cost of interfering with the video content itself), or that you want to downsize the TV image and put it in a small box on the screen (like a picture-in-picture effect), where the screen is mostly your information about which ticket is next.

    If you're going to downsize the video, and you don't really care about audio, then I might just capture the incoming video with a video capture card or TV tuner card and play it in a window using a direct show video window.  This is pretty easy and doesn't even intrude on your app.  If your app just runs on the windows desktop, then you can simply pop up a video player in the right spot on the screen to show the TV feed. You can either capture HDMI, or analog video (cheap options) and then the audio you can either just tap off from the cable box and go directly to the speakers (if you don't care about latency, and you have separate audio input to the TV or separate speakers) or you can route the audio through the PC as well and send the PC audio to the TV audio input or speakers. 

    But if you want it to look more like your graphics are part of the video (like a corner bug, or lower-third graphic, or other style of overlay), then I might be more inclined to make it more TV-centric and leave the original video feed intact.  If you have a cable tuner box that outputs HDMI, then maybe put an HDMI capture card in the system and use direct show to composite a graphics layer over the HDMI stream and send HDMI out to the TV.  That way all the audio can be preserved and will stay in sync with the video too and you can leave 1080i as 1080i (if it's HDTV).

    Saturday, September 8, 2012 3:14 PM
  • You can use the Media Center application for your purposes.  Read Toub's "Fun with dvr-ms".

    Saturday, September 8, 2012 8:33 PM

All replies

  • I think DirectShow is still how it's done.  It's not a .NET API though, although there are several libraries that can help you do some of the straightforward parts through .NET

    The idea is to build a graph that captures the incoming video and displays it in a window.  You may want to consider whether or not you want audio, and how you're going to route that to the TV in the waiting room.

    You'll have to make a major architectural decision:

    1) The system is primarily a PC.  It captures audio and video and composites graphics on the windows desktop.  Output is to a monitor and speakers, probably over DVI and audio output from your sound card.  This is more "windows-like"  You might expect the mouse cursor to be visible on the output, for example.  (This sounds like what you originally suggested.)

    or 2) The system is primarily a video appliance, taking in an audio+video stream (from a TV tuner) and compositing graphics and outputting an audio+video signal downstream to go to the TV, perhaps over something like HDMI.  This is more "broadcast-like", and the audio+video pipeline is kept isolated from the windows desktop, but you'll be outputting a TV-friendly standard audio+video signal of some kind.  If you already have TV's in the waiting room, then your box can simply be "inserted" into the stream to combine the video feed with the waiting room graphics.

    Saturday, September 8, 2012 9:48 AM
  • if you were in my position, which one you'll decide? and why?
    Saturday, September 8, 2012 11:36 AM
  • I'm not certain that I fully understand what exactly your position is, which is why I was asking questions.

    To do what you originally asked, then I'd choose a video capture card or tuner card, and just play the incoming video in a window either by calling out to an external player application that lets you position its window, or by creating a DirectShow graph that renders to a video window.

    However, the first obvious option is to put up two displays in the waiting room.  One that is a TV and a second that is the "now serving" ticket number.  This is going to be the cheapest by far, because a TV doesn't cost as much as the development cost to develop this solution.

    But you seem to be keen on the idea of combining the displays, so you must have a particular look in mind.

    I'm not sure what the reasoning for combining the ticket number with the TV display is.  I can only assume either you want to overlay a "now serving" on the TV, so that people watching TV will see it (at the cost of interfering with the video content itself), or that you want to downsize the TV image and put it in a small box on the screen (like a picture-in-picture effect), where the screen is mostly your information about which ticket is next.

    If you're going to downsize the video, and you don't really care about audio, then I might just capture the incoming video with a video capture card or TV tuner card and play it in a window using a direct show video window.  This is pretty easy and doesn't even intrude on your app.  If your app just runs on the windows desktop, then you can simply pop up a video player in the right spot on the screen to show the TV feed. You can either capture HDMI, or analog video (cheap options) and then the audio you can either just tap off from the cable box and go directly to the speakers (if you don't care about latency, and you have separate audio input to the TV or separate speakers) or you can route the audio through the PC as well and send the PC audio to the TV audio input or speakers. 

    But if you want it to look more like your graphics are part of the video (like a corner bug, or lower-third graphic, or other style of overlay), then I might be more inclined to make it more TV-centric and leave the original video feed intact.  If you have a cable tuner box that outputs HDMI, then maybe put an HDMI capture card in the system and use direct show to composite a graphics layer over the HDMI stream and send HDMI out to the TV.  That way all the audio can be preserved and will stay in sync with the video too and you can leave 1080i as 1080i (if it's HDTV).

    Saturday, September 8, 2012 3:14 PM
  • You can use the Media Center application for your purposes.  Read Toub's "Fun with dvr-ms".

    Saturday, September 8, 2012 8:33 PM