Re: Relaying video streams
[EMAIL PROTECTED] wrote: Date: Wed, 19 Nov 2008 08:22:15 -0500 From: Frank DiPrete [EMAIL PROTECTED] Cc: GNHLUG mailing list gnhlug-discuss@mail.gnhlug.org function proxy_stream($flv_url) { $curl_handle=curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $flv_url ); curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,3); curl_exec($curl_handle); curl_close($curl_handle); } 2) take that output to a pipe and shove it down the browser's throat The important bit is the fpassthru function so as not to mangle the stream but just send it out again raw. function transmit_stream($flv_file) { $pos = 0; header(Content-Type: video/x-flv); header('Content-Length: ' . filesize($flv_file)); Wait, how do you plan to get the content length for the stream? you don't - it's a live stream without end. Apache will send the output chunked. $fh = fopen($flv_file,rb); fseek($fh, $pos); fpassthru($fh); For those on the list who don't know PHP, rb means binary read-only; fpassthru reads $fh to EOF and stuffs it into the output buffer. fclose($fh); } The trick now it to connect the ouput pipe from curl into the retransmit function instead of operating on files. If a pipe from a webcam in proxy_stream() is already open, then don't call the curl function. In theory it would work (haven't tried it yet) This *might* work, if the stream was in a raw format and the passthrough was done in blocks the size of a single video frame. The clients might not like jumping into a video stream mid-frame (which could happen if you just start sending them stream data whenever they connect). The client would miss out on all the header information, as well as loose frame sync. Some codecs might be able to recover from such an extraordinary lack of metadata. It seems risky to depend on that level of resilience in the codec. One thing that might work is a SIP proxy (maybe Asterisk?) on a host with high bandwidth available. A single transmission to the proxy, which could then conference everyone else in. That could require viewers to have videoconferencing software, which might be asking too much. Perhaps some kind of RPC to the server could be used to spawn a farm of mencoder filters with -aoc copy -ovc copy and an appropriately calculated -sb value. Oh, I got it! (See? You can solve any problem if you talk to yourself enough!) Have the video source (whatever machine is pulling the mpeg) count the bytes and frames. Then, every 5 seconds or so, transmit a sync report to the proxy. The proxy can then calculate and pass that -sb to mencoder. Giving the user the ability to join the feed with a 5 second resolution would probably be just fine. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
Bruce Dawson wrote: Frank DiPrete wrote: Bruce Dawson wrote: We've got several web cams that people like to visit (www.milessmithfarm.net). However, they're chewing up bandwidth when more than one person at a time views them. Is anyone aware of a Linux based video re-broadcaster (either software or a service)? We'd like to upload the video streams to a single server that multiple people can connect to and view them. This way, we're only sending one video stream up to the server, and the server can rebroadcast it to all the connected clients. --Bruce It sounds like the sources are live streams (web cams) and not files that can be uploaded to another server for download / viewing. A multi unicast scenario. ... The above is correct. But we haven't solved the original problem yet. Item 1) starts a stream from the webcam so you still pound your uplink for each request, but a little program logic may work here. I think we sorta solved it. I only want one stream going out, and then the repeater (PHP) will repeat it to multiple clients. I've done this sort of thing with php. These code examples are for an flv source for a youtube re-creatiom problem I worked on recently, but you would just change the mime / file type. Your server could: 1) anchor the stream with php curl function proxy_stream($flv_url) { $curl_handle=curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $flv_url ); curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,3); curl_exec($curl_handle); curl_close($curl_handle); } 2) take that output to a pipe and shove it down the browser's throat The important bit is the fpassthru function so as not to mangle the stream but just send it out again raw. function transmit_stream($flv_file) { $pos = 0; header(Content-Type: video/x-flv); header('Content-Length: ' . filesize($flv_file)); $fh = fopen($flv_file,rb); fseek($fh, $pos); fpassthru($fh); fclose($fh); } The trick now it to connect the ouput pipe from curl into the retransmit function instead of operating on files. If a pipe from a webcam in proxy_stream() is already open, then don't call the curl function. In theory it would work (haven't tried it yet) Including a player frame on the server page is another added fun bit. I used flowplayer and ffmpeg. OK. Thanks. I'll play with those. I'll probably pipe the output from proxy_stream to shared memory so there will be only one connection. Then have transmit_stream copy from the shared memory to the client. This will avoid the problem of Apache/PHP creating a new proxy_stream for each connection. However, I'm concerned about corrupting data streams to the client if a PHP process was unable to send out a shared memory segment. --Bruce Please let us/me know how you make out with this approach. Very cool if it works. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
On Wed, Nov 19, 2008 at 8:36 PM, Bruce Dawson [EMAIL PROTECTED] wrote: http://camstreams.com/ Interesting service, and looks like something I want - except it requires the broadcaster (me) to run the camstreams encoder on a Windows box. I don't mind encoding for such a service, but I don't want to run Windows. It must run on either Linux or Unix. While I haven't ever actually used their service, they simply want the data to be in a Microsoft format. VLC could stream it as well. But while being an 'end to end' video solution, it IS reliant on that data being all microsoft format. -- -- Thomas ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
[EMAIL PROTECTED] wrote: Date: Tue, 18 Nov 2008 20:06:35 -0500 From: Bruce Dawson [EMAIL PROTECTED] We'd like to upload the video streams to a single server that multiple people can connect to and view them. This way, we're only sending one video stream up to the server, and the server can rebroadcast it to all the connected clients. No matter where the server is, sending a fresh unicast copy to every client will consume (ie, waste) bandwidth. True, but the idea is to stream to multiple clients from an ISP that supports a high outgoing bandwidth, and to provide that stream from an ISP connection that doesn't (like DSL/broadband/...) The high output ISP would, in effect, become a repeater. --Bruce ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
Bruce Dawson wrote: We've got several web cams that people like to visit (www.milessmithfarm.net). However, they're chewing up bandwidth when more than one person at a time views them. Is anyone aware of a Linux based video re-broadcaster (either software or a service)? We'd like to upload the video streams to a single server that multiple people can connect to and view them. This way, we're only sending one video stream up to the server, and the server can rebroadcast it to all the connected clients. --Bruce It sounds like the sources are live streams (web cams) and not files that can be uploaded to another server for download / viewing. A multi unicast scenario. I don't know of an off the shelf open video streaming server that does this. I've used Darwin and it works well for streaming stored files on request - as long as they are 3gp's or mp4 mov's. What your server would have to do is: 1) anchor the stream from the webcam 2) send it back out to the viewing client on request This can start to get tricky if you want people to be able to view it on a web page as opposed to using whatever native client they have. Viewing it on a web page often is done with a flash app flv movie player (ie re-creating youtube - some people may know what I mean by that ;) ) In that case your server would 1) anchor the stream from the webcam 2) transcode the stream to flv 3) use a flash flv player to display the video But we haven't solved the original problem yet. Item 1) starts a stream from the webcam so you still pound your uplink for each request, but a little program logic may work here. I've done this sort of thing with php. These code examples are for an flv source for a youtube re-creatiom problem I worked on recently, but you would just change the mime / file type. Your server could: 1) anchor the stream with php curl function proxy_stream($flv_url) { $curl_handle=curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $flv_url ); curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,3); curl_exec($curl_handle); curl_close($curl_handle); } 2) take that output to a pipe and shove it down the browser's throat The important bit is the fpassthru function so as not to mangle the stream but just send it out again raw. function transmit_stream($flv_file) { $pos = 0; header(Content-Type: video/x-flv); header('Content-Length: ' . filesize($flv_file)); $fh = fopen($flv_file,rb); fseek($fh, $pos); fpassthru($fh); fclose($fh); } The trick now it to connect the ouput pipe from curl into the retransmit function instead of operating on files. If a pipe from a webcam in proxy_stream() is already open, then don't call the curl function. In theory it would work (haven't tried it yet) Including a player frame on the server page is another added fun bit. I used flowplayer and ffmpeg. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
I dunno, but you web cams right now aren't in a happy state. Apache default directories and the such. :-D On Tue, Nov 18, 2008 at 8:06 PM, Bruce Dawson [EMAIL PROTECTED] wrote: We've got several web cams that people like to visit (www.milessmithfarm.net). However, they're chewing up bandwidth when more than one person at a time views them. Is anyone aware of a Linux based video re-broadcaster (either software or a service)? We'd like to upload the video streams to a single server that multiple people can connect to and view them. This way, we're only sending one video stream up to the server, and the server can rebroadcast it to all the connected clients. --Bruce ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ -- -- Thomas ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
Date: Wed, 19 Nov 2008 08:22:15 -0500 From: Frank DiPrete [EMAIL PROTECTED] Cc: GNHLUG mailing list gnhlug-discuss@mail.gnhlug.org function proxy_stream($flv_url) { $curl_handle=curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $flv_url ); curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,3); curl_exec($curl_handle); curl_close($curl_handle); } 2) take that output to a pipe and shove it down the browser's throat The important bit is the fpassthru function so as not to mangle the stream but just send it out again raw. function transmit_stream($flv_file) { $pos = 0; header(Content-Type: video/x-flv); header('Content-Length: ' . filesize($flv_file)); Wait, how do you plan to get the content length for the stream? $fh = fopen($flv_file,rb); fseek($fh, $pos); fpassthru($fh); For those on the list who don't know PHP, rb means binary read-only; fpassthru reads $fh to EOF and stuffs it into the output buffer. fclose($fh); } The trick now it to connect the ouput pipe from curl into the retransmit function instead of operating on files. If a pipe from a webcam in proxy_stream() is already open, then don't call the curl function. In theory it would work (haven't tried it yet) This *might* work, if the stream was in a raw format and the passthrough was done in blocks the size of a single video frame. The clients might not like jumping into a video stream mid-frame (which could happen if you just start sending them stream data whenever they connect). The client would miss out on all the header information, as well as loose frame sync. Some codecs might be able to recover from such an extraordinary lack of metadata. It seems risky to depend on that level of resilience in the codec. One thing that might work is a SIP proxy (maybe Asterisk?) on a host with high bandwidth available. A single transmission to the proxy, which could then conference everyone else in. That could require viewers to have videoconferencing software, which might be asking too much. Perhaps some kind of RPC to the server could be used to spawn a farm of mencoder filters with -aoc copy -ovc copy and an appropriately calculated -sb value. Oh, I got it! (See? You can solve any problem if you talk to yourself enough!) Have the video source (whatever machine is pulling the mpeg) count the bytes and frames. Then, every 5 seconds or so, transmit a sync report to the proxy. The proxy can then calculate and pass that -sb to mencoder. Giving the user the ability to join the feed with a 5 second resolution would probably be just fine. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
On Tue, Nov 18, 2008 at 8:06 PM, Bruce Dawson [EMAIL PROTECTED] wrote: We've got several web cams that people like to visit (www.milessmithfarm.net). However, they're chewing up bandwidth when more than one person at a time views them. Is anyone aware of a Linux based video re-broadcaster (either software or a service)? We'd like to upload the video streams to a single server that multiple people can connect to and view them. This way, we're only sending one video stream up to the server, and the server can rebroadcast it to all the connected clients. I can't speak for their use for your purposes (I cant go check right now, firewall says apperently webcams aren't work related, go figure), but I did search thru my email when talking to someone else in the past about this very subject. http://camstreams.com/ -- -- Thomas ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
On Wed, Nov 19, 2008 at 12:52 AM, Ben Scott [EMAIL PROTECTED] wrote: Sure. Just multicast, for that matter. The problem is that effectively zero public routers forward multicast datagrams ... FYI, I did find some resources on this: Multicast over TCP/IP HOWTO (1998) http://tldp.org/HOWTO/Multicast-HOWTO.html RFC-3170: IP Multicast Applications: Challenges and Solutions (2001) http://www.apps.ietf.org/rfc/rfc3170.html -- Ben ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
On 2008-11-19 8:22 AM, Frank DiPrete wrote: I've used Darwin and it works well for streaming stored files on request - as long as they are 3gp's or mp4 mov's. I think there's _some_ way to do it, e.g. from the FAQ: Q. Can I configure DSS to stream live .mp4, .3gp, or .mov streams to simulate a radio or tv station to connected users? Yes. Use the PlaylistBroadcaster that is part of DSS, to stream hinted files from a server side playlist to DSS. All video files must have the same frame size and use the same codec and all audio files must have the same sample size and use the same codec. I think with an all-macintosh solution you'd use Quicktime Brodcaster to create the RTSP stream; but I've never actually done this so it's just what I'm reading. I'll have an opportunity to use someting like this in May for a nonprofit centennial so I'll pay attention here. -Bill ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
On Wed, 19 Nov 2008 07:38:05 -0500, Bruce Dawson wrote: VirginSnow wrote: Date: Tue, 18 Nov 2008 20:06:35 -0500 From: Bruce Dawson We'd like to upload the video streams to a single server that multiple people can connect to and view them. This way, we're only sending one video stream up to the server, and the server can rebroadcast it to all the connected clients. No matter where the server is, sending a fresh unicast copy to every client will consume (ie, waste) bandwidth. True, but the idea is to stream to multiple clients from an ISP that supports a high outgoing bandwidth, and to provide that stream from an ISP connection that doesn't (like DSL/broadband/...) The high output ISP would, in effect, become a repeater. Perhaps VLC is the right tool for the job? http://wiki.videolan.org/Documentation:Streaming_HowTo From a quick glance, it looks as if running VLC on said server would allow you to have it connect from there to your source streams, and then make those streams available to clients connecting to it from the WAN. HTH! -- Bill Mullen RLU #270075 ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
Frank DiPrete wrote: Bruce Dawson wrote: We've got several web cams that people like to visit (www.milessmithfarm.net). However, they're chewing up bandwidth when more than one person at a time views them. Is anyone aware of a Linux based video re-broadcaster (either software or a service)? We'd like to upload the video streams to a single server that multiple people can connect to and view them. This way, we're only sending one video stream up to the server, and the server can rebroadcast it to all the connected clients. --Bruce It sounds like the sources are live streams (web cams) and not files that can be uploaded to another server for download / viewing. A multi unicast scenario. ... The above is correct. But we haven't solved the original problem yet. Item 1) starts a stream from the webcam so you still pound your uplink for each request, but a little program logic may work here. I think we sorta solved it. I only want one stream going out, and then the repeater (PHP) will repeat it to multiple clients. I've done this sort of thing with php. These code examples are for an flv source for a youtube re-creatiom problem I worked on recently, but you would just change the mime / file type. Your server could: 1) anchor the stream with php curl function proxy_stream($flv_url) { $curl_handle=curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $flv_url ); curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,3); curl_exec($curl_handle); curl_close($curl_handle); } 2) take that output to a pipe and shove it down the browser's throat The important bit is the fpassthru function so as not to mangle the stream but just send it out again raw. function transmit_stream($flv_file) { $pos = 0; header(Content-Type: video/x-flv); header('Content-Length: ' . filesize($flv_file)); $fh = fopen($flv_file,rb); fseek($fh, $pos); fpassthru($fh); fclose($fh); } The trick now it to connect the ouput pipe from curl into the retransmit function instead of operating on files. If a pipe from a webcam in proxy_stream() is already open, then don't call the curl function. In theory it would work (haven't tried it yet) Including a player frame on the server page is another added fun bit. I used flowplayer and ffmpeg. OK. Thanks. I'll play with those. I'll probably pipe the output from proxy_stream to shared memory so there will be only one connection. Then have transmit_stream copy from the shared memory to the client. This will avoid the problem of Apache/PHP creating a new proxy_stream for each connection. However, I'm concerned about corrupting data streams to the client if a PHP process was unable to send out a shared memory segment. --Bruce ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
Bill Mullen wrote: On Wed, 19 Nov 2008 07:38:05 -0500, Bruce Dawson wrote: VirginSnow wrote: Date: Tue, 18 Nov 2008 20:06:35 -0500 From: Bruce Dawson We'd like to upload the video streams to a single server that multiple people can connect to and view them. This way, we're only sending one video stream up to the server, and the server can rebroadcast it to all the connected clients. No matter where the server is, sending a fresh unicast copy to every client will consume (ie, waste) bandwidth. True, but the idea is to stream to multiple clients from an ISP that supports a high outgoing bandwidth, and to provide that stream from an ISP connection that doesn't (like DSL/broadband/...) The high output ISP would, in effect, become a repeater. Perhaps VLC is the right tool for the job? http://wiki.videolan.org/Documentation:Streaming_HowTo From a quick glance, it looks as if running VLC on said server would allow you to have it connect from there to your source streams, and then make those streams available to clients connecting to it from the WAN. HTH! I've looked at VLC and VLM, but can't tell if those will do what I want. I suspect it will stream without a problem, but I can't determine if it will allow multiple clients to attach to the same stream. --Bruce ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
Ben Scott wrote: On Wed, Nov 19, 2008 at 12:52 AM, Ben Scott [EMAIL PROTECTED] wrote: Sure. Just multicast, for that matter. The problem is that effectively zero public routers forward multicast datagrams ... FYI, I did find some resources on this: Multicast over TCP/IP HOWTO (1998) http://tldp.org/HOWTO/Multicast-HOWTO.html RFC-3170: IP Multicast Applications: Challenges and Solutions (2001) http://www.apps.ietf.org/rfc/rfc3170.html Thanks, but I seem to remember a message indicating that the RFC's expired and the multicast addresses have been re-purposed. I'm not sure about that though - it may have occurred in a [bad] dream. However, your earlier point about public routers forwarding multicast datagrams is well taken, so I don't think multicast will work for the joe-beer-drinker or mom-and-pop crowd (which seem to be the main audience for these webcams). --Bruce ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
Thomas Charron wrote: On Tue, Nov 18, 2008 at 8:06 PM, Bruce Dawson [EMAIL PROTECTED] wrote: We've got several web cams that people like to visit (www.milessmithfarm.net). However, they're chewing up bandwidth when more than one person at a time views them. Is anyone aware of a Linux based video re-broadcaster (either software or a service)? We'd like to upload the video streams to a single server that multiple people can connect to and view them. This way, we're only sending one video stream up to the server, and the server can rebroadcast it to all the connected clients. I can't speak for their use for your purposes (I cant go check right now, firewall says apperently webcams aren't work related, go figure), but I did search thru my email when talking to someone else in the past about this very subject. http://camstreams.com/ Interesting service, and looks like something I want - except it requires the broadcaster (me) to run the camstreams encoder on a Windows box. I don't mind encoding for such a service, but I don't want to run Windows. It must run on either Linux or Unix. --Bruce ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
Thomas Charron wrote: I dunno, but you web cams right now aren't in a happy state. Apache default directories and the such. :-D Right. I just shutdown the Apache proxies so we could have some bandwidth. Seems someone jumps on the cameras within minutes of setting up the proxies. It would be OK if they were on for a minute or two, but they're camping out, and they're usually from residental IPs. Then, after a few hours, I've got about 6 users on them. --Bruce ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
I think we sorta solved it. I only want one stream going out, and then the repeater (PHP) will repeat it to multiple clients. I've sent Bruce the scripts that my coworker wrote, which use curl, ffmpeg, and ffserver, and certainly the same idea with VLC and other 'server' software could be substituted. I think the question is going to be stability, memory and cpu usage (per client, per stream, per feed, etc). The same basic principles will be used regardless, it's mostly a matter of what works best (best being maximized good/fast/cheap where the variables would be cpu/bandwidth/crashes/etc Bruce, sounds like you can experiment and see what works best in a real world setup, so maybe a good page documenting it for future open source webcammers? ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
On Wed, Nov 19, 2008 at 8:42 PM, Bruce Dawson [EMAIL PROTECTED] wrote: Thomas Charron wrote: I dunno, but you web cams right now aren't in a happy state. Apache default directories and the such. :-D Right. I just shutdown the Apache proxies so we could have some bandwidth. Seems someone jumps on the cameras within minutes of setting up the proxies. It would be OK if they were on for a minute or two, but they're camping out, and they're usually from residental IPs. Then, after a few hours, I've got about 6 users on them. Hrm, you sure you didn't end up on some webcam 'indexer' site that has a direct link to your webcams? -- -- Thomas ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
Seth Cohn wrote: I think we sorta solved it. I only want one stream going out, and then the repeater (PHP) will repeat it to multiple clients. I've sent Bruce the scripts that my coworker wrote, which use curl, ffmpeg, and ffserver, and certainly the same idea with VLC and other 'server' software could be substituted. I think the question is going to be stability, memory and cpu usage (per client, per stream, per feed, etc). The same basic principles will be used regardless, it's mostly a matter of what works best (best being maximized good/fast/cheap where the variables would be cpu/bandwidth/crashes/etc Given past experience, I believe you are correct! Bruce, sounds like you can experiment and see what works best in a real world setup, so maybe a good page documenting it for future open source webcammers? That's in my plan. And possibly a presentation. I *hope* to get to this during the holiday season; its the only chance I have to get the necessary testing done. (Seems retirement didn't free up as much time as I thought it would.) --Bruce ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
I know someone at work who did just this sort of thing recently. I'll get details and get back to you. On 11/18/08, Bruce Dawson [EMAIL PROTECTED] wrote: We've got several web cams that people like to visit (www.milessmithfarm.net). However, they're chewing up bandwidth when more than one person at a time views them. Is anyone aware of a Linux based video re-broadcaster (either software or a service)? We'd like to upload the video streams to a single server that multiple people can connect to and view them. This way, we're only sending one video stream up to the server, and the server can rebroadcast it to all the connected clients. --Bruce ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
On 2008-11-18 8:06 PM, Bruce Dawson wrote: Is anyone aware of a Linux based video re-broadcaster (either software or a service)? I've heard good things about the Darwin Streaming Server from Apple, but haven't tried it out myself yet: http://dss.macosforge.org/post/40/ Whichever solution you get working would make for a lovely HOWTO. -Bill ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
On Tue, Nov 18, 2008 at 9:27 PM, Bill McGonigle [EMAIL PROTECTED] wrote: Whichever solution you get working would make for a lovely HOWTO. Or meeting presenting topic. ;-) -- Ben ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
I know someone at work who did just this sort of thing recently. I'll get details and get back to you. Summary: If the cameras are USB connected to a server then the best and quickest option is to use an open source alternative to the Flash Media Streaming Server. My research pointed to Red 5 for a good solution. http://osflash.org/red5 Assuming that the cameras are IP cameras, which is common for most streaming video in an open area, then the process is not as easy as one would think. Using a combination of curl, ffmpeg, and ffserver, it can be done. Bearing in mind, this is at the cost of having the server rendering video in a continuous fashion so the box needs to be able to handle the load. On the setup I did, I got decent quality at 8FPS for about 5% usage of a dual core CPU per stream. Basically the process is like this. A shell script takes the stream (usually a motion JPEG) via curl and then pipes it to ffmpeg which then sends it to ffserver for streaming on a dummy port like 8090. If you're interested in this script, let me know. On 11/18/08, Bruce Dawson [EMAIL PROTECTED] wrote: We've got several web cams that people like to visit (www.milessmithfarm.net). However, they're chewing up bandwidth when more than one person at a time views them. Is anyone aware of a Linux based video re-broadcaster (either software or a service)? We'd like to upload the video streams to a single server that multiple people can connect to and view them. This way, we're only sending one video stream up to the server, and the server can rebroadcast it to all the connected clients. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: Relaying video streams
On Wed, Nov 19, 2008 at 12:45 AM, [EMAIL PROTECTED] wrote: isn't this the sort of application that IPv4 multicast + SIP were designed to solve? Sure. Just multicast, for that matter. The problem is that effectively zero public routers forward multicast datagrams, so you might as well just unplug the power cable and save yourself the electric bill. -- Ben ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/