-
Notifications
You must be signed in to change notification settings - Fork 523
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Source Specific Multicast Not Supported (?) #332
Comments
@GScharfofMars For UDP options, Also, the separator between different options is So the UDP file name should be something like:
Please try and let us know if it works. |
First, thanks for jumping in. I appreciate the support. Source=interface surprises me a little. Our environment is configured to use IGMP V3 Source Specific Multicast. VLC style mrls are in the generalized form of udp://ipV4addressOfStreamSource@ipv4MulticastStreamAddress:port multicat also has an extension, /interface=ipV4AddressOfEth0 , and so with shaka-packager I was using interface=ipv4AddressofEth0 and source=ipV4AddressOfStreamSource. Using vlc/multicat, I can observe IGMP message traffic with tcpdump. If the streamSourceAddress is specified, additional records indicating such are put into the IGMP join message, and the switch responds by sending the stream. If the streamSourceAddress is omitted, an IGMP message is sent without those records, and the switch declines to send the stream. Summary, using tcpdump -vvv decode, REDACTIONS-IN-CAPS: Success: Failure: Using shaka-packager, I see no IGMP messages sent of any flavor, under any combination of udp file names, including upd://addressOfSource@MulticastAddressOfStream:Port, nor do I see any way to supply the addressOfSource so as to propitiate the switch. |
@GScharfofMars Emm.. It seems that I had a misunderstanding of the meaning of source and interface. I thought they were the same. Do you have any documentation on UDP multicast explaining these addresses? So we are not handling source correctly. We'd love contributions if you know how to fix it. Here is the code setting up the socket: https://github.com/google/shaka-packager/blob/master/packager/file/udp_file.cc#L171. |
The reference I see coming up on the Web all the time is UNIX Network Programming, Second Edition, by W. Richard Stevens (Prentice Hall, 1998). Chapter 19 on "Multicasting". I thought I had a copy on my shelf, but I'm not seeing it since the last time I cleaned my office. :( My curiosity motivates me to try my hand at fixing it, but I won't be able to engage until later next week. |
Great. I'll assign it to you and add it to v2.1.0 milestone (which is targeted in the end of March). Let us know if anything changes. Thanks for your help. |
@GScharfofMars if you can't get to it let me know. i have a working prototype |
I've been sidetracked at work, and haven't even cracked open the lid on this. If you have something that works, by all means, I cede the coding stick to you. Thanks. |
Issue #332. Change-Id: I3a2b1e1e0525eaba5bb657ce0481d96ceafb4e89
System info
Operating System: Ubuntu 16.04 LTS
Shaka Packager Version: v2.0.0-1d6a2de-release
Issue and steps to reproduce the problem
The following is an address redacted snippet from a test script. The redacted address streams have been shown to exist and be accessible to the host via other programs such as vlc and multicat.
Packager Command:
STREAM_SRC=XX.XX.XX.XX
INTERFACE=YY.YY.YY.YY
STREAM_ADDR=ZZ.ZZ.ZZ.ZZ
STREAM_PORT=PPPPP
./shaka-packager --v=1
in=upd://${STREAM_ADDR}:${STREAM_PORT}?source=${STREAM_SRC}?interface=${INTERFACE}?reuse=1,stream=audio,init_segment=audio_init.mp4,segment_template='audio_$Number$.m4s',playlist_name=audio.m3u8,hls_group_id=audio,hls_name=ENGLISH
in=upd://${STREAM_ADDR}:${STREAM_PORT}?source=${STREAM_SRC}?interface=${INTERFACE}?reuse=1,stream=video,init_segment=h264_init.mp4,segment_template='h264_$Number$.m4s',playlist_name=h264_.m3u8
--hls_master_playlist_output h264_master.m3u8
The result is:
https://google.github.io/shaka-packager/html/tutorials/live.html indicates that "source" is an optional clause for the upd "file" option../testPackager.sh
[0222/181854:INFO:demuxer.cc(89)] Demuxer::Run() on file 'upd://REDACTED?source=REDACTED?interface=REDACTED?reuse=1'.
[0222/181854:INFO:demuxer.cc(161)] Initialize Demuxer for file 'upd://REDACTED?source=REDACTED?interface=REDACTED?reuse=1'.
[0222/181854:VERBOSE1:status.cc(72)] 5 (FILE_FAILURE): Cannot open file for reading upd://REDACTED?source=REDACTED?interface=REDACTED?reuse=1
[0222/181854:ERROR:packager_main.cc(470)] Packaging Error: 5 (FILE_FAILURE): Cannot open file for reading upd://REDACTED?source=REDACTED?interface=REDACTED?reuse=1
Additional Info:
Inspection of source code (udp_options.cc) did not reveal any evidence that the "source" clause of the input spec is parsed or stored in the UdpOptions object instance, nor does the method used to join the IGMP group in udp_file.cc appear to be consistent with the method of joining an SSM group.
The text was updated successfully, but these errors were encountered: