From Patrick.Weber at iecinfrared.com Fri Dec 2 07:43:24 2016 From: Patrick.Weber at iecinfrared.com (Weber, Patrick) Date: Fri, 2 Dec 2016 15:43:24 +0000 Subject: [Live-devel] Multiple NIC - RTSP URL. Message-ID: <7B283D8251DEA14AA6CFE585B081B2D007055935@IECSX5700.iec.bw.corp> My application can have multiple NICs - how do I tell RTSPServer which IP address to use? Patrick Weber Principal Consultant [IAC Logo][mesa_recognized_practitioner_logo - Small] Integrated Automation Consulting LLC 440-552-5937 www.IntAutomation.com -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.jpg Type: image/jpeg Size: 2449 bytes Desc: image001.jpg URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image002.jpg Type: image/jpeg Size: 6755 bytes Desc: image002.jpg URL: From finlayson at live555.com Fri Dec 2 08:25:13 2016 From: finlayson at live555.com (Ross Finlayson) Date: Sat, 3 Dec 2016 05:25:13 +1300 Subject: [Live-devel] Multiple NIC - RTSP URL. In-Reply-To: <7B283D8251DEA14AA6CFE585B081B2D007055935@IECSX5700.iec.bw.corp> References: <7B283D8251DEA14AA6CFE585B081B2D007055935@IECSX5700.iec.bw.corp> Message-ID: <46E41433-385E-4078-9B76-72F71A112C9D@live555.com> > On Dec 3, 2016, at 4:43 AM, Weber, Patrick wrote: > > My application can have multiple NICs ? how do I tell RTSPServer which IP address to use? By default, the server uses the network interface that?s used for IP multicast routing - i.e., the one that has a route for 224.0.0.0/4. (The reason for this is that it uses IP multicast to detect its own IP address.) So, the easiest way to choose a particular network interface is to reconfigure your host so that it uses that network interface for IP multicast routing. You should be able to do this by running (as root): route add 224.0.0.0/4 ip-address-for-that-nic Ross Finlayson Live Networks, Inc. http://www.live555.com/ From Patrick.Weber at iecinfrared.com Mon Dec 5 06:27:19 2016 From: Patrick.Weber at iecinfrared.com (Weber, Patrick) Date: Mon, 5 Dec 2016 14:27:19 +0000 Subject: [Live-devel] live-devel Digest, Vol 157, Issue 1 In-Reply-To: References: Message-ID: <7B283D8251DEA14AA6CFE585B081B2D007056985@IECSX5700.iec.bw.corp> Thanks for the response. Is there a non-default way (via C++ API) to select the NIC/IP address? My application may use multicast for other purposes (Web service discovery, for example), and I need to have it active on each NIC. -----Original Message----- From: live-devel [mailto:live-devel-bounces at ns.live555.com] On Behalf Of live-devel-request at ns.live555.com Sent: Friday, December 2, 2016 3:00 PM To: live-devel at ns.live555.com Subject: live-devel Digest, Vol 157, Issue 1 Send live-devel mailing list submissions to live-devel at lists.live555.com To subscribe or unsubscribe via the World Wide Web, visit http://lists.live555.com/mailman/listinfo/live-devel or, via email, send a message with subject or body 'help' to live-devel-request at lists.live555.com You can reach the person managing the list at live-devel-owner at lists.live555.com When replying, please edit your Subject line so it is more specific than "Re: Contents of live-devel digest..." Today's Topics: 1. Multiple NIC - RTSP URL. (Weber, Patrick) 2. Re: Multiple NIC - RTSP URL. (Ross Finlayson) ---------------------------------------------------------------------- Message: 1 Date: Fri, 2 Dec 2016 15:43:24 +0000 From: "Weber, Patrick" To: "live-devel at lists.live555.com" Subject: [Live-devel] Multiple NIC - RTSP URL. Message-ID: <7B283D8251DEA14AA6CFE585B081B2D007055935 at IECSX5700.iec.bw.corp> Content-Type: text/plain; charset="us-ascii" My application can have multiple NICs - how do I tell RTSPServer which IP address to use? Patrick Weber Principal Consultant [IAC Logo][mesa_recognized_practitioner_logo - Small] Integrated Automation Consulting LLC 440-552-5937 www.IntAutomation.com -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.jpg Type: image/jpeg Size: 2449 bytes Desc: image001.jpg URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image002.jpg Type: image/jpeg Size: 6755 bytes Desc: image002.jpg URL: ------------------------------ Message: 2 Date: Sat, 3 Dec 2016 05:25:13 +1300 From: Ross Finlayson To: LIVE555 Streaming Media - development & use Subject: Re: [Live-devel] Multiple NIC - RTSP URL. Message-ID: <46E41433-385E-4078-9B76-72F71A112C9D at live555.com> Content-Type: text/plain; charset=utf-8 > On Dec 3, 2016, at 4:43 AM, Weber, Patrick wrote: > > My application can have multiple NICs ? how do I tell RTSPServer which IP address to use? By default, the server uses the network interface that?s used for IP multicast routing - i.e., the one that has a route for 224.0.0.0/4. (The reason for this is that it uses IP multicast to detect its own IP address.) So, the easiest way to choose a particular network interface is to reconfigure your host so that it uses that network interface for IP multicast routing. You should be able to do this by running (as root): route add 224.0.0.0/4 ip-address-for-that-nic Ross Finlayson Live Networks, Inc. http://www.live555.com/ ------------------------------ Subject: Digest Footer _______________________________________________ live-devel mailing list live-devel at lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel ------------------------------ End of live-devel Digest, Vol 157, Issue 1 ****************************************** From warren at etr-usa.com Mon Dec 5 11:00:15 2016 From: warren at etr-usa.com (Warren Young) Date: Mon, 5 Dec 2016 12:00:15 -0700 Subject: [Live-devel] live-devel Digest, Vol 157, Issue 1 In-Reply-To: <7B283D8251DEA14AA6CFE585B081B2D007056985@IECSX5700.iec.bw.corp> References: <7B283D8251DEA14AA6CFE585B081B2D007056985@IECSX5700.iec.bw.corp> Message-ID: <5ECBC5FD-06EF-4DA8-A775-B59C9031DE73@etr-usa.com> On Dec 5, 2016, at 7:27 AM, Weber, Patrick wrote: > > Thanks for the response. Is there a non-default way (via C++ API) to select the NIC/IP address? My application may use multicast for other purposes (Web service discovery, for example), and I need to have it active on each NIC. These services must use different addresses, which gives you the opportunity to route them separately. I suggest that you use the default rule Ross recommended for the ?best? interface for multicast, then add additional routes with lower metrics (see the netstat/route(8) manual page) for the exceptions. For example, let?s say you have IPTV going out on 239.255.{0-3}.x and you wanted it to go out the 1.2.3.4 interface. Let?s further say you have the 224/4 route on the 2.3.4.5 interface with metric 10. You could then say: route add 239.255.0.0/22 1.2.3.4 metric 9 That causes the network stack?s routing layer to prefer sending IPTV multicast packets out the 1.2.3.4 NIC while everything else goes out 2.3.4.5. From hungnvsdtc at elcom.com.vn Tue Dec 6 01:54:55 2016 From: hungnvsdtc at elcom.com.vn (=?utf-8?B?Tmd1eeG7hW4gVmnhu4d0IEjDuW5n?=) Date: Tue, 6 Dec 2016 16:54:55 +0700 Subject: [Live-devel] How to create ProxyServer with "Environment Pool" Message-ID: <000201d24fa6$cd491550$67db3ff0$@elcom.com.vn> Dear Team, Now we are want to build a proxy server to proxy many camera. Here we found that your proxy using one environment to distribute contents, that means it is using one thread for receiving and sending content. So my question is can we build a proxy using ?Environment Pool? to use multi-thread for receiving and sending content, but maintain one server port i.e. 8554? If I am wrong somewhere, please so me. Sorry for my bad English. Best Regards, Nguyen Viet Hung (Mr.) Team Leader, Software-02 Department ----------------------------------------------------------------------------- ESOFT CO., LTD Add: Elcom Building, Duy Tan Street, Cau Giay District, Ha Noi Mobile: 0904828118 | Tel: (+84-4) 38 359 359 (Ext: 8607) | Fax: +84-4 38355 884 Email: hungnvsdtc at elcom.com.vn | Web: www.elcom.com.vn | Skype: hungtrodt5 ----------------------------------------------------------------------------- This email and any attachment is intended for use only by specified addressees and may contain legally privileged and/or confidential information. If you are not an intended recipient, please delete the original and any copy of this message, notify the writer by email or telephone at (+84-4) 3835 9359 and accept our apologies for any inconvenience. * Please consider the environment before you print this email. -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Tue Dec 6 02:12:08 2016 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 6 Dec 2016 23:12:08 +1300 Subject: [Live-devel] How to create ProxyServer with "Environment Pool" In-Reply-To: <000201d24fa6$cd491550$67db3ff0$@elcom.com.vn> References: <000201d24fa6$cd491550$67db3ff0$@elcom.com.vn> Message-ID: The asynchronous, event-driven architecture of LIVE555-based applications means that you don?t need multiple threads to proxy multiple cameras. In fact, our existing ?LIVE555 Proxy Server? application, described at http://live555.com/proxyServer/ already allows you to do this. Simply enter the URLs of the (multiple) back-end RTSP camera streams on the command line. Ross Finlayson Live Networks, Inc. http://www.live555.com/ From hungnvsdtc at elcom.com.vn Tue Dec 6 03:08:42 2016 From: hungnvsdtc at elcom.com.vn (=?utf-8?B?Tmd1eeG7hW4gVmnhu4d0IEjDuW5n?=) Date: Tue, 6 Dec 2016 18:08:42 +0700 Subject: [Live-devel] How to create ProxyServer with "Environment Pool" In-Reply-To: References: <000201d24fa6$cd491550$67db3ff0$@elcom.com.vn> Message-ID: <001201d24fb1$1b760210$52620630$@elcom.com.vn> Thank Ross, But it seem you misunderstood my idea, I want to create multiple thread to reduce latency in receiving and sending content, for example, I want to proxy 60 cameras, my server has 4 cores so I want split 15 cameras in one thread aka environment, so here I have an environment pool that contains 4 environments, each dedicate for 15 cams. So can we do this? Best Regards, Nguyen Viet Hung (Mr.) Team Leader, Software-02 Department ----------------------------------------------------------------------------- ESOFT CO., LTD Add: Elcom Building, Duy Tan Street, Cau Giay District, Ha Noi Mobile: 0904828118 | Tel: (+84-4) 38 359 359 (Ext: 8607) | Fax: +84-4 38355 884 Email: hungnvsdtc at elcom.com.vn | Web: www.elcom.com.vn | Skype: hungtrodt5 ----------------------------------------------------------------------------- This email and any attachment is intended for use only by specified addressees and may contain legally privileged and/or confidential information. If you are not an intended recipient, please delete the original and any copy of this message, notify the writer by email or telephone at (+84-4) 3835 9359 and accept our apologies for any inconvenience. * Please consider the environment before you print this email. -----Original Message----- From: live-devel [mailto:live-devel-bounces at ns.live555.com] On Behalf Of Ross Finlayson Sent: Tuesday, December 06, 2016 5:12 PM To: LIVE555 Streaming Media - development & use Subject: Re: [Live-devel] How to create ProxyServer with "Environment Pool" The asynchronous, event-driven architecture of LIVE555-based applications means that you don?t need multiple threads to proxy multiple cameras. In fact, our existing ?LIVE555 Proxy Server? application, described at http://live555.com/proxyServer/ already allows you to do this. Simply enter the URLs of the (multiple) back-end RTSP camera streams on the command line. Ross Finlayson Live Networks, Inc. http://www.live555.com/ _______________________________________________ live-devel mailing list live-devel at lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel From finlayson at live555.com Tue Dec 6 06:08:14 2016 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 7 Dec 2016 03:08:14 +1300 Subject: [Live-devel] How to create ProxyServer with "Environment Pool" In-Reply-To: <001201d24fb1$1b760210$52620630$@elcom.com.vn> References: <000201d24fa6$cd491550$67db3ff0$@elcom.com.vn> <001201d24fb1$1b760210$52620630$@elcom.com.vn> Message-ID: <0FBAB080-A75D-4A75-8403-77B4C69C9E40@live555.com> > But it seem you misunderstood my idea No I didn?t. > , I want to create multiple thread to reduce latency in receiving and sending content, for example, I want to proxy 60 cameras, my server has 4 cores so I want split 15 cameras in one thread aka environment, so here I have an environment pool that contains 4 environments, each dedicate for 15 cams. So can we do this? First, please read the FAQ; in particular http://live555.com/liveMedia/faq.html#threads (as you were asked to do before posting to the mailing list) The existing ?LIVE555 Proxy Server? application is single-threaded. However, if you really want to, you could run 4 parallel copies of the application, each using a different ?front end? RTSP port number - e.g., from the command line: live555ProxyServer -p 8554 & live555ProxyServer -p 8555 & live555ProxyServer -p 8556 & live555ProxyServer -p 8557 & Note that this runs 4 separate *processes*, rather than 4 separate threads within a single process. (Because the "LIVE555 Proxy Server? application is single-threaded (using events rather than threads for concurrency), there is no way to run a single instance of this application so that it uses multiple threads. Ross Finlayson Live Networks, Inc. http://www.live555.com/ From Patrick.Weber at iecinfrared.com Tue Dec 6 10:55:27 2016 From: Patrick.Weber at iecinfrared.com (Weber, Patrick) Date: Tue, 6 Dec 2016 18:55:27 +0000 Subject: [Live-devel] live-devel Digest, Vol 157, Issue 2 - Multiple NICs Message-ID: <7B283D8251DEA14AA6CFE585B081B2D0070569E3@IECSX5700.iec.bw.corp> Thanks Warren. Unfortunately my scope of control ends at my application boundary. This application is video distribution of live camera feeds (surveillance system) and frequently our clients do not want us mucking around with their system settings. Clearly I *could* do what has been suggested from within my application (the top layer is C#/.NET, so the System.Web assembly has everything needed), but it would be so much nicer to just tell Live555 which NIC to use - either by IP or MAC address - instead of allowing Live555 to infer the NIC based on routing settings. But if that is my only option, then that is what I must do... -----Original Message----- From: live-devel [mailto:live-devel-bounces at ns.live555.com] On Behalf Of live-devel-request at ns.live555.com Sent: Monday, December 5, 2016 3:00 PM To: live-devel at ns.live555.com Subject: live-devel Digest, Vol 157, Issue 2 Send live-devel mailing list submissions to live-devel at lists.live555.com To subscribe or unsubscribe via the World Wide Web, visit http://lists.live555.com/mailman/listinfo/live-devel or, via email, send a message with subject or body 'help' to live-devel-request at lists.live555.com You can reach the person managing the list at live-devel-owner at lists.live555.com When replying, please edit your Subject line so it is more specific than "Re: Contents of live-devel digest..." Today's Topics: 1. Re: live-devel Digest, Vol 157, Issue 1 (Weber, Patrick) 2. Re: live-devel Digest, Vol 157, Issue 1 (Warren Young) ---------------------------------------------------------------------- Message: 1 Date: Mon, 5 Dec 2016 14:27:19 +0000 From: "Weber, Patrick" To: "live-devel at ns.live555.com" Subject: Re: [Live-devel] live-devel Digest, Vol 157, Issue 1 Message-ID: <7B283D8251DEA14AA6CFE585B081B2D007056985 at IECSX5700.iec.bw.corp> Content-Type: text/plain; charset="us-ascii" Thanks for the response. Is there a non-default way (via C++ API) to select the NIC/IP address? My application may use multicast for other purposes (Web service discovery, for example), and I need to have it active on each NIC. -----Original Message----- From: live-devel [mailto:live-devel-bounces at ns.live555.com] On Behalf Of live-devel-request at ns.live555.com Sent: Friday, December 2, 2016 3:00 PM To: live-devel at ns.live555.com Subject: live-devel Digest, Vol 157, Issue 1 Send live-devel mailing list submissions to live-devel at lists.live555.com To subscribe or unsubscribe via the World Wide Web, visit http://lists.live555.com/mailman/listinfo/live-devel or, via email, send a message with subject or body 'help' to live-devel-request at lists.live555.com You can reach the person managing the list at live-devel-owner at lists.live555.com When replying, please edit your Subject line so it is more specific than "Re: Contents of live-devel digest..." Today's Topics: 1. Multiple NIC - RTSP URL. (Weber, Patrick) 2. Re: Multiple NIC - RTSP URL. (Ross Finlayson) ---------------------------------------------------------------------- Message: 1 Date: Fri, 2 Dec 2016 15:43:24 +0000 From: "Weber, Patrick" To: "live-devel at lists.live555.com" Subject: [Live-devel] Multiple NIC - RTSP URL. Message-ID: <7B283D8251DEA14AA6CFE585B081B2D007055935 at IECSX5700.iec.bw.corp> Content-Type: text/plain; charset="us-ascii" My application can have multiple NICs - how do I tell RTSPServer which IP address to use? Patrick Weber Principal Consultant [IAC Logo][mesa_recognized_practitioner_logo - Small] Integrated Automation Consulting LLC 440-552-5937 www.IntAutomation.com -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.jpg Type: image/jpeg Size: 2449 bytes Desc: image001.jpg URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image002.jpg Type: image/jpeg Size: 6755 bytes Desc: image002.jpg URL: ------------------------------ Message: 2 Date: Sat, 3 Dec 2016 05:25:13 +1300 From: Ross Finlayson To: LIVE555 Streaming Media - development & use Subject: Re: [Live-devel] Multiple NIC - RTSP URL. Message-ID: <46E41433-385E-4078-9B76-72F71A112C9D at live555.com> Content-Type: text/plain; charset=utf-8 > On Dec 3, 2016, at 4:43 AM, Weber, Patrick wrote: > > My application can have multiple NICs ? how do I tell RTSPServer which IP address to use? By default, the server uses the network interface that?s used for IP multicast routing - i.e., the one that has a route for 224.0.0.0/4. (The reason for this is that it uses IP multicast to detect its own IP address.) So, the easiest way to choose a particular network interface is to reconfigure your host so that it uses that network interface for IP multicast routing. You should be able to do this by running (as root): route add 224.0.0.0/4 ip-address-for-that-nic Ross Finlayson Live Networks, Inc. http://www.live555.com/ ------------------------------ Subject: Digest Footer _______________________________________________ live-devel mailing list live-devel at lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel ------------------------------ End of live-devel Digest, Vol 157, Issue 1 ****************************************** ------------------------------ Message: 2 Date: Mon, 5 Dec 2016 12:00:15 -0700 From: Warren Young To: LIVE555 Streaming Media - development & use Subject: Re: [Live-devel] live-devel Digest, Vol 157, Issue 1 Message-ID: <5ECBC5FD-06EF-4DA8-A775-B59C9031DE73 at etr-usa.com> Content-Type: text/plain; charset=utf-8 On Dec 5, 2016, at 7:27 AM, Weber, Patrick wrote: > > Thanks for the response. Is there a non-default way (via C++ API) to select the NIC/IP address? My application may use multicast for other purposes (Web service discovery, for example), and I need to have it active on each NIC. These services must use different addresses, which gives you the opportunity to route them separately. I suggest that you use the default rule Ross recommended for the ?best? interface for multicast, then add additional routes with lower metrics (see the netstat/route(8) manual page) for the exceptions. For example, let?s say you have IPTV going out on 239.255.{0-3}.x and you wanted it to go out the 1.2.3.4 interface. Let?s further say you have the 224/4 route on the 2.3.4.5 interface with metric 10. You could then say: route add 239.255.0.0/22 1.2.3.4 metric 9 That causes the network stack?s routing layer to prefer sending IPTV multicast packets out the 1.2.3.4 NIC while everything else goes out 2.3.4.5. ------------------------------ Subject: Digest Footer _______________________________________________ live-devel mailing list live-devel at lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel ------------------------------ End of live-devel Digest, Vol 157, Issue 2 ****************************************** From finlayson at live555.com Tue Dec 6 12:06:25 2016 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 7 Dec 2016 09:06:25 +1300 Subject: [Live-devel] Multiple NIC - RTSP URL. In-Reply-To: <7B283D8251DEA14AA6CFE585B081B2D0070569E3@IECSX5700.iec.bw.corp> References: <7B283D8251DEA14AA6CFE585B081B2D0070569E3@IECSX5700.iec.bw.corp> Message-ID: Please everybody - when replying to a mailing list ?Digest?, (1) fix the ?Subject:? line, and (2) trim your post to not quote excessive text. This is basic mailing list ?netiquette?. One other thing you could try is - in your ?main()? program, do #include and then, near the beginning ReceivingInterfaceAddr = SendingInterfaceAddr = our_inet_addr(?x.y.z.w?); where x.y.z.w is the IP address of the interface that you want to use (in ?dotted quad? form). This is not guaranteed to work, though... Ross Finlayson Live Networks, Inc. http://www.live555.com/ From warren at etr-usa.com Tue Dec 6 12:18:51 2016 From: warren at etr-usa.com (Warren Young) Date: Tue, 6 Dec 2016 13:18:51 -0700 Subject: [Live-devel] live-devel Digest, Vol 157, Issue 2 - Multiple NICs In-Reply-To: <7B283D8251DEA14AA6CFE585B081B2D0070569E3@IECSX5700.iec.bw.corp> References: <7B283D8251DEA14AA6CFE585B081B2D0070569E3@IECSX5700.iec.bw.corp> Message-ID: <78C741ED-F560-4262-B866-48D92FE5FD68@etr-usa.com> On Dec 6, 2016, at 11:55 AM, Weber, Patrick wrote: > > Clearly I *could* do what has been suggested from within my application (the top layer is C#/.NET, so the System.Web assembly has everything needed) Not according to this SO answer: https://stackoverflow.com/questions/7333764/ You may be confusing network stack routing with ASP.NET routes. Very much not the same thing. > it would be so much nicer to just tell Live555 which NIC to use - either by IP or MAC address You may be able to play some games with bind() calls way down in the inner socket handling layers of Live555, but I wouldn?t recommend it. You?re asking us to help you second-guess an incorrect network stack routing setup instead of configuring it correctly. > instead of allowing Live555 to infer the NIC based on routing settings. Live555 infers nothing. It gives the packets to the network stack, and the network stack sends them out the network interface it decides is most appropriate based on the routing configuration. Go read Stevens or Quinn. From Jeremiah.Morrill at econnect.tv Tue Dec 6 13:27:14 2016 From: Jeremiah.Morrill at econnect.tv (Jeremiah Morrill) Date: Tue, 6 Dec 2016 21:27:14 +0000 Subject: [Live-devel] live-devel Digest, Vol 157, Issue 2 - Multiple NICs In-Reply-To: <7B283D8251DEA14AA6CFE585B081B2D0070569E3@IECSX5700.iec.bw.corp> References: <7B283D8251DEA14AA6CFE585B081B2D0070569E3@IECSX5700.iec.bw.corp> Message-ID: Haven't tried this, so grain of salt. The protected RTSPServer constructor has a parameter for the socket FD. I think you could first, subclass the RTSPServer class so you can pass in your own socket fd. Using system calls w/ C++ or using .NET, initialize your own socket bound to the NIC you prefer (don't forget to set it to listen and set the correct socket options, like non-blocking...follow GenericMediaServer::setUpOurSocket path for exacts). Pass your initialized socket to a new instance of your RTSPServer subclass. If you are initializing your socket in C#, I believe you can get the socket FD from socket.Handle.ToInt32() property...and don't let the handle be destroyed (eg, store reference to Socket object). HTH, -Jer -------------- next part -------------- An HTML attachment was scrubbed... URL: From Jeremiah.Morrill at econnect.tv Tue Dec 6 14:15:59 2016 From: Jeremiah.Morrill at econnect.tv (Jeremiah Morrill) Date: Tue, 6 Dec 2016 22:15:59 +0000 Subject: [Live-devel] live-devel Digest, Vol 157, Issue 2 - Multiple NICs In-Reply-To: <78C741ED-F560-4262-B866-48D92FE5FD68@etr-usa.com> References: <7B283D8251DEA14AA6CFE585B081B2D0070569E3@IECSX5700.iec.bw.corp>, <78C741ED-F560-4262-B866-48D92FE5FD68@etr-usa.com> Message-ID: (last reply got rejected, so trying again w/o trimming response) Haven't tried this, so grain of salt. The protected RTSPServer constructor has a parameter for the socket FD. I think you could first, subclass the RTSPServer class so you can pass in your own socket fd. Using system calls w/ C++ or using .NET, initialize your own socket bound to the NIC you prefer (don't forget to set it to listen and set the correct socket options, like non-blocking...follow GenericMediaServer::setUpOurSocket path for exacts). Pass your initialized socket to a new instance of your RTSPServer subclass. If you are initializing your socket in C#, I believe you can get the socket FD from socket.Handle.ToInt32() property...and don't let the handle be destroyed (eg, store reference to Socket object). HTH, -Jer From: live-devel Sent: Tuesday, December 6, 2016 12:40 PM To: LIVE555 Streaming Media - development & use Subject: Re: [Live-devel] live-devel Digest, Vol 157, Issue 2 - Multiple NICs On Dec 6, 2016, at 11:55 AM, Weber, Patrick wrote: > > Clearly I *could* do what has been suggested from within my application (the top layer is C#/.NET, so the System.Web assembly has everything needed) Not according to this SO answer: https://stackoverflow.com/questions/7333764/ You may be confusing network stack routing with ASP.NET routes. Very much not the same thing. > it would be so much nicer to just tell Live555 which NIC to use - either by IP or MAC address You may be able to play some games with bind() calls way down in the inner socket handling layers of Live555, but I wouldn't recommend it. You're asking us to help you second-guess an incorrect network stack routing setup instead of configuring it correctly. > instead of allowing Live555 to infer the NIC based on routing settings. Live555 infers nothing. It gives the packets to the network stack, and the network stack sends them out the network interface it decides is most appropriate based on the routing configuration. Go read Stevens or Quinn. _______________________________________________ live-devel mailing list live-devel at lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel -------------- next part -------------- An HTML attachment was scrubbed... URL: From hemant at mnkcg.com Tue Dec 6 15:05:16 2016 From: hemant at mnkcg.com (hemant at mnkcg.com) Date: Tue, 6 Dec 2016 18:05:16 -0500 Subject: [Live-devel] Multiple NIC - RTSP URL. In-Reply-To: <7B283D8251DEA14AA6CFE585B081B2D007055935@IECSX5700.iec.bw.corp> References: <7B283D8251DEA14AA6CFE585B081B2D007055935@IECSX5700.iec.bw.corp> Message-ID: <007201d25015$35aa3c50$a0feb4f0$@mnkcg.com> Having read all the emails, I see that the Live555 design uses the interface which supports a multicast router. I don't see anything wrong with the request below from Patrick. If a node is a router, a router supports many interfaces. Each interface can independently support multicast routing. Therefore if a server runs on the router, the server would need configuration for what NIC to use. What Patrick wants to do is already an issue solved by the Cisco CNR (Cisco Network Registrar), a DHCP server which runs on a Linux machine with multiple NICs. http://tinyurl.com/zdjgrfr The DHCP server is configured for which NIC and IPv4 or IPv6 address on the NIC to use. I agree with Ross when he proposed this solution: "One other thing you could try is - in your "main()" program, do #include and then, near the beginning ReceivingInterfaceAddr = SendingInterfaceAddr = our_inet_addr("x.y.z.w"); where x.y.z.w is the IP address of the interface that you want to use (in 'dotted quad' form). This is not guaranteed to work, though..." Just implement what Ross suggested above. If you run into any issues, please send your code changes so that we can help fix your issues. Cheers, Hemant From: live-devel [mailto:live-devel-bounces at ns.live555.com] On Behalf Of Weber, Patrick Sent: Friday, December 02, 2016 10:43 AM To: live-devel at lists.live555.com Subject: [Live-devel] Multiple NIC - RTSP URL. My application can have multiple NICs - how do I tell RTSPServer which IP address to use? Patrick Weber Principal Consultant Integrated Automation Consulting LLC 440-552-5937 www.IntAutomation.com -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image003.jpg Type: image/jpeg Size: 3002 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image005.jpg Type: image/jpeg Size: 4118 bytes Desc: not available URL: From warren at etr-usa.com Tue Dec 6 16:08:19 2016 From: warren at etr-usa.com (Warren Young) Date: Tue, 6 Dec 2016 17:08:19 -0700 Subject: [Live-devel] Multiple NICs In-Reply-To: References: <7B283D8251DEA14AA6CFE585B081B2D0070569E3@IECSX5700.iec.bw.corp> <78C741ED-F560-4262-B866-48D92FE5FD68@etr-usa.com> Message-ID: <5086FB45-F094-49BE-8319-822FD77AEDFB@etr-usa.com> On Dec 6, 2016, at 3:15 PM, Jeremiah Morrill wrote: > > The protected RTSPServer constructor has a parameter for the socket FD. RTSP is a TCP-based protocol. Messing about with its socket will have no effect on how the *UDP* multicast packets go out. There is such a thing as RTP over TCP, but then you?re not talking about multicast at all, since you can?t multicast TCP. Keep in mind that RTSP is just the ?VCR buttons? protocol for the actual streaming media protocol, whether that be raw UDP, RTP, or something else. From Patrick.Weber at iecinfrared.com Wed Dec 7 06:35:32 2016 From: Patrick.Weber at iecinfrared.com (Weber, Patrick) Date: Wed, 7 Dec 2016 14:35:32 +0000 Subject: [Live-devel] Multiple NICs Message-ID: <7B283D8251DEA14AA6CFE585B081B2D007056A3D@IECSX5700.iec.bw.corp> Thanks all. I'll give Ross's solution a try first, then should I still need something more concrete I'll give Jeremiah's suggestion a shot. Thanks to Hemant for his insights as well. Warren's comments, while appreciated, seem to miss the point - it's beyond my scope of control to "correctly configure" a customer's network stack. It will be their machine, their infrastructure, and configured to work in their environment by their own technicians. They want to just install my software and have it work. What I want to do is configure my own application to limit Live555 to a specific NIC. - Pat From sampsa.riikonen at dasys.fi Fri Dec 9 13:55:27 2016 From: sampsa.riikonen at dasys.fi (sampsa) Date: Fri, 9 Dec 2016 23:55:27 +0200 Subject: [Live-devel] Frames from the future - or maybe not Message-ID: <98d2c43d-f276-b6b6-731a-41b74d10c4d7@dasys.fi> Hi, I am looking at frame/slice timestamps from several rtsp cameras (most of them chinese brands) and have this strange problem .. .. the timestamps refer to future, when comparing them to the frame's arrival time to the client machine (typically in the order of tens of milliseconds). i.e. I am comparing the system time at slice arrival to the timestamp included in the slice. One way to confirm this, is to modify the good old testRTSPClient.cpp: void DummySink::afterGettingFrame along these lines: ------------ ... char uSecsStr[30+1]; struct timeval systime; double systimefloat; double frametimefloat; gettimeofday(&systime, NULL); sprintf(uSecsStr, "%u.%06u",(unsigned)systime.tv_sec,(unsigned)systime.tv_usec); systimefloat=strtod(uSecsStr,NULL); sprintf(uSecsStr, "%u.%06u", (unsigned)presentationTime.tv_sec,(unsigned)presentationTime.tv_usec); frametimefloat=strtod(uSecsStr,NULL); envir() << systimefloat-frametimefloat << " "; if (fSubsession.rtpSource() != NULL && !fSubsession.rtpSource()->hasBeenSynchronizedUsingRTCP()) { envir() << " !"; // mark the debugging output to indicate that this presentation time is not RTCP-synchronized } ... ----------- I would expect the time-of-arrival of the frame-slice to my client being greater than the timestamp in the slice (that is supposedly generated in the rtsp camera)- i.e., frames arrive after they have been generated, uh.. right? But I get lots of this kind of output: 0.014241 ! -0.004223 ! 0.012092 ! 0.013395 ! -0.003483 ! 0.020684 ! -0.021564 ! 0.002708 ! So, there are three options here: 1) The chinese camera manufacturers have created a camera that grabs video from the future 2) The camera generates faulty timestamps. If so, is this a common problem with rtsp cameras? 3) live555 has to do some guessing (based on the bitrate?) of the timestamps, as there seems to be no rtcp sync and that might go wrong 4) I made a mistake here / have not understood something fundamental Help appreciated to solve this mystery. Regards, Sampsa From finlayson at live555.com Fri Dec 9 14:07:44 2016 From: finlayson at live555.com (Ross Finlayson) Date: Sat, 10 Dec 2016 11:07:44 +1300 Subject: [Live-devel] Frames from the future - or maybe not In-Reply-To: <98d2c43d-f276-b6b6-731a-41b74d10c4d7@dasys.fi> References: <98d2c43d-f276-b6b6-731a-41b74d10c4d7@dasys.fi> Message-ID: <85CB95E6-02B8-4259-B3D5-1B22227C5C9A@live555.com> First, you should use the term ?presentation time?, not ?timestamp?. (The word ?timestamp? typically refers to the RTP timestamp, which LIVE555 programmers never need to concern themselves with.) Yes, it is perfectly normal for video frames? presentation times to be non-monotonic - i.e., not always increasing. The reason for this is that frames are sent in ?decoding order? - i.e., in the order that they are to be fed into a decoder, not the order in which they are displayed on a screen (i.e., the presentation time). Because of ?B frames? (a MPEG term; they might be called something different in H.26*), some video frames depend upon a frame that will be displayed later; therefore the later frame will actually be sent first. ?Nothing to see here. Move along? :-) Ross Finlayson Live Networks, Inc. http://www.live555.com/ From sampsa.riikonen at dasys.fi Sat Dec 10 03:45:03 2016 From: sampsa.riikonen at dasys.fi (sampsa) Date: Sat, 10 Dec 2016 13:45:03 +0200 Subject: [Live-devel] Frames from the future - or maybe not In-Reply-To: <85CB95E6-02B8-4259-B3D5-1B22227C5C9A@live555.com> References: <98d2c43d-f276-b6b6-731a-41b74d10c4d7@dasys.fi> <85CB95E6-02B8-4259-B3D5-1B22227C5C9A@live555.com> Message-ID: On 10.12.2016 00:07, Ross Finlayson wrote: > First, you should use the term ?presentation time?, not ?timestamp?. (The word ?timestamp? typically refers to the RTP timestamp, which LIVE555 programmers never need to concern themselves with.) > > Yes, it is perfectly normal for video frames? presentation times to be non-monotonic - i.e., not always increasing. The reason for this is that frames are sent in ?decoding order? - i.e., in the order that they are to be fed into a decoder, not the order in which they are displayed on a screen (i.e., the presentation time). Because of ?B frames? (a MPEG term; they might be called something different in H.26*), some video frames depend upon a frame that will be displayed later; therefore the later frame will actually be sent first. > > ?Nothing to see here. Move along? :-) Thanks Ross. I guess I did not explain myself clearly enough. *** It is not about the frames arriving in weird order *** , in fact, they arrive in monotonic presentation time order (I just use baseline and I and P frames), like this (number being the presentation timestamp): 13 14 15 16 17 18 All good. But then I check at what time they arrive to the client (by looking at the client's system clock): 13 arrives to client at client time 13.5 .. i.e. it arrives after the presentation time, as one would expect (13<13.5) 14 arrives to client at client time 14.5 .. but 15 arrives to client at client time 14.9 .. so it arrives earlier than the presentation time! (15>14.9) 16 arrives to client at client time 15.5 and again, as one would expect 17 arrives to client at time 17.1 etc. Trying to synchronize such presentation times with respect to system time (when visualizing the stream) is impossible. But maybe I am not supposed to look at the timestamps, just decode and present the frames on the screen as they arrive.. Regards, Sampsa > > > Ross Finlayson > Live Networks, Inc. > http://www.live555.com/ > > > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel From finlayson at live555.com Sat Dec 10 08:53:06 2016 From: finlayson at live555.com (Ross Finlayson) Date: Sun, 11 Dec 2016 05:53:06 +1300 Subject: [Live-devel] Frames from the future - or maybe not In-Reply-To: References: <98d2c43d-f276-b6b6-731a-41b74d10c4d7@dasys.fi> <85CB95E6-02B8-4259-B3D5-1B22227C5C9A@live555.com> Message-ID: > *** It is not about the frames arriving in weird order *** , in fact, they arrive in monotonic presentation time order (I just use baseline and I and P frames), like this (number being the presentation timestamp): > > 13 14 15 16 17 18 > > All good. But then I check at what time they arrive to the client (by looking at the client's system clock): > > 13 arrives to client at client time 13.5 .. i.e. it arrives after the presentation time, as one would expect (13<13.5) > 14 arrives to client at client time 14.5 > > .. but > > 15 arrives to client at client time 14.9 .. so it arrives earlier than the presentation time! (15>14.9) > 16 arrives to client at client time 15.5 > > and again, as one would expect > > 17 arrives to client at time 17.1 > etc. > > Trying to synchronize such presentation times with respect to system time (when visualizing the stream) is impossible. > But maybe I am not supposed to look at the timestamps, just decode and present the frames on the screen as they arrive.. No, you?re supposed to buffer incoming frames for a short period of time (typically a few 100 ms), and then play them back at the proper rate (based on their presentation times). I.e., you implement a ?jitter buffer? https://en.wikipedia.org/wiki/Jitter#Jitter_buffers This is the way all network media players work (at least, all network media players that are any good). Things get a little more complicated if (as sometimes happens, and which I suspect may be happening in your case) the server?s clock runs at a slightly different rate than the client?s clock. (Remember that the ?presentation time?s are generated by the server, using the server?s clock.) In that case you may find that, over time, your jitter buffer runs dry (if the server?s clock is slower than the client?s), or fills up (if the server?s clock is faster than the client?s). There are various techniques (of varying sophistication) for dealing with this. You might want to look at how VLC implements its jitter buffer. Ross Finlayson Live Networks, Inc. http://www.live555.com/ From zoell at zoell.us Sat Dec 10 14:54:11 2016 From: zoell at zoell.us (=?UTF-8?B?Wm9sdMOhbiBTemFiw7M=?=) Date: Sat, 10 Dec 2016 22:54:11 +0000 Subject: [Live-devel] Record every X seconds wtih playlist (piped ffmpeg?) Message-ID: Hi Everyone, I am trying to record a stream via openRTSP. The idea is that I want to generate a file every 10 seconds with a playlist. So I tried it using a pipe to ffmpeg, like this: ./openRTSP -v -t rtsp://user:password at hostname:port/path/to/stream | ffmpeg -i - -codec copy -hls_time 10 /data/recording.m3u8 This is working, it generates recordingXXX.ts files every 10 seconds and adds them into a m3u8 playlist which is nice, however I also want to attach the audio stream, so I tried the following: ./openRTSP -4 -t rtsp://user:password at hostname:port/path/to/stream | ffmpeg -i - -codec copy -hls_time 10 /data/recording.m3u8 But ffmpeg throws the following: [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55965d57a2c0] moov atom not found pipe:: Invalid data found when processing input I understand that moov atom should be there but as it arrives directly from openRTSP it is not there at that time. Is there any way to solve this problem? An alternative would be if I could set openRTSP to also output a playlist if I use the -P 10 option. Any idea would be really appreciated. Thank you, Zoltan -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Sat Dec 10 15:19:01 2016 From: finlayson at live555.com (Ross Finlayson) Date: Sun, 11 Dec 2016 12:19:01 +1300 Subject: [Live-devel] Record every X seconds wtih playlist (piped ffmpeg?) In-Reply-To: References: Message-ID: <37B49FDA-D459-40E5-BB7F-6623E938B3B4@live555.com> > This is working, it generates recordingXXX.ts files every 10 seconds and adds them into a m3u8 playlist which is nice, however I also want to attach the audio stream, so I tried the following: > > ./openRTSP -4 -t rtsp://user:password at hostname:port/path/to/stream | ffmpeg -i - -codec copy -hls_time 10 /data/recording.m3u8 The reason why this doesn?t work is that (because of the stupidity of the ?.mp4? file format) ?.mp4?-format files need to be ?finalized? before they can be played. Therefore, when you give ?openRTSP" the ?-4? or ?-q? option, you can?t pipe its output to something else; instead, you have to let it output a file (and have ?openRTSP? end normally). > I understand that moov atom should be there but as it arrives directly from openRTSP it is not there at that time. That?s correct. The ?moov? atom cannot be written until the file is completed (i.e., until ?openRTSP? has ended). (Again, blame the stupidity of the ?.mp4? file format.) See above. > An alternative would be if I could set openRTSP to also output a playlist if I use the -P 10 option. Yes, I suggest using the ?-P 10? option (along with ?-4?) to output a ?.mp4?-format file every 10 seconds. Then use some other software (e.g., a simple shell script) to create a ?m3u8?-format playlist for these files. Ross Finlayson Live Networks, Inc. http://www.live555.com/ From mehdi at msemsar.com Mon Dec 12 12:45:48 2016 From: mehdi at msemsar.com (Mehdi Semsarzadeh) Date: Mon, 12 Dec 2016 15:45:48 -0500 Subject: [Live-devel] sending metadata within RTP packet Message-ID: Hi there, I want to send some metadata with the rtp packets (e.g. putting them in rtp extension). As I searched live555 does not support sending rtp extension so is there any way to send such metadata in current live555. Or are you aware of any patch that adds such functionality to live555? thanks, -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Mon Dec 12 12:59:12 2016 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 13 Dec 2016 09:59:12 +1300 Subject: [Live-devel] sending metadata within RTP packet In-Reply-To: References: Message-ID: <6E30129E-ADB5-4AEA-AB23-9B3B44A0CF5B@live555.com> > I want to send some metadata with the rtp packets (e.g. putting them in rtp extension). > As I searched live555 does not support sending rtp extension so is there any way to send such metadata in current live555. As you noted, we currently do not support RTP header extensions. However, depending on the type of ?metadata? that you wish to send, it may be possible to use an existing RTP (or new) payload format, to send them in separate RTP packets. For example, if your metadata is in text form, then you may be able to send it using a ?T140TextRTPSink? - i.e., using the RTP payload format defined in RFC 2793. Ross Finlayson Live Networks, Inc. http://www.live555.com/ From chris at gotowti.com Mon Dec 12 14:38:34 2016 From: chris at gotowti.com (Chris Richardson (WTI)) Date: Mon, 12 Dec 2016 14:38:34 -0800 Subject: [Live-devel] sending metadata within RTP packet In-Reply-To: References: Message-ID: <01a601d254c8$7a8785a0$6f9690e0$@com> Hello, > I want to send some metadata with the rtp packets (e.g. putting them in rtp extension). > As I searched live555 does not support sending rtp extension so is there any way to send such metadata in current live555. > Or are you aware of any patch that adds such functionality to live555? Attached you will find a patch implementing support for RTP header extensions in LIVE555. To use this on the server side, you will need to override the MultiFramedRtpSink::doExtensionHeaderHandling and MultiFramedRtpSink::extensionHeaderSize functions. In your override of doExtensionHeaderHandling, you will need to set the header data via one of the new methods setExtensionHeaderWord or setExtensionHeaderBytes, then call setExtensionHeaderBit to indicate that you placed extension header data. To use this on the client side, you will need to set a header extension callback by calling setExtensionHeaderCallback on the RTPSource object that LIVE555 creates for you. The callback will then be called when a header extension is processed. Thanks, Chris Richardson WTI -------------- next part -------------- A non-text attachment was scrubbed... Name: RTPHeaderExtensions.patch Type: application/octet-stream Size: 10486 bytes Desc: not available URL: From liverwurst at owal.io Mon Dec 12 18:30:51 2016 From: liverwurst at owal.io (Virginia Hamm) Date: Mon, 12 Dec 2016 21:30:51 -0500 Subject: [Live-devel] who can add some functionality to the rtsp proxy for me (for pay) Message-ID: Ross said it was OK to post this! I need to give temporary access to a running proxy to users, and not only revoke the access when it times out, but also kill their existing streams. There are two components here: 1. Add and remove authorizations at runtime. - The authorization could piggy-back on the existing authdb mechamism (I already have code that uses grpc (google RPC) to create new username/passwords; you can reuse that code, or you can write your own with your favorite IPC mechanism. - Alternatively, authorization could happen by generating a long, random URL and giving that to the user. That is, instead of the user having to connect to rtsp://foo:pass at example.com:28882/proxyStream, they could just as well connect to rtsp:// example.com:28882/piweuroiajsdf8weorpoajdflqopoiykdlgjloiute. - It does not matter whether the username/password (or url) is generated by the proxy and communicated to my user-facing service (which will subsequently forward it to the final user), or whether the service generates those and passes them to the proxy. They are obviously functionally equivalent, but one may be easier to implement than the other. 2. The authorization should come with a time limit, of the order of one minute. When this time limit expires: - The credentials of step 1 should be removed from proxy - Any sessions (so, both the rtsp TCP connection and any video streams being sent to the user) that were created using those credentials should be terminated. Needless to say, the code should come with full tests. Anyone interested in working on this for a fee? The only condition I impose is that the code can be released under the LGPL (or whatever Ross tells me is appropriate to release it under). This means that if you incorporate anyone else's code, that use should neither violate *their* licensing, nor should encumber the releasability (is this a word?) under the LGPL. \/-/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From chingmlai at rcn.com Thu Dec 15 20:33:02 2016 From: chingmlai at rcn.com (chingmlai at rcn.com) Date: Thu, 15 Dec 2016 23:33:02 -0500 (EST) Subject: [Live-devel] Help streaming over HTTP to Apple devices In-Reply-To: <1254820602.12084231.1481862709570.JavaMail.root@rcn.com> Message-ID: <1750677708.12084531.1481862782377.JavaMail.root@rcn.com> Hi, I have been using Live555 tools to deliver RTSP from h264 and AAC streams or from mp4 file with very satisfied results. My ultimate client is Apple mobile devices. As we know, Apple accepts only HTTP Transport Streaming (TS). Live555 tool can do that. I have downloaded Live555 test files bipbop-gear1-all.ts and bipbop-gear1-all.tsx, and use DynamicRTSPServer to deliver the AV streams through TunnellingOverHTTP. The AvPlayer of iPhone client can receive them and playback them nicely. I also used MPEG2TransportStreamIndexer function to generate tsx file from bipbop-gear1-all.ts. It generated the exact same data as the downloaded bipbop-gear1-all.tsx file. The indexer function is working correctly. In the next step, I downloaded Live555 test files, test.264 and test.aac. I followed the example of testH264VideoToTransportStream to create a H264VideoStreamFramer from test.264 as the video source. I also created ADTSAudioFileSource from test.acc as the audio source. Then I created a MPEG2TransportStreamFromESSource filter by adding the video source and the audio source to generate the TS file ?out.ts?. The VLC can play this TS file but the audio is silent with error message of ?Multiple blocks per frame in ADTS not supported?. With that in mind, I went ahead to generate the out.tsx file from out.ts. Both file sizes are in expected range. But when they are used to stream over HTTP, the iPhone cannot play it out (it popped a No-Play icon on the screen). However, it apparently had downloaded all the segments and it showed the video duration correctly as 58 seconds. The Apple AvPlayer error message is brief with Code=-11800 "The operation could not be completed". Apple provides a program, MediaStreamValidator, to debug the transport stream content. When I run that, the error message is also brief with ?Error injecting segment data?. Thus, I cannot determine the source of the problem. In any case, iPhone did not accept the ts file. When I prepared the ts file with the video source only, the AvPlayer could not complete the loading process. It is possibly due to the requirement that both video and audio streams must be present or stream audio only. I cannot stream audio alone, because the indexer function generates nothing from audio ts file. It is very desirable if LIve555 can make this work. Currently, LIve555 also does not have a function to convert AAC from non-ADTS (as in the mp4 file) to ADTS. It will be very useful for the developers, if Live555 can provide a ?testMP4AudioVideoToTransportStream? program, or the like, to demonstrate that h246 video and AAC can be multiplexed and streamed over HTTP and accepted by Apple devices. Maybe I missed something or did not do it right. Please help me with instructions or suggestions to make it works. Holden From support at vidhvatthamah.com Sat Dec 17 00:26:03 2016 From: support at vidhvatthamah.com (support) Date: Sat, 17 Dec 2016 13:56:03 +0530 Subject: [Live-devel] Proxy Server using TCP crashes Message-ID: Hi I'm streaming RTSP video using TCP. When I play the video using VLC, it plays for a while. then it crashes with access violation. Sometime it takes time to crash. It crashes in the function void RTPInterface::removeStreamSocket when executing this instruction "if ((*streamsPtr)->fStreamSocketNum == sockNum." This is the verbosity output. ProxyRTSPClient[rtsp://192.168.1.123/mpeg4/]: lost connection to server ('errno': 10057). Resetting... ProxyServerMediaSubsession[(NULL),H264]::closeStreamSource() ProxyServerMediaSubsession[(NULL),H264]::~ProxyServerMediaSubsession() Opening connection to 192.168.1.123, port 554... When I look deep into the access violation, the stack shows the function removeStreamSocket is called at SocketDescriptor destructor. it fetches the rtpinterface pointer. The pointer is already deleted it is referencing a deleted pointer which causes access violation. Could you please help me on this problem. Thanks Renganayaki -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Sat Dec 17 00:54:49 2016 From: finlayson at live555.com (Ross Finlayson) Date: Sat, 17 Dec 2016 21:54:49 +1300 Subject: [Live-devel] Proxy Server using TCP crashes In-Reply-To: References: Message-ID: <7F0A25BC-A6ED-4456-920A-23EF8B8EC97D@live555.com> Are you using the latest version of the ?LIVE555 Streaming Media? code? See http://live555.com/liveMedia/faq.html#latest-version Several bugs related to RTP/RTCP-over-TCP streaming have been fixed in recent years. Ross Finlayson Live Networks, Inc. http://www.live555.com/ From support at vidhvatthamah.com Sat Dec 17 03:35:06 2016 From: support at vidhvatthamah.com (support) Date: Sat, 17 Dec 2016 17:05:06 +0530 Subject: [Live-devel] Proxy Server using TCP crashes In-Reply-To: <7F0A25BC-A6ED-4456-920A-23EF8B8EC97D@live555.com> References: <7F0A25BC-A6ED-4456-920A-23EF8B8EC97D@live555.com> Message-ID: Ross I'm using the latest and greatest. Thanks Renganayaki On Dec 17, 2016 2:43 PM, "Ross Finlayson" wrote: > Are you using the latest version of the ?LIVE555 Streaming Media? code? > See > http://live555.com/liveMedia/faq.html#latest-version > > Several bugs related to RTP/RTCP-over-TCP streaming have been fixed in > recent years. > > > Ross Finlayson > Live Networks, Inc. > http://www.live555.com/ > > > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mehdi at msemsar.com Tue Dec 20 08:59:51 2016 From: mehdi at msemsar.com (Mehdi Semsarzadeh) Date: Tue, 20 Dec 2016 11:59:51 -0500 Subject: [Live-devel] live555 support for SEI or unspecified NAL unit Message-ID: Dear All, I want to embed a custom NAL unit to H264 and stream it using live555. So I have two questions: 1 - does live555 support streaming h264 bitstream with SEI? 2 - Instead of adding SEI I can add an unspecified NAL (e.g. nal_unit_type 0 or 24..31), does live555 support sending and unspecified NAL unit, as well? Thanks, -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Tue Dec 20 09:22:26 2016 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 21 Dec 2016 06:22:26 +1300 Subject: [Live-devel] live555 support for SEI or unspecified NAL unit In-Reply-To: References: Message-ID: <44125990-F181-451F-BF94-7B7EE1A96CCF@live555.com> Our software will probably handle (send and receive) H.264 NAL units with ?unspecified? nal_unit_types - but please don?t do this. Standards exist for a reason. Use an existing standard nal_unit_type, so that other implementations (i.e., not our code) will understand your stream as well. Ross Finlayson Live Networks, Inc. http://www.live555.com/ From robin.imrie at dotorigin.com Wed Dec 21 03:07:59 2016 From: robin.imrie at dotorigin.com (Robin Imrie) Date: Wed, 21 Dec 2016 11:07:59 +0000 Subject: [Live-devel] Detecting when a RTSP server has gone offline Message-ID: <87870756d1b948e5903701fc9e33a337@SEHSTE15D3BE4.hs20.net> I have adapted the testRTSPClient application so I can see the data received from my RSTP server which sends SOAP packets when various events occur (no audio or video data). These data packets are not continuous. However when I unplug it from the network there isn't any notification that the server is now unavailable. Do I need to periodically send keep alive messages? Robin Imrie Senior Software Developer [cid:image004.png at 01CE44E1.D07D5C50][cid:image002.png at 01D25B7A.7D438380] Phone +44 (0) 1428 685861 Email robin.imrie at dotorigin.com Dot Origin Ltd., Unit 7, Coopers Place Business Park, Combe Lane, Wormley, Godalming, GU8 5SZ, United kingdom The information in this E-mail and in any attachment is confidential and is intended solely for the addressee. Access, copying, disclosure or use of such information by anyone else is unauthorised.Dot Origin Ltd. is registered in England, registration number 3441848 Registered office: Suite 3pm Midday Court, 20-24 Brighton Road, Sutton, Surrey SM2 5BN, VAT registration number GB 707 571 824 ______________________________________________________________________ This email has been scanned by the Symantec Email Security.cloud service. For more information please visit http://www.symanteccloud.com ______________________________________________________________________ -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.png Type: image/png Size: 2280 bytes Desc: image001.png URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image002.png Type: image/png Size: 174 bytes Desc: image002.png URL: From daniel.deus at icen.ufpa.br Thu Dec 22 10:47:20 2016 From: daniel.deus at icen.ufpa.br (daniel.deus at icen.ufpa.br) Date: Thu, 22 Dec 2016 10:47:20 -0800 (PST) Subject: [Live-devel] Issue with nmake testProgs.mak Message-ID: <909ebcd843394670b5c2bc7b7d0b88ca@icen.ufpa.br> Hi, I want to build the testProgs.mak, but I got this particular error which I could not to find in over internet yet: _C:\USERS\DANIEL\DOCUMENTS\LIVE555\TESTPROGS>NMAKE /B -F TESTPROGS.MAK_ _MICROSOFT (R) PROGRAM MAINTENANCE UTILITY VERSION 14.00.24210.0_ _COPYRIGHT (C) MICROSOFT CORPORATION. ALL RIGHTS RESERVED._ _ -OUT:TESTMP3STREAMER.EXE MSVCRT.LIB TESTMP3STREAMER.OBJ ../LIVEMEDIA_ _/LIBLIVEMEDIA.LIB ../GROUPSOCK/LIBGROUPSOCK.LIB ../BASICUSAGEENVIRONMENT/LIBBAS_ _ICUSAGEENVIRONMENT.LIB ../USAGEENVIRONMENT/LIBUSAGEENVIRONMENT.LIB_ _THE FILENAME, DIRECTORY NAME, OR VOLUME LABEL SYNTAX IS INCORRECT._ _NMAKE : FATAL ERROR U1077: '-OUT:TESTMP3STREAMER.EXE' : RETURN CODE '0X1'_ _STOP._ I found only a forum which was saying that there is a bad quotes (") in somewhere of testProgs.mak file. Att, Daniel -------------- next part -------------- An HTML attachment was scrubbed... URL: From erik at montnemery.com Mon Dec 26 08:03:16 2016 From: erik at montnemery.com (Erik Montnemery) Date: Mon, 26 Dec 2016 17:03:16 +0100 Subject: [Live-devel] When streaming RTP over TCP, Live555 Proxy Server sometimes does not reconnect to 'back end' device Message-ID: Hi, Most of the time, the proxy server reconnects to the 'back-end' server after an error or loss of connection, but every now and then the following happens: Error or connection loss is detected, and the reset sequence is performed. However, after the new connection to the 'back end' server is initiated but before it is established, the socket's background handler is reset and the reestablish of the connection to the 'back end' server is thus hung forever: Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 5)::deregisterRTPInterface(channel 0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 5)::deregisterRTPInterface(channel 255) Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor::deregisterRTPInterface setting fDeleteMyselfNext ^-- fDeleteMyselfNext is set Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTPInterface::stopNetworkReading turnOffBackgroundReadHandling(4294967295) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(4294967295, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTPInterface::stopNetworkReading turnOffBackgroundReadHandling(4294967295) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(4294967295, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 5)::deregisterRTPInterface(channel 2) Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient[(NULL)]: Calling setBaseURL(fOurURL) Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient[rtsp://root:xxxxxx at 192.168.0.35/axis-media/media.amp]: Calling sendDESCRIBE(this) Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient::sendDESCRIBE rtspClient == NULL: FALSE Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::sendRequest Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::sendRequest - we need to open a connection Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::openConnection Dec 26 16:20:15 Thor live555ProxyServer[27609]: Opening connection to 192.168.0.35, port 554... Dec 26 16:20:15 Thor live555ProxyServer[27609]: Setting up BackgroundHandling for socket 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::connectToServer setBackgroundHandling(5, SOCKET_WRITABLE|SOCKET_EXCEPTION, connectionHandler, this) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(5, c, 0x40a250, 0x10b6430) Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::sendRequest - connectResult:0 Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::sendRequest - connectionIsPending:1 Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient[rtsp://root:xxxxxx at 192.168.0.35/axis-media/media.amp]: Reset done ^-- Reset sequence in ProxyRTSPClient::continueAfterLivenessCommand finished Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor::tcpReadHandler fDeleteMyselfNext set Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor::~SocketDescriptor turnOffBackgroundReadHandling(5) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(5, 0, 0x0, 0x0) ^-- Background handler reset again before the connection is reestablished Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::handleAlternativeRequestByte1 setBackgroundHandling(5, SOCKET_READABLE|SOCKET_EXCEPTION, incomingDataHandler, this) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(5, a, 0x40d4f0, 0x10b6430) I guess the problem is related to the reset sequence being run from within SocketDescriptor::tcpReadHandler? More context: Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient[rtsp://192.168.0.35/axis-media/media.amp/]: lost connection to server ('errno': -2). Resetting... Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient[rtsp://192.168.0.35/axis-media/media.amp/]: Calling reset Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient[rtsp://192.168.0.35/axis-media/media.amp/]: ProxyRTSPClient::reset enter Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::reset Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::resetTCPSockets Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::resetTCPSockets disableBackgroundHandling(5) 1 Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(5, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient[(NULL)]: ProxyRTSPClient::reset leave Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient[(NULL)]: Calling fOurServerMediaSession.resetDESCRIBEState() Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPServer::RTSPClientSession(0x17eea90)::~RTSPClientSession session(0x10b6210)->referenceCount(): 1 Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 1 Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 2 Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 9 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 9)::deregisterRTPInterface(channel 0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 9 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 9)::deregisterRTPInterface(channel 1) Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 3 Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() streamState(0x17eea20)->referenceCount(): 1 Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 4 Dec 26 16:20:15 Thor live555ProxyServer[27609]: StreamState(0x17eea20)::~StreamState() Dec 26 16:20:15 Thor live555ProxyServer[27609]: StreamState::reclaim() Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTPInterface::stopNetworkReading turnOffBackgroundReadHandling(28) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(28, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTPInterface::stopNetworkReading turnOffBackgroundReadHandling(4294967295) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(4294967295, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 5)::deregisterRTPInterface(channel 0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTPInterface::stopNetworkReading turnOffBackgroundReadHandling(4294967295) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(4294967295, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 5)::deregisterRTPInterface(channel 0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyServerMediaSubsession[(NULL),H264]::closeStreamSource() Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyServerMediaSubsession[(NULL),H264]::closeStreamSource() fParentSession(0x10b6210)->refcnt: 1 Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyServerMediaSubsession[(NULL),H264]::closeStreamSource() subsession: (0) port:52784, codecName: H264, hasRTPSource: YES Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyServerMediaSubsession[(NULL),H264]::closeStreamSource() subsession: (1) port:43362, codecName: MPEG4-GENERIC, hasRTPSource: YES Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 6 Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 1 Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 2 Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 9 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 9)::deregisterRTPInterface(channel 2) Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 9 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 9)::deregisterRTPInterface(channel 3) Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor::deregisterRTPInterface calling delete Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor::~SocketDescriptor turnOffBackgroundReadHandling(9) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(9, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(9, a, 0x402d1a, 0x189b340) Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 3 Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() streamState(0x1894570)->referenceCount(): 1 Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 4 Dec 26 16:20:15 Thor live555ProxyServer[27609]: StreamState(0x1894570)::~StreamState() Dec 26 16:20:15 Thor live555ProxyServer[27609]: StreamState::reclaim() Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTPInterface::stopNetworkReading turnOffBackgroundReadHandling(31) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(31, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTPInterface::stopNetworkReading turnOffBackgroundReadHandling(4294967295) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(4294967295, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 5)::deregisterRTPInterface(channel 2) Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyServerMediaSubsession[(NULL),MPEG4-GENERIC]::closeStreamSource() Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyServerMediaSubsession[(NULL),MPEG4-GENERIC]::closeStreamSource() fParentSession(0x10b6210)->refcnt: 1 Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyServerMediaSubsession[(NULL),MPEG4-GENERIC]::closeStreamSource() subsession: (0) port:52784, codecName: H264, hasRTPSource: YES Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyServerMediaSubsession[(NULL),MPEG4-GENERIC]::closeStreamSource() subsession: (1) port:43362, codecName: MPEG4-GENERIC, hasRTPSource: YES Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: OnDemandServerMediaSubsession::deleteStream() 6 Dec 26 16:20:15 Thor live555ProxyServer[27609]: GenericMediaServer::ClientSession::~ClientSession fOurServerMediaSession(0x10b6210)->referenceCount(): 0 Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyServerMediaSubsession[(NULL),H264]::~ProxyServerMediaSubsession() Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyServerMediaSubsession[(NULL),MPEG4-GENERIC]::~ProxyServerMediaSubsession() Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 5)::deregisterRTPInterface(channel 255) Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor::deregisterRTPInterface setting fDeleteMyselfNext Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTPInterface::stopNetworkReading turnOffBackgroundReadHandling(4294967295) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(4294967295, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTPInterface::stopNetworkReading turnOffBackgroundReadHandling(4294967295) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(4294967295, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 5)::deregisterRTPInterface(channel 0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 5)::deregisterRTPInterface(channel 255) Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor::deregisterRTPInterface setting fDeleteMyselfNext ^-- fDeleteMyselfNext is set Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTPInterface::stopNetworkReading turnOffBackgroundReadHandling(4294967295) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(4294967295, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTPInterface::stopNetworkReading turnOffBackgroundReadHandling(4294967295) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(4294967295, 0, 0x0, 0x0) Dec 26 16:20:15 Thor live555ProxyServer[27609]: deregisterSocket sockNum: 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor(socket 5)::deregisterRTPInterface(channel 2) Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient[(NULL)]: Calling setBaseURL(fOurURL) Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient[rtsp://root:xxxxxx at 192.168.0.35/axis-media/media.amp]: Calling sendDESCRIBE(this) Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient::sendDESCRIBE rtspClient == NULL: FALSE Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::sendRequest Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::sendRequest - we need to open a connection Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::openConnection Dec 26 16:20:15 Thor live555ProxyServer[27609]: Opening connection to 192.168.0.35, port 554... Dec 26 16:20:15 Thor live555ProxyServer[27609]: Setting up BackgroundHandling for socket 5 Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::connectToServer setBackgroundHandling(5, SOCKET_WRITABLE|SOCKET_EXCEPTION, connetionHandler, this) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(5, c, 0x40a250, 0x10b6430) Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::sendRequest - connectResult:0 Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::sendRequest - connectionIsPending:1 Dec 26 16:20:15 Thor live555ProxyServer[27609]: ProxyRTSPClient[rtsp://root:xxxxxx at 192.168.0.35/axis-media/media.amp]: Reset done ^-- Reset sequence in ProxyRTSPClient::continueAfterLivenessCommand finished Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor::tcpReadHandler fDeleteMyselfNext set Dec 26 16:20:15 Thor live555ProxyServer[27609]: SocketDescriptor::~SocketDescriptor turnOffBackgroundReadHandling(5) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(5, 0, 0x0, 0x0) ^-- Background handler reset again before the connection is reestablished Dec 26 16:20:15 Thor live555ProxyServer[27609]: RTSPClient::handleAlternativeRequestByte1 setBackgroundHandling(5, SOCKET_READABLE|SOCKET_EXCEPTION, incomingDataHandler, this) Dec 26 16:20:15 Thor live555ProxyServer[27609]: BasicTaskScheduler::setBackgroundHandling(5, a, 0x40d4f0, 0x10b6430) Dec 26 16:20:20 Thor live555ProxyServer[27609]: RTSPServer::RTSPClientConnection(0x189b340)::~RTSPClientConnection Dec 26 16:20:20 Thor live555ProxyServer[27609]: RTSPServer::RTSPClientConnection(0x189b340)::closeSocketsRTSP Dec 26 16:20:20 Thor live555ProxyServer[27609]: GenericMediaServer::ClientConnection::closeSockets disableBackgroundHandling(9) /Erik From vivek at youraydio.com Wed Dec 28 22:15:17 2016 From: vivek at youraydio.com (Vivek V) Date: Thu, 29 Dec 2016 11:45:17 +0530 Subject: [Live-devel] Encoding the Stream in AMR-WB+ Message-ID: Hi Developers, We're building an audio streaming application and after through consideration we finalized on AMR-WB+ (Extended Adaptive Multi-Rate Wideband), for our application at low bitrates we found this to be the best codec.(http://www.voiceage.com/AMR-WBplus.html) I am exploring LIVE 555 Server for a couple days now and trying to setup in Windows Environment. I would be using VS 2015 for development. Goal: I want to encode the Wav Files into a AMR-WB+ Stream and Decode it on the mobile app. I have seen that LIVE 555 server supports AMR Stream, but will it support AMR-WB+ encoding if not how can I build one. I have seen the source code at ANSI-C 26.104. Any help regarding this would be hugely appreciated. -- Thanks, *Vivek* -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Wed Dec 28 22:37:52 2016 From: finlayson at live555.com (Ross Finlayson) Date: Thu, 29 Dec 2016 19:37:52 +1300 Subject: [Live-devel] Encoding the Stream in AMR-WB+ In-Reply-To: References: Message-ID: > I have seen that LIVE 555 server supports AMR Stream, but will it support AMR-WB+ encoding Yes, it should. If your AMR input source is a file, or a pipe (i.e., ?stdin?), then you can use the existing ?AMRAudioFileServerMediaSubsession? class. Otherwise, you?ll need to define your own ?OnDemandServerMediaSubsession? subclass see this FAQ: http://live555.com/liveMedia/faq.html#liveInput-unicast that uses your own subclass of the ?AMRAudioSource? abstract base class. Ross Finlayson Live Networks, Inc. http://www.live555.com/