Microsoft DirectX 9.0 |
This topic applies to Windows XP Service Pack 1 only.
The Video Control can pause a live video stream using the Stream Buffer Engine. Place two separate instances of the Video Control in your Web page. The first instance will receive the tune request and record the content, using the MSVidStreamBufferSink (sink) object. The second instance will play back the content, using the MSVidStreamBufferSource (source) object.
In the following example, MSVidCtl_Sink
is for the sink and MSVidCtl_Src
is for the source:
<BODY>
<!-- Stream Buffer Sink instance of the Video Control -->
<OBJECT
ID="MSVidCtl_Sink"
CLASSID="CLSID:B0EDF163-910A-11D2-B632-00C04F79498E" >
</OBJECT>
<!-- Stream Buffer Source instance of the Video Control -->
<OBJECT
ID="MSVidCtl_Src"
CLASSID="CLSID:B0EDF163-910A-11D2-B632-00C04F79498E" >
</OBJECT>
</BODY>
Initialize the Stream Buffer Sink
First, create a tune request and pass it stream buffer sink instance of the Video Control. For details, see Creating a Tune Request (Script). Next, add the Encoder feature (CLSID_MSVidEncoder) to the active features collection:
ENC_CLSID = "{BB530C63-D9DF-4B49-9439-63453962E598}"
' Create an empty Features collection
Set MyFeatures = CreateObject("MSVidCtl.MSVidFeatures")
' Enumerate the available features
For Each feature In MSVidCtl.FeaturesAvailable
' Look for the MSVidEncoder feature
If (feature.ClassID = ENC_CLSID) Then
MyFeatures.Add feature
End If
' Optionally, add other features (not shown).
Next
' Use this as the active features collection.
MSVidCtl_Sink.FeaturesActive = MyFeatures
Enumerate the available output devices in the GUID_NULL category, and set the MSVidStreamBufferSink object as the active output device:
GUID_NULL = "{00000000-0000-0000-0000-000000000000}"
SINK_CLSID = "{9E77AAC4-35E5-42A1-BDC2-8F3FF399847C}"
' Create an empty output device collection.
Set MyOutputs = CreateObject("MSVidCtl.MSVidOutputDevices")
' Enumerate the available output devices.
Dim objStreamBufferSink
For Each output In MSVidCtl.OutputsAvailable(GUID_NULL)
If output.ClassID = SINK_CLSID Then
' This is the one we want.
MyOutputs.add output
Set objStreamBufferSink = output ' Store this for later use.
End If
Next
' Set the active outputs collection.
MSVidCtl_Sink.OutputsActive = outs
Specify a file name for the output device:
strFilename = "C:\Example.wmv
objStreamBufferSink.SinkName = strFilename
Disable video and audio rendering in the Video Control for the stream buffer sink. Rendering will be performed by the stream buffer source instance.
MSVidCtl_Sink.DisableVideo
MSVidCtl_Sink.DisableAudio
Initialize the Stream Buffer Source
Using the other instance of the Video Control, enumerate the available input devices in the GUID_NULL category. Set the MSVidStreamBufferSource device as the active input device.
DVR_CLSID = "{AD8E510D-217F-409B-8076-29C5E73B98E8}"
Dim objStreamBufferSource
' Enumerate the available inputs
For Each input in MSVidCtl_Src.InputsAvailable(GUID_NULL)
If input.ClassID = DVR_CLSID Then
' This is the one we want.
MSVidCtl_Src.InputActive = input
Set objStreamBufferSource = input ' Store this for later use.
End If
Next
Specify the same file name used previously:
objStreamBufferSource.FileName = strFilename
Run both Video Control instances:
MSVidCtl_Src.Run
MSVidCtl_Sink.Run