Quantcast

iOS 10.3.1 breaks streaming over cellular?

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

iOS 10.3.1 breaks streaming over cellular?

Michael McNamara
Hi All,

I’ve been chasing down webcam streaming issues in recent days and it seems as though iOS 10.3.1 may have broken streaming via webcams (MJPEG and h264 / RTSP) over cellular networks using GStreamer.  I’m just wondering if anyone else can confirm that?  Streaming via wifi works no problem.  The issue doesn’t exist in iOS 10.2.x or earlier.  I’ve tried multiple versions of GStreamer (1.11.90, 1.10.4, 1.8.3, 1.6.4) using gst-player and playbin and they all exhibit the same behavior when used in an iOS app.

[31;01mERROR  [00m [00m gst-player gstplayer.c:1160:error_cb:<player0>[00m ERROR: from element /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source: Could not establish connection to server.

 [31;01mERROR  [00m [00m gst-player gstplayer.c:1162:error_cb:<player0>[00m Additional debug info:
gstsouphttpsrc.c(1294): gst_soup_http_src_parse_status (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source:
Could not connect: Network is unreachable (4), URL: http://xx.xx.xx.xx/mjpg/video.mjpg?resolution=1024x768, Redirect to: (NULL)

[00m Error: Error from element /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source: Could not open resource for reading.
Could not establish connection to server.
gstsouphttpsrc.c(1294): gst_soup_http_src_parse_status (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source:
Could not connect: Network is unreachable (4), URL: http://xx.xx.xx.xx/mjpg/video.mjpg?resolution=1024x768, Redirect to: (NULL) (gst-player-error-quark, 0)

[00m  0x5a78138 [37mDEBUG  [00m [00m          gst-player gstplayer.c:866:change_state:<player0>[00m Changing app state from buffering to stopped

 I’ve tried a number of internet accessible cameras. Initially I thought this might be due to the fact that some lower level networking libraries on iOS will not wake the cellular radio.  As a test I created a simple socket server that made certain the cellular radio was always active, but there was no difference.  Curiously souphttpsrc logs that it got headers:

souphttpsrc gstsouphttpsrc.c:1034:gst_soup_http_src_got_headers:<source> got headers

even when it’s reporting the network as unreachable.  This doesn’t seem like a GStreamer issue per se (as it has worked up until very recently), but I thought I’d throw it out there to see if anyone else is having issues or, better yet, has a solution!



_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: iOS 10.3.1 breaks streaming over cellular?

Michael McNamara
An addendum to this issue…  It appears to be the case that there are no problems over cellular when using a named host.  A host with an IP address however, fails.


On Apr 25, 2017, at 10:58 AM, Michael McNamara <[hidden email]> wrote:

This sender failed our fraud detection checks and may not be who they appear to be. Learn about spoofing Feedback
Hi All,

I’ve been chasing down webcam streaming issues in recent days and it seems as though iOS 10.3.1 may have broken streaming via webcams (MJPEG and h264 / RTSP) over cellular networks using GStreamer.  I’m just wondering if anyone else can confirm that?  Streaming via wifi works no problem.  The issue doesn’t exist in iOS 10.2.x or earlier.  I’ve tried multiple versions of GStreamer (1.11.90, 1.10.4, 1.8.3, 1.6.4) using gst-player and playbin and they all exhibit the same behavior when used in an iOS app.

[31;01mERROR  [00m [00m gst-player gstplayer.c:1160:error_cb:<player0>[00m ERROR: from element /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source: Could not establish connection to server.

 [31;01mERROR  [00m [00m gst-player gstplayer.c:1162:error_cb:<player0>[00m Additional debug info:
gstsouphttpsrc.c(1294): gst_soup_http_src_parse_status (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source:
Could not connect: Network is unreachable (4), URL: http://xx.xx.xx.xx/mjpg/video.mjpg?resolution=1024x768, Redirect to: (NULL)

[00m Error: Error from element /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source: Could not open resource for reading.
Could not establish connection to server.
gstsouphttpsrc.c(1294): gst_soup_http_src_parse_status (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source:
Could not connect: Network is unreachable (4), URL: http://xx.xx.xx.xx/mjpg/video.mjpg?resolution=1024x768, Redirect to: (NULL) (gst-player-error-quark, 0)

[00m  0x5a78138 [37mDEBUG  [00m [00m          gst-player gstplayer.c:866:change_state:<player0>[00m Changing app state from buffering to stopped

 I’ve tried a number of internet accessible cameras. Initially I thought this might be due to the fact that some lower level networking libraries on iOS will not wake the cellular radio.  As a test I created a simple socket server that made certain the cellular radio was always active, but there was no difference.  Curiously souphttpsrc logs that it got headers:

souphttpsrc gstsouphttpsrc.c:1034:gst_soup_http_src_got_headers:<source> got headers

even when it’s reporting the network as unreachable.  This doesn’t seem like a GStreamer issue per se (as it has worked up until very recently), but I thought I’d throw it out there to see if anyone else is having issues or, better yet, has a solution!


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: iOS 10.3.1 breaks streaming over cellular?

jml5qh
In reply to this post by Michael McNamara
What cell provider are you using for both iOS 10.2 and iOS 10.3.1? In iOS 10.2, T-Mobile turned on DNS64 support which breaks anything that passes an IPv4 string literal. For more information, here's a decent link on DNS64: https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: iOS 10.3.1 breaks streaming over cellular?

Michael McNamara
I’ve seen this on T-Mobile, AT&T and have second hand reports of Verizon as well.  10.3.x only.  There’s no problem is iOS 10.2.x FWIW.  We did IPv6 testing when Apple first brought the issue to light and didn’t experience any issues.  However it would certainly seem as if IPv6 is in fact the issue here.

In glib (2.50-3), gresolver.c in gio makes use of inet_aton() which is called out in Apple's document as being problematic.  gresolver.c appears to primarily be used by various clock related classes — which may (or may not, I haven’t walked a stack trace) help explain why streaming is problematic.  This is the only place I immediately found that doesn’t make use of getaddrinfo().  gthreadedresolver.c and ginetsocketaddress.c make use of getaddrinfo() for example.  I wonder if swapping for inet_aton() for inet_pton() or implementing getaddrinfo() in gresolver.c might fix the issue.

Thanks for the reply!

> On Apr 26, 2017, at 7:30 AM, jml5qh <[hidden email]> wrote:
>
> What cell provider are you using for both iOS 10.2 and iOS 10.3.1? In iOS
> 10.2, T-Mobile turned on DNS64 support which breaks anything that passes an
> IPv4 string literal. For more information, here's a decent link on DNS64:
> https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html.
>
>
>
> --
> View this message in context: http://gstreamer-devel.966125.n4.nabble.com/iOS-10-3-1-breaks-streaming-over-cellular-tp4682803p4682817.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: iOS 10.3.1 breaks streaming over cellular?

jml5qh
I was using udpsrc/udpsink and had to manually use getaddrinfo to convert the IPv4 literal to the possible IPv6 version. We would then take that output and give it to udpsrc/udpsink which fixed the issue
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: iOS 10.3.1 breaks streaming over cellular?

Nicolas Dufresne-5
Le mercredi 26 avril 2017 à 12:30 -0700, jml5qh a écrit :
> I was using udpsrc/udpsink and had to manually use getaddrinfo to convert the
> IPv4 literal to the possible IPv6 version. We would then take that output
> and give it to udpsrc/udpsink which fixed the issue

Has anyone filed a bug on gnome.org ? This will help in tracking this
issue. I would file it against udpsrc/sink in the first place. We can
then decide to fix it in GLib, we'll move the bug accordingly.

regards,
Nicolas
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (188 bytes) Download Attachment
Loading...