I have recently posted a topic on RTMP Proxy support in PMS and finally came to know that PMS does not have it. As a channel developer I think it is a great feature.
All my tests shows me that it is a must to have feature in PLEX. We neeed RTMP Proxy to get the RTMP args.
This will help for DEV to implement new channels with out using site configuration.
CAN SOME ONE PLEASE TELL ME WHAT ARE THE ARGUMENTS WE CAN PASS TO RTMPVideoURL FUNCTION. SO THAT I CAN PASS THE INFO REQUIRED THAT I AM GATHERING THROUGH RTMP PROXY.
I scanned entire forum and the default service sets and did not find a way to pass on the complete details of RTMP stream to RTMPVideoUrl function.
So far we are able to pass URL, CLIP, swf_url, args=[False, playpath], width and height. I needs to pass -C arguments that an RTMP stream requires. Is it possible to pass it using args.
Is there any way we can pass the RTMPDUMP command to Plex WebKit RTMPPlayer instead of using RTMPVideoUrl. Any work around for this issue?
You can pass -C arguments, the documentation is unfortunately lagging the pace of development. They are done with the "args" parameter. The framework converts them to the appropriate format before passing them to libRTMP.
ie. *False* gets added as " -C 'B:0' " and *playpath* gets added as " -C 'S:' ". It takes a list [], and values can be a boolean, string, number, or any of the above with an assigned name attached.
For example, *args=[dict(code="1.23", flag="ok")]*, gets passed to libRTMP as *--conn 'NN:code:1.23' --conn 'NS:flag:ok'*
For clarity, here are the other parameters and their rtmpdump equivalents:
[list][*]**url | **'-r' or '--rtmp'[*]**clip | **'-y' or '--playpath'[*]**swf_url |** '-W' or '--SwfVfy'[*]**app** | '-a' or '--app'[*]**args**** ****|**** **'-C' or '--conn'[/list]
Thank you for the details. You been very help full for all my questions. I really appreciate all your help. Will check with ARGS and let you if I come across any further issues.
You're welcome. I like to see other people getting involved. I know that it can be frustrating when the documentation isn't up to date. As I understand, updating the docs is on the To-Do list but, as with everything else, finding the time to get it done tends to be problematic.
Yes. I made the changes and all my week work proven to be working as expected. I can now use RTMP Proxy to stream RTMPVideos. But I ended up running two servers for Media Center. I have to run PMS (Windows) on one machine and RTMP Proxy (Linux) on another machine.
I think I can switch to one linux server and have both PMS and Proxy running on it. The reason of having linux server is to route the out going traffic for port 1935 to local proxy server to get the RTMP information.
For sure, Plex needs RTMP Proxy compatibility to add more channels by developers quickly. Now I ended up maintaining my own channels for the web site uses flash as this setup works only for me.
Does PMS supports trans-coding of RTMPE? We are able to play the videos of RTMPE in Plex, but when we try to play them on ROKU, they fail because of transcoding. Is there any setting to correct this? As RTMPDUMP was able to handshake the stream why can’t we transcode the stream?
PMS does handle transcoding RTMPE, unless it's live. I'm unfamiliar with the details of the issue but if the RTMP(E) stream is live, the transcoder can't handle do it. The desktop client is capable of playing live RTMP(E) streams but it's the only client that has librtmp built-in to make that possible.
If the stream isn't live and still won't transcode, their are generally 2 possible issues.
[list=1][*]You need to include the RealRTMP flag in the plugin's Info.plist file and (if you're using one) the URL Service's ServiceInfo.plist file.[*]The client needs to be updated to make the proper request for the RTMP(E) stream to be transcoded.[/list]
I'm pretty sure that the Roku client is RTMP(E)-transcode ready. If none of the above seem to apply to your problem, then check the Plex Media Server.log for information about transcoding errors.
That's an odd set of arguments to pass. Is there not any other arguments between "-C O:0" and "-C O:1" ? Based on the librtmp man page, O:0 and O:1 define the beginning and end (respectively) of an object being passed in the connection. So, "-C O:0 -C O:1" equates to passing an empty object. If that's the case, the RTMPVideoURL() args should look like:
So far my tests I am getting two different types that are required as of ARGS for RTMPVideoItem function.
1) " -C B:0 -C S:PLAYPATH "
2) " -C O:0 -C O:1 "
None of them has any combinations of object and bollean or string. So I assume no arguments between "-C O:0" and "-C O:1". If the connection requires Object then it is not required either bollean or string.
If we have to use args=(dict()) means we do not have specify the args in RTMPVideoItem, am I correct ?
If we specify args=(dict()) then only " -C O:0 -C O:1 " string added to the rtmpdump ?
Based on your two separate scenarios, I believe the RTMPVideoURL calls would look like this (assuming that the swf_url parameter is required, if not ignore that part):
1)
As I said in my previous post, passing an empty object "-C O:0 -CO:1" (example 2 above) seems odd to me. However, that doesn't mean it's not necessary or proper. I just think it shouldn't be necessary to pass an empty object in the connection parameters. If I were you, I would test the commands with rtmpdump to see if it will connect without passing "-C O:0 -CO:1". If so, then you should be able to ignore the 'args=(dict())' . If rtmpdump is unable to connect without including the "-C O:0 -CO:1", then I guess it's necessary to include 'args=(dict())' when defining the RTMPVideoURL.
Hi, yes I thought it was live too but rtmpdump works without the -v so I believe it will work without it.
I searched the forum and google but there are not much information on RTMPVideoURL. This thread was the best info I found.
Perhaps I'll send a message to Mike.
Just note that live streams will most likely only work on desktop Plex clients as the transcoding of live streams isn't yet supported by PMS.
Regarding the pageurl parameter I'm not too sure, according to the documentation it says that this parameter isn't needed. However if you need to put it in you could try and just attach it to one of the other parameters (not sure if this will work, but it's the only option). So basically something like this: