includeBandwidths?

plugin-dev

#1

I've just gotten around to updating to the latest PMS (1.5.4.x) and it's borked a live streaming plugin.

It throws an error saying that my createChannelObject[] has an unexpected keyword argument of includeBandwidths

Adding it to my createChannelObject[] with value of either 0, 1 or False throws a second error on iOS complaing about no direct playback for HTTP, with container MP4, codec H264, audio codec AC3. The offending code appears to be:

video_codec = "H264",
audio_codec = "AAC",
container = "MP4",
protocols = "HTTPLiveStreaming",

(I'm using an @indirect playback method as I need to generate a URL when play is pressed)

If I remove video_codec, audio_codec and container it will play the stream, but:

  • I have no idea what a value of 0, 1 or False does to includeBandwidths as I don't know what it is
  • iOS complains the server is not fast enough to transcode on iOS

Prior to the updated PMS the plugin worked perfectly.


#2

Instead of adding the exact "missing" parameters to my functions, I usually have added **kwargs (example) at the end of the function/parameters declaration. That way it'll keep working, even if anything new is (accidentally) added later in time.

http://stackoverflow.com/questions/36901/what-does-double-star-and-star-do-for-python-parameters


#3

Thanks @sander1 that helps.

It does still leave me not knowing what that argument does, and why the properties (video_codec etc.) now cause iOS to choke


#4

To be honest I also don't know what includeBandwidths does. It doesn't seem to be a standard, at least not for channels.

The reason why some clients are choking could be the mixing of MP4 and HTTPLiveStreaming. Also HTTPLiveStreaming is not a valid protocol value. Try:

video_codec = VideoCodec.H264,
audio_codec = AudioCodec.AAC,
container = "mpegts",
protocols = "hls",


#5

Thanks again @sander1 – will try the above.