Old 28th June 2005, 15:18   #1
ken52787
Major Dude
 
ken52787's Avatar
 
Join Date: Aug 2003
Posts: 1,297
Send a message via AIM to ken52787
NSVx Open Sourced

I've decided to release my NSVx ActiveX control as open source under the GNU GPL license.

What the control does is it allows people to easily make NSV sourcing applications because it handles all the hard work. Rather than deal with Shoutcast and parse NSVs, you only had to tell NSVx where Shoutcast was, give it some header information, and then give a file path to the NSV, and NSVx handled the rest.

Anyways, you can have your way with the source code now. Download it here.

EDIT: I should probably tell you that this is written in Visual Basic 6.

NSV downloads
An in-depth step by step guide for newbies, coming soon.
ken52787 is offline   Reply With Quote
Old 28th June 2005, 16:32   #2
ravetrax
Major Dude
 
ravetrax's Avatar
 
Join Date: Apr 2003
Location: Clearwater, FL ~~~~~~~~~~~~~~~ My name is Rava www.ravetrax.com
Posts: 541
Send a message via ICQ to ravetrax Send a message via AIM to ravetrax Send a message via Yahoo to ravetrax
interesting...

Echo34 - A music related irc network for the socially challenged. [ website | chat now ]

Stream Solutions - The next level of Shoutcast server hosting! [ website | forums ]

RaveTrax - Its not a state of mind, Its a way of life. [ website | forums | chatroom ]
» Gen2 A/V Streams - NSV Video [vp6.2 & 64k aacPlus v2] - 64k aacPlus v2 - 24k aacPlus v2
» AMPX Player - Web based player that plays ALL streams! [Audio & Audio/Video]
» Other Streams - 160k MP3 - 64k MP3 - 24k MP3
ravetrax is offline   Reply With Quote
Old 28th June 2005, 17:59   #3
rockouthippie
Banned
 
rockouthippie's Avatar
 
Join Date: Jun 2004
Location: Oregon
Posts: 11,008
outstanding!.
rockouthippie is offline   Reply With Quote
Old 28th June 2005, 18:18   #4
Jkey
Forum King
 
Join Date: Jul 2004
Location: E*arth
Posts: 3,032
superb !

So Long, and Thanks for All the Fish.
Jkey is offline   Reply With Quote
Old 28th June 2005, 18:21   #5
Inedible Bulk
Forum King
 
Inedible Bulk's Avatar
 
Join Date: Apr 2004
Location: You're the man now dog
Posts: 2,303
incredulous!

Originally posted by yeshuawatso :
...get Nullsoft to [accept] new moderators? ... election? ... If Inedible Bulk is the candidate, then I give my vote.
Inedible Bulk is offline   Reply With Quote
Old 28th June 2005, 23:36   #6
retrostation
Senior Member
 
Join Date: Oct 2003
Posts: 170
superexpradiciousexpialidocious!
retrostation is offline   Reply With Quote
Old 30th June 2005, 13:12   #7
WatchLive
Member
 
Join Date: Sep 2004
Posts: 63
Does it mean we now can make the vp6.2 activeX player ?
WatchLive is offline   Reply With Quote
Old 30th June 2005, 15:12   #8
Jkey
Forum King
 
Join Date: Jul 2004
Location: E*arth
Posts: 3,032
Quote:
What the control does is it allows people to easily make NSV sourcing applications because it handles all the hard work. Rather than deal with Shoutcast and parse NSVs, you only had to tell NSVx where Shoutcast was, give it some header information, and then give a file path to the NSV, and NSVx handled the rest.
so no watchlive.

So Long, and Thanks for All the Fish.
Jkey is offline   Reply With Quote
Old 1st July 2005, 16:04   #9
WatchLive
Member
 
Join Date: Sep 2004
Posts: 63
does it mean we can decode live nsv in flash ?
WatchLive is offline   Reply With Quote
Old 3rd July 2005, 00:46   #10
rgATL
Major Dude
 
Join Date: Feb 2003
Location: ATL, of course.
Posts: 724
Quote:
Originally posted by WatchLive
does it mean we can decode live nsv in flash ?
I guess I'm question is similar. Would this help with playing a SHOUTcast stream through a Flash animation in Internet Explorer? (I heard there were some ActiveX issues).

Thanks,
rg.
rgATL is offline   Reply With Quote
Old 3rd July 2005, 00:56   #11
sns2015
Senior Member
 
Join Date: Mar 2005
Posts: 218
You are all not reading what this does. NSVx is not the same as NSVPlayX. NSVx is a sourcing/shouting ActiveX plugin that sends NSV information to a shoutcast server. This will NOT play NSV files/streams.
sns2015 is offline   Reply With Quote
Old 29th July 2007, 14:26   #12
robertut
Junior Member
 
Join Date: Jun 2007
Posts: 32
Link is dead... any mirrors out there...?
robertut is offline   Reply With Quote
Old 29th July 2007, 16:23   #13
Smelter
Major Dude
 
Smelter's Avatar
 
Join Date: Jan 2004
Posts: 1,141
I'll get it to you I have it onboard somwhere.
Smelter is offline   Reply With Quote
Old 29th July 2007, 16:42   #14
Smelter
Major Dude
 
Smelter's Avatar
 
Join Date: Jan 2004
Posts: 1,141
I think this is it.

Not the original copy but i think I havnt messed it up.
Attached Files
File Type: rar nsvxsource.rar (78.5 KB, 589 views)
Smelter is offline   Reply With Quote
Old 10th March 2012, 09:37   #15
pumbaa2
Junior Member
 
Join Date: Mar 2012
Posts: 42
I have the original copy, however I will look at your code changes. In efforts to keep this ActiveX alive, I would like to maintain this project (any objections?). I've spent 2 days going over the code and found a few very minor problems that I would like to ultimately resolve. One is Frame Search. NSVx uses Frame "Markers" to calculate the speed it should send the data stream.

For the most part this code does run correctly but the control pulls 1K chunks out of the NSV File and does the search, however, since the frame tag is a multi-byte match, there is a possibility that part of that frame tag is in the first 1k chunk and the second part comes in on the second 1k chunk. If this happens, Ken's code will fail to detect that particular frame tag. This will offset the frame counter and cause it to search for the next frame tag. The end result is a stream that will feed slightly faster than the actual speed (because the code literally counts frames per second). He also matches against 2 different tags... One is the real frame tag and the second is the NSV Sync Header. However, I'm not completely convinced that the Sync Header should qualify as a frame advance. I'm going to move the frame counting code into its own project so I can make it do a raw count of frames in a NSV file, then compare those notes to what Winamp tells me.

The second problem is the position calculation. His code calculates position using "Current File Position / File Length." This is not entirely accurate, especially when it comes to VBR files (VP8, etc). A file may have a very "active" video in the beginning and level off at the end. In this particular scenario, it would cause the beginning of the file to grow faster than the end. Depending on VBR Settings, it may actually report it is further along than it actually is. The reverse could also be true, not so active video at the beginning and very active video at the end, the result would be the reverse. It would show its not as far along in the video than it actually is. Ultimately, it would mean the "Progress" won't advance steadily like it should.

It took some real work on the internet to come across the code. Most people who wrote streamers are using 1.0.1 of the ActiveX, if you still have the project and wish to rebuild it, please use 1.0.2 (Still Kens original code). Until I get that version in my files area, feel free to message me and I'll send you a link. 1.0.1 has issues keeping up with the stream, especially at higher bitrates. RayLine NSV Streamer is now using 1.0.2 as of version 1.0.6. 1.0.7 will have the ActiveX built into the executable itself. I had a user complain on my Forums about the ActiveX itself, which caused my program to not load on their station.

I've built version 1.0.3 and made a MSI Merge Module for it. Anyone creating installers using Visual Studio Installer should use the Merge Module. I've also added some code to gather some more specific information from the control itself. The NSVx1.ProgressComplete will return a integer value between 0 and 100 that reflects the current position in the file. This makes it easy to attach a Progress Bar from "Windows Common Controls 6.0" and set the value directly to NSVx1.ProgressComplete like so: "ProgressBar1.Value = NSVx1.ProgressComplete" The default value range for ProgressBar1 is already set to 0-100. I also plan to set informational properties to get information like framerate, resolution, codec (perhaps). That way people can display that information in their program easily.
pumbaa2 is offline   Reply With Quote
Old 12th March 2012, 04:28   #16
pumbaa2
Junior Member
 
Join Date: Mar 2012
Posts: 42
Smelter, your code revision has the progress bar update commented out and you updated the sleep delay from 10 to 8... I assume your stream was trailing behind which may suggest it was taking longer than 50ms to update progress bar plus send packets. I found the following "Snooze" cycle:

Do Until timeGetTime - timeRef > 950
DoEvents
Sleep 10
Loop

However, I'm just kinda curious as to why this routine was written that way (I realize you just modified Ken's code and didn't write that yourself)? Is there a reason why I more direct approach wasn't used without the need for a loop, such as:

DoEvents
If timeGetTime < timeRef + 950 then
Sleep (timeRef + 950) - timeGetTime
End If

I assume 950ms was used instead of 1000ms (1 Second) to accommodate for code execution, however, on todays computers it may execute quicker than 50ms. Also "timeRef = timeGetTime" should be "timeRef = timeRef + 1000" (1 Second). This would ensure send timing is exact instead of resetting the reference completely which is sorta "undefined", it maybe +950ms (NSVx gets ahead causing sc_serv buffer overflow), +1000ms (ideal), or +1010ms (NSVx is delayed causing buffering) depending on code execute time which in Windows is REALLY undefined. But it does explain why my scheduler falls slightly out of sync with start times after running for a day or two.

Anyhow, just food for thought...
pumbaa2 is offline   Reply With Quote
Old 12th March 2012, 16:24   #17
Smelter
Major Dude
 
Smelter's Avatar
 
Join Date: Jan 2004
Posts: 1,141
Are you seriously asking me about details of a random copy of some source code from 2005?

Really? I never used NSVx beyond playing with it on my own streams. Chances are I was trying to use nsvX with GMF bridge or FiltergraphX to achieve live broadcasting rather than file.

While I appreciate that you are taking over nsvX code and app creation, dredging up these old threads is not productive. Chances are 'sns2015' has moved on and will never return to nsv forums.

I would advise you to drop nsvX altogether, learn c++, get the nsv C++ lib from/By AOL and move forward with some real application programming rather than this file-feed stuff. Kens applications written with nsvX perform flawless as they are.

Just my honest opinion.
Smelter is offline   Reply With Quote
Old 13th March 2012, 04:29   #18
pumbaa2
Junior Member
 
Join Date: Mar 2012
Posts: 42
Smelter, no offence but for starters, everything NSV is Pre-2005 and I also already know C++. The MythIPTV Project is written in C++ but is designed to run as a daemon and does require a little bit of shell knowledge. You really didn't take a gander over to my website and peek did you? I'm cool with being candid so lets do that for a moment... Good way for everyone to know where everybody sits in the world.

I already looked into the NSV C++ Lib on Sourceforge. I looked at that long before I joined the forums. But since I had no idea there was any demand for live streaming, I didn't go that route. I could but I've yet to wrap my head around it. Is everyone going to turn on their web cameras and play a little guitar tune for everyone? Live porn? Broadcast their Cable TV stations using a capture board? Setup a security camera for their house?

You may hate me after reading this (hopefully not) but what can be done using a real piece of hardware for "video in" that I missed? And I'm not really asking that to be sarcastic, at this point I really do want to know cause if its interesting enough I might take on such a project. Although, I'm not sure why exactly it can't already be done. I'm pretty sure I could drum up a Bash Script that could pull it off without ANY C++. IE:

cat /dev/dvb/adapter0/frontend0 | nsvenc -blar_encode_arguements - | nsvstream - -o myshoutcastserver.example.com:8001

If you want I'll write the nsvstream C++ Program that takes stdin and sends it to the Shoutcast Server. I won't even have to worry about timing code as the Capture board sets the timing. Read PIPE, write to socket, Read PIPE, write to socket. Simple stuff...
pumbaa2 is offline   Reply With Quote
Old 13th March 2012, 14:30   #19
Smelter
Major Dude
 
Smelter's Avatar
 
Join Date: Jan 2004
Posts: 1,141
Nobody cares.....

Nobody cares about std in encoding with ffmpeg

Nobody cares about converting files to NSV format.

Not even myth tv cares or works anymore.

Not even VLC cares about shoutcast NSV.

My personal LIVE encoder can source 2 webcams 1 DV cam and live audio, mixed in real time with greenscreen effects, all in REAL TIME, LIVE.

... but nobody cares!

Do you support ipad playback or pushing nsv video to apple TV or netgear settops? NO?
Then Nobody cares


Nobody cares.
Smelter is offline   Reply With Quote
Old 13th March 2012, 23:37   #20
jaromanda
Forum King
 
Join Date: Jun 2007
Location: Under the bridge
Posts: 2,247
I care a little



actually, I lied


I don't care at all

Is it just me or are shoutcast users getting dumber?
jaromanda is offline   Reply With Quote
Old 15th March 2012, 13:49   #21
pumbaa2
Junior Member
 
Join Date: Mar 2012
Posts: 42
Ssssuuuurreeee, that's what everyone says
pumbaa2 is offline   Reply With Quote
Reply
Go Back   Winamp & SHOUTcast Forums > SHOUTcast > SHOUTcast TV / Nullsoft Video

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump