Welcome Guest! To enable all features, please Login or Register.

Notification

Icon
Error

Options
View
Last Go to last post Unread Go to first unread post
#1 Posted : Wednesday, April 5, 2006 4:15:01 AM(UTC)

Ashy  
Ashy

Groups: Registered
Posts: 4


I have to make a Video Conferencing module for one of our ASP.NET Intranet site where a user can actually choose from the list of available Cameras and can view or record (and rewind,pause, play or ff)  and save it in a file. The same cameras can be seen by different users so it is kind of Server to Many Conxns Scenario. I am a beginner in Leadtools SDK and was looking for a solution for the problem.

From last couple of days i have been playing around with the  Player Control and Capture Control, till now I have been successful in playing the web stream (and controlling play, pause, stop fnxns) from server which can be seen by a client on a web page. My problem is how to capture/record that direct video stream at client side. I am not getting any way out in Capture Control. How can I assign the stream being displayed in Play Control to Capture Control and save it in a particular format (either using Convert Control) or without any format.

Please guide me or gimme some coordinates about good examples or documentation regarding video conferencing.

Also, as I am working on web pages, I am using Javascript to handle ActiveX Objects exposed by LeadTools Multimedia. Is there a better method to use it?

Thanks,

Ashish

 

 

 

 

Try the latest version of LEADTOOLS for free for 60 days by downloading the evaluation: https://www.leadtools.com/downloads

Wanna join the discussion? Login to your LEADTOOLS Support accountor Register a new forum account.

#2 Posted : Sunday, April 9, 2006 6:49:27 AM(UTC)

Ali  
Guest

Groups: Guests
Posts: 3,022

Was thanked: 2 time(s) in 2 post(s)

You will need to use the Convert control at the client side to take the input you give to the play control and save it locally.
About using Javascript, it is a good way to do it.


Thanks,
Ali Abo Al-Rob
LEADTOOLS Technical Support

 
#3 Posted : Thursday, April 13, 2006 2:21:11 AM(UTC)

Ashy  
Ashy

Groups: Registered
Posts: 4


Thanks for the  reply..

I have successfully saved the file at client side using Capture
Control. Also we had requirement of putting datetime stamp on the file which have done using
"LEAD
Video Text Overlay Filter" and it works fine in VB 6.0 application. But
as i have to provide this functionality on ASP.NET application, i am
toying with the idea of using Javascript,but this overlay functionality is not working.
In Javascript when i try to retrieve the
convertCtrl.VideoProcessors.Count, it shows me accurate value (which is 42,  same as being shown in VB application). But convertCtrl.VideoProcessors.Item[i] gives me error that Object does not have this property or method.. I tried using convertCtrl.VideoProcessors[i] gives same error. How can I access the properties of this control in Javascript.

Is there any tutorial on using Leadtools ActiveX Controls on Web Page using Javascript;


Here is the code:


Javascript Code: (Giving error)

var playCtrl = document.frmCapture.PlayCtrl;

var convertCtrl = document.frmCapture.ConvertCtrl;



convertCtrl.SourceFile = playCtrl.SourceFile;

convertCtrl.TargetFile = "D:\New.avi";

alert(convertCtrl.VideoProcessors.Item[0].Name);

var count = convertCtrl.VideoProcessors.Count;
alert("No of Convert VideoProcessors : " + count);

for (i=0; i< convertCtrl.VideoProcessors.Count;i++)
 {

     alert(convertCtrl.VideoProcessors[i]);

    if ("LEAD Video Text Overlay Filter" == convertCtrl.VideoProcessors.Item[i].FriendlyName)

        {

            alert(convertCtrl.VideoProcessors.Item[i].FriendlyName);

            alert(i);

            break;

        }
}


VB 6.0 Code: (worked fine)
ltmmConvertCtrl1.sourcefile = ltmmPlayCtrl1.sourcefile
    ltmmConvertCtrl1.TargetFile = "C:\Target.avi"
   
    For nIdx = 0 To ltmmConvertCtrl1.VideoProcessors.Count - 1

        If ("LEAD Video Text Overlay Filter" = ltmmConvertCtrl1.VideoProcessors.Item(nIdx).FriendlyName) Then
            Exit For
        End If
    Next


Thanks
Ashish
 
#4 Posted : Monday, April 17, 2006 10:28:56 PM(UTC)

Ashy  
Ashy

Groups: Registered
Posts: 4


I
have made an activeX Control in VB6 which does all the wonders. I have
included Lead Video Text  Overlay Filter to reflect timestamp on
the frames. But hw can i make it to change on each frame. I am able to
give static text whereas my actual requirement is to put timestamp on each frame being recorded or streamed.

I have used Capture control on
the server side application, and used ActiveX control (having Play
Control and Convert Control) at client. Convert Control actually puts
OverLay Text Filter. (in case of recording, which can be viewed by used later on).


I have still lotta issues like:

1. How can I considerably reduce the file size as 2-3 minutes of recording is taking lotta space.

2. There is no documentation regarding
a programming interface for Text Overlay Filter that you can use to continually change   the text.


3. As suggested in one of the postings, I am thinking to use a Middle
Level Server to take stream from actual Server (with Capture Control
Application and Camera), and convert the file as per different filters
required by the users whereas Client Application (ASP.NET web page) to view the Converted Stream.  (
will have my activeX Control - a blend of Play Control and Convert Control)
My problem is that I m saving file using Convert Control at Web Page and it saves it on Client machine..
where as I have to persist it on Server side.. .


Thanks,
Ashish


 
#5 Posted : Friday, April 21, 2006 12:41:22 PM(UTC)

Otis  
Guest

Groups: Guests
Posts: 3,022

Was thanked: 2 time(s) in 2 post(s)

If you want to change the text on each frame, you need to use our Video Callback Filter. This filter will give you a callback event for each frame. Every time you get a new frame in, you can change the text in the text Overlay Filter.

The file size is purely dependent on the format and compression you use. If you want the file size to be smaller, you need to compress the file more. If you are using the Convert control to save the file, you can choose which format and compressor you want to use.

All of the filters and codecs are fully documented in the "Multimedia Filters Helpfile" (Ltfilters.chm). This help file is installed with the SDK.

If you are trying to save the file you are streaming on the server side, you need to use a Convert control on the server side and have it basically connect to itself so that you can record it. Alternatively, the Network Demultiplexor has a property called "OutPutFileName". If you set a path to this property, it will write the stream that the client (player control) is receiving to disk. The only drawback to this is that you will need the Network Demultiplexor to play the file. If you used the Convert control, you would not.

 
#6 Posted : Wednesday, April 26, 2006 5:15:34 AM(UTC)

Ashy  
Ashy

Groups: Registered
Posts: 4


Hi,

Thanks for responding..

I am having couple of problems with Motion Detection Filter, Video Callback and Overlay Text Filter. I need to use these filters on Convert Control.

As i wanted to put timestamp on each frame, I used Overlay Text filter but doing so, makes the frames to run faster than the normal speed though i haven't set or specified any property value. Also I am still stucked to the static TimeStamp which means its not able to change on consecutive frames. I know that I have to use some callback mechanism to put current time on each frame manually but there seems to be no Callback Object for that filter.

Then, I saw the Video Callback Filter Example which is having PlayCtrl instead of Convert Ctrl. I extended that example by putting current time on each frame manually with using Windows APIs like TextOut etc. and was successful in doing so. But it does not seem to work with Convert Control.  The activeX Control which i made is a combination of Play Control and Convert Control. I am setting the value of sourcefile of Play Ctrl by putting ltsf://ipaddress:port (Capture Application is running @ server side which is sending stream) and using convert ctrl i save the file whenever User clicks Record button. All this works fine except this Video Callback Filter.. I tried to put callback video filter on Convert Control in my activex Control and it does not work at all and Here is the code snippet:

For idx = 0 To Convert.VideoProcessors.Count - 1
    If (Convert.VideoProcessors.Item(idx).FriendlyName = "LEAD Video Callback Filter") Then
        Exit For
    End If
Next

Convert.SelectedVideoProcessors.Add Convert.VideoProcessors.Item(idx), 0

Set lmvCallback = Convert.GetSubObject(ltmmConvert_Object_SelVideoProcessor)
If Not lmvCallback Is Nothing Then
    lmvCallback.ReceiveProcObj = lmvMyCallBk  
End If
 Set lmvMyCallBk.LeadDlg = LRasterClrDlg

The callback (lmvCallback.ReceiveProcObj = lmvMyCallBk) never works although it worked in a case of Play Control when i was using it with a saved file instead of stream. The source file of Play and convert is same (ltsf://...).


Also, can i use Motion detection filter on Convert control as well? Right now, I am using capture control with motion detection on server side, whenever there is a motion detection i run another application with convert control (at server side itself) to save the file which records the stream from capture application and saves it.. but if i try to use the convert control in capture application itself, it gives me error even though i am giving ltsf://.. setting sourcefile property.

Is there any mechanism by which i can use more than one filter at the same time.. like using Motion Detection and Video Callback Filter..

 

 

 
#7 Posted : Monday, May 1, 2006 4:57:26 AM(UTC)

Otis  
Guest

Groups: Guests
Posts: 3,022

Was thanked: 2 time(s) in 2 post(s)

I have attached an example that uses the convert control to draw a different number on each frame of the video. This project uses LEADTOOLS Raster Imaging Pro (COM objects) to draw on the bitmap but you can use Windows API calls as well. If I understand your objective correctly, this does exactly what you are trying to do.

You can use as many filters as you like at one time. You just have to make sure you keep up with the index of each filter. Take the code below for instance. Once Filter1 has been added, you call GetSubObject to retrieve the actual object from the graph. The constant 'ltmmConvert_Object_SelVideoProcessor' actually has a value of 512. Each filter you add will have a different index so you need to increment this value as well. So if you add a second filter, it would be 'ltmmConvert_Object_SelVideoProcessor + 1'. You can also use a value of -1 instead of hard coding the index. This will add it to the end of the list for you.

Convert.SelectedVideoProcessors.Add Convert.VideoProcessors.Item(idx), 0

Set Filter1 = Convert.GetSubObject(ltmmConvert_Object_SelVideoProcessor)

Convert.SelectedVideoProcessors.Add Convert.VideoProcessors.Item(idx), 1

Set Filter2 = Convert.GetSubObject(ltmmConvert_Object_SelVideoProcessor + 1)

 

File Attachment(s):
 
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Powered by YAF.NET | YAF.NET © 2003-2024, Yet Another Forum.NET
This page was generated in 0.155 seconds.