@mx3L
The question is if we can query libavformat which rtmp implementation it use?
Posted 3 October 2016 - 12:14
@samsamsam
I was looking into ffmpeg sources, and we don't need to know which implementation is used.
we can set rtmp options the same way via AVDict, if you look at the bottom of rtmproto.c and librtmp.c:
rtmproto:
static const AVOption rtmp_options[] = { {"rtmp_app", "Name of application to connect to on the RTMP server", OFFSET(app), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_buffer", "Set buffer time in milliseconds. The default is 3000.", OFFSET(client_buffer_time), AV_OPT_TYPE_INT, {.i64 = 3000}, 0, INT_MAX, DEC|ENC}, {"rtmp_conn", "Append arbitrary AMF data to the Connect message", OFFSET(conn), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_flashver", "Version of the Flash plugin used to run the SWF player.", OFFSET(flashver), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_flush_interval", "Number of packets flushed in the same request (RTMPT only).", OFFSET(flush_interval), AV_OPT_TYPE_INT, {.i64 = 10}, 0, INT_MAX, ENC}, {"rtmp_live", "Specify that the media is a live stream.", OFFSET(live), AV_OPT_TYPE_INT, {.i64 = -2}, INT_MIN, INT_MAX, DEC, "rtmp_live"}, {"any", "both", 0, AV_OPT_TYPE_CONST, {.i64 = -2}, 0, 0, DEC, "rtmp_live"}, {"live", "live stream", 0, AV_OPT_TYPE_CONST, {.i64 = -1}, 0, 0, DEC, "rtmp_live"}, {"recorded", "recorded stream", 0, AV_OPT_TYPE_CONST, {.i64 = 0}, 0, 0, DEC, "rtmp_live"}, {"rtmp_pageurl", "URL of the web page in which the media was embedded. By default no value will be sent.", OFFSET(pageurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC}, {"rtmp_playpath", "Stream identifier to play or to publish", OFFSET(playpath), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_subscribe", "Name of live stream to subscribe to. Defaults to rtmp_playpath.", OFFSET(subscribe), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC}, {"rtmp_swfhash", "SHA256 hash of the decompressed SWF file (32 bytes).", OFFSET(swfhash), AV_OPT_TYPE_BINARY, .flags = DEC}, {"rtmp_swfsize", "Size of the decompressed SWF file, required for SWFVerification.", OFFSET(swfsize), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, DEC}, {"rtmp_swfurl", "URL of the SWF player. By default no value will be sent", OFFSET(swfurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_swfverify", "URL to player swf file, compute hash/size automatically.", OFFSET(swfverify), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC}, {"rtmp_tcurl", "URL of the target stream. Defaults to proto://host[:port]/app.", OFFSET(tcurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_listen", "Listen for incoming rtmp connections", OFFSET(listen), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC, "rtmp_listen" }, {"listen", "Listen for incoming rtmp connections", OFFSET(listen), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC, "rtmp_listen" }, {"timeout", "Maximum timeout (in seconds) to wait for incoming connections. -1 is infinite. Implies -rtmp_listen 1", OFFSET(listen_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC, "rtmp_listen" }, { NULL }, };
librtmp:
static const AVOption options[] = { {"rtmp_app", "Name of application to connect to on the RTMP server", OFFSET(app), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_buffer", "Set buffer time in milliseconds. The default is 3000.", OFFSET(client_buffer_time), AV_OPT_TYPE_STRING, {.str = "3000"}, 0, 0, DEC|ENC}, {"rtmp_conn", "Append arbitrary AMF data to the Connect message", OFFSET(conn), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_flashver", "Version of the Flash plugin used to run the SWF player.", OFFSET(flashver), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_live", "Specify that the media is a live stream.", OFFSET(live), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC, "rtmp_live"}, {"any", "both", 0, AV_OPT_TYPE_CONST, {.i64 = -2}, 0, 0, DEC, "rtmp_live"}, {"live", "live stream", 0, AV_OPT_TYPE_CONST, {.i64 = -1}, 0, 0, DEC, "rtmp_live"}, {"recorded", "recorded stream", 0, AV_OPT_TYPE_CONST, {.i64 = 0}, 0, 0, DEC, "rtmp_live"}, {"rtmp_pageurl", "URL of the web page in which the media was embedded. By default no value will be sent.", OFFSET(pageurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC}, {"rtmp_playpath", "Stream identifier to play or to publish", OFFSET(playpath), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_subscribe", "Name of live stream to subscribe to. Defaults to rtmp_playpath.", OFFSET(subscribe), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC}, {"rtmp_swfurl", "URL of the SWF player. By default no value will be sent", OFFSET(swfurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_swfverify", "URL to player swf file, compute hash/size automatically. (unimplemented)", OFFSET(swfverify), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC}, {"rtmp_tcurl", "URL of the target stream. Defaults to proto://host[:port]/app.", OFFSET(tcurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, #if CONFIG_NETWORK {"rtmp_buffer_size", "set buffer size in bytes", OFFSET(buffer_size), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, DEC|ENC },
Once parsed we just have to strip these options from url and let unknown options like token in url.
Edited by mx3L, 3 October 2016 - 12:15.
Posted 3 October 2016 - 18:35
@mx3L
It seems that there is possibile to compile both protocol NATIVE and LIBRTMP in ffmpeg libs:
https://patches.libav.org/patch/16672/
The question is how to select it before playback.
Solution with AVDICT have one disadvantage, what about when you want to use option only available with librtmp, because without this option stream will not play?
Regards,
SSS
Posted 3 October 2016 - 19:24
@nml
Thanks for the info
@samsamsam
If you look at the librtmp.c source you can see that it constructs filename string according AVDICT options, ie. you have "rtmp_playpath" it will add to filename " playpath=someplaypath", that's why you can currently use these parameters without any change in exteplayer3(when you use librtmp), since we already provide these options in filename.
So only available options to librtmp can be left in filename, others will be appended from AVDICT. Problem is that if there is native protocol, it will only trim these additional parameters for librtmp when it finds path part of url in rtmpurl. It's messy, It would be better if we somehow know which implementation do we use.
Edit:
If we can compile both than even better, as you say just find out how to select between them
Edited by mx3L, 3 October 2016 - 19:26.
Posted 3 October 2016 - 20:14
@mx3L
Somethink like that should works:
AVOutputFormat *fmt = NULL; AVOutputFormat *fmtRTMPTab[] = {NULL, NULL}; uint8_t nativeProtoIndex = -1; uint8_t numOfRTMPImpl = 0; char rtmpProtocol[] = "rtmp"; //rtmp or rtmpe or rtmps or rtmpt or rtmpte or rtmpts while ((fmt = av_oformat_next(fmt))) { if (fmt->name && av_match_name("rtmp", fmt->name)) { ++numOfRTMPImpl; } // rtmpts is only available in native implementation // rtmpts is listed after rtmp if (fmt->name && av_match_name("rtmpts", fmt->name)) { nativeProtoIndex = numOfRTMPImpl-1; } if (fmt->name && av_match_name(rtmpProtocol, fmt->name)) { if (fmtRTMPTab[0] != NULL) { fmtRTMPTab[0] = fmt; } else { fmtRTMPTab[1] = fmt; } } } // if 2 == numOfRTMPImpl -> both supported // elif nativeProtoIndex > -1 -> only native // else -> only libRTMP // to start playback with chosen protocol implementation: avformat_open_input(&avContextTab[AVIdx], filename, fmtRTMPTab[0], &avio_opts);
This method base on fact that rtmpts is only supported by NATIVE protocol.
We can also use information which one occurs first on the AVOutputFormat list.
Edited by samsamsam, 3 October 2016 - 20:18.
Posted 4 October 2016 - 08:15
As I wrote I did not test the code based on AVOutputFormat or rather AVInputFormat
but it will not work since protocol is not format.
Here is valid code (I checked it) to detect which impl of RTMP proto is used by ffmpeg:
//detect RTMP protocol impl uint8_t isNativeProto = 0; void *opaque = NULL; const char *protoName = NULL; while (protoName = avio_enum_protocols(&opaque, 1)) { // rtmpts is only available in native implementation // rtmpts is listed after rtmp if (0 == strcmp("rtmpts", protoName)) { isNativeProto = 1; break; } }
Edited by samsamsam, 4 October 2016 - 08:15.
Posted 4 October 2016 - 17:00
@mx3L
Brilliant work regarding fixing the Openssl handshake,Ive just tested your latest Serviceapp and I'm pleased to say the Variant issue is completely fixed and streams now play in 1080p from the SyfY addon as they should when using Exteplayer3
However
The Discovery Network addon now refuses to stream at all,it just opens then closes again,with the older Serviceapp before the latest fixes,it would stream in just 360p so maybe the handshake failing was hiding something else ?
Of course theres also the possibility that the addon is down,that would just be my luck lol, so I will test further over the next few days and also see if an update to the Discovery Network addon becomes available or not. Just to be sure I've attached the Kodi log so you can have a nosy at it,but I cannot see anything in it that would explain why its not streaming,but maybe you will.
Anyway,as I said Exteplayer3 is now streaming perfectly in 1080p using the Openssl handshake fixes, So Very well done indeed. I will test many more things over the coming days.but so far its looking good.
We now have a perfectly working viable alternative to Mediaplayer in Exteplayer3, but of course with the added bonus of it using ffmpeg so it uses far fewer box resources. I cannot see the need to ever switch from Exteplayer3 now for all my streaming needs.
Many thanks, your work really is appreciated.
Ian.
Edited by ian1095, 4 October 2016 - 17:02.
Posted 4 October 2016 - 18:22
Enigma2 log Debug Level 4 when the Doscovery Network addon just opens then closes the stream without it playing.
There now seems to be a certificate error ?
< 131.173> [eDVBResourceManager] start release channel timer < 131.174> [SKIN] Parsing embedded skin <embedded-in-'KodiLauncher'> < 131.674> [ePopen] command: ps | grep kodi.bin | grep -v grep < 131.674> [eConsoleAppContainer] Starting /bin/sh < 131.696> [KodiLauncher] FBLock < 131.696> [KodiLauncher] startup: kodi is not running, starting... < 131.697> [ePopen] command: unset PYTHONPATH;kodi;kodiext -T < 131.697> [eConsoleAppContainer] Starting /bin/sh < 133.101> [DVBCAHandler] no more services < 134.173> [eDVBResourceManager] release cached channel (timer timeout) < 134.173> [eDVBLocalTimerHandler] remove channel 0x2f9f0e8 < 134.173> [eEPGCache] remove channel 0x2f9f0e8 < 134.174> [eDVBResourceManager] stop release channel timer < 137.175> [eDVBFrontend] close frontend 0 < 207.639> KodiExtRequestHandler: recv()-> opcode = 1, status = 0, data = http s://dscusvod-vh.akamaihd.net/i/longform/2016-09/28/155312.013.02.001-43368-,500k ,200k,350k,800k,1200k,1600k,2200k,3000k,4500k,.mp4.csmil/master.m3u8?hdnts=exp=1 475605223~acl=/*~hmac=3121e3043a9b2ac09d18313dd438a65427d0b120cdbba627234bb5e853 808b3a < 207.641> [KodiLauncher] FBUnlock < 207.641> [fb] double buffering available! < 207.688> [KodiLauncher] RCUnlock < 207.689> UDSServer: handlePlayMessage: playPath = https://dscusvod-vh.akamai hd.net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k, 1600k,2200k,3000k,4500k,.mp4.csmil/master.m3u8?hdnts=exp=1475605223~acl=/*~hmac= 3121e3043a9b2ac09d18313dd438a65427d0b120cdbba627234bb5e853808b3a < 207.695> [SKIN] Parsing embedded skin <embedded-in-'StatusScreen'> < 207.702> [SubsSupport] using global config < 207.835> [SKIN] Parsing embedded skin <embedded-in-'SubsEmbeddedScreen'> < 207.840> [SKIN] Parsing embedded skin <embedded-in-'SubsScreen'> < 207.852> [SubsLoader][info] setting block parsing for Parsers < 207.864> [SKIN] Parsing embedded skin <embedded-in-'Screensaver'> < 207.883> [SKIN] Parsing embedded skin <embedded-in-'HideVBILine'> < 207.948> [ePicLoad] setPara max-X=-1 max-Y=-1 aspect_ratio=1.000000 cache=0 resize=0 bg=#FF000000 auto_orient=0 < 207.948> [WebPixmap] load - already loaded < 207.957> playing 4097:0:0:0:0:0:0:0:0:0:https%3a//dscusvod-vh.akamaihd.net/i /longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,1600k,22 00k,3000k,4500k,.mp4.csmil/master.m3u8?hdnts=exp=1475605223~acl=/*~hmac=3121e304 3a9b2ac09d18313dd438a65427d0b120cdbba627234bb5e853808b3a:Dual Survival - Blackou t < 207.957> eServiceApp < 207.958> PlayerApp < 207.958> BasePlayer < 207.958> ExtEplayer3 < 207.958> PlayerBackend < 207.958> eServiceApp::setTarget 0 [getVariantsFromMasterUrl] - (SSL) Connected with ECDHE-RSA-AES256-GCM-SHA384 en cryption [getVariantsFromMasterUrl] - (SSL) Error in certificate verification: unable to get local issuer certificate [getVariantsFromMasterUrl] - Request: GET /i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,16 00k,2200k,3000k,4500k,.mp4.csmil/master.m3u8?hdnts=exp=1475605223~acl=/*~hmac=31 21e3043a9b2ac09d18313dd438a65427d0b120cdbba627234bb5e853808b3a HTTP/1.1 Host: dscusvod-vh.akamaihd.net User-Agent: Enigma2 HbbTV/1.1.1 (+PVR+RTSP+DL;OpenPLi;;;) Accept: */* Connection: close [getVariantsFromMasterUrl] Response[0](size=15): HTTP/1.1 200 OK [getVariantsFromMasterUrl] Response[1](size=19): Server: AkamaiGHost [getVariantsFromMasterUrl] Response[2](size=20): Content-Length: 3375 [getVariantsFromMasterUrl] Response[3](size=43): Content-Type: application/vnd.a pple.mpegurl [getVariantsFromMasterUrl] Response[4](size=192): Set-Cookie: _alid_=4CLfDy074DS lI4yIcU/TMg==; path=/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,35 0k,800k,1200k,1600k,2200k,3000k,4500k,.mp4.csmil/; domain=dscusvod-vh.akamaihd.n et [getVariantsFromMasterUrl] Response[5](size=17): Mime-Version: 1.0 [getVariantsFromMasterUrl] Response[6](size=30): Access-Control-Allow-Origin: * [getVariantsFromMasterUrl] Response[7](size=38): Expires: Tue, 04 Oct 2016 17:20 :28 GMT [getVariantsFromMasterUrl] Response[8](size=34): Cache-Control: max-age=0, no-ca che [getVariantsFromMasterUrl] Response[9](size=16): Pragma: no-cache [getVariantsFromMasterUrl] Response[10](size=35): Date: Tue, 04 Oct 2016 17:20:2 8 GMT [getVariantsFromMasterUrl] Response[11](size=17): Connection: close [getVariantsFromMasterUrl] Response[12](size=0): [getVariantsFromMasterUrl] - content part started [getVariantsFromMasterUrl] Response[13](size=7): #EXTM3U [getVariantsFromMasterUrl] Response[14](size=97): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=573000,RESOLUTION=640x360,CODECS="avc1.66.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[15](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_0_av.m3u8?null=0&hdntl=exp=1475688028~acl= %2f*~data=hdntl~hmac=bd0fabfcb9789af63ab6c6aa9b6a3eaab9151da0f05bc3db0f8d99b8ee1 fbf61 [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[16](size=97): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=267000,RESOLUTION=320x180,CODECS="avc1.66.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[17](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_1_av.m3u8?null=0&hdntl=exp=1475688028~acl= %2f*~data=hdntl~hmac=bd0fabfcb9789af63ab6c6aa9b6a3eaab9151da0f05bc3db0f8d99b8ee1 fbf61 [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[18](size=97): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=420000,RESOLUTION=320x180,CODECS="avc1.66.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[19](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_2_av.m3u8?null=0&hdntl=exp=1475688028~acl= %2f*~data=hdntl~hmac=bd0fabfcb9789af63ab6c6aa9b6a3eaab9151da0f05bc3db0f8d99b8ee1 fbf61 [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[20](size=97): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=911000,RESOLUTION=640x360,CODECS="avc1.77.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[21](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_3_av.m3u8?null=0&hdntl=exp=1475688028~acl= %2f*~data=hdntl~hmac=bd0fabfcb9789af63ab6c6aa9b6a3eaab9151da0f05bc3db0f8d99b8ee1 fbf61 [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[22](size=98): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=1319000,RESOLUTION=854x480,CODECS="avc1.77.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[23](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_4_av.m3u8?null=0&hdntl=exp=1475688028~acl= %2f*~data=hdntl~hmac=bd0fabfcb9789af63ab6c6aa9b6a3eaab9151da0f05bc3db0f8d99b8ee1 fbf61 [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[24](size=98): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=1726000,RESOLUTION=854x480,CODECS="avc1.77.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[25](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_5_av.m3u8?null=0&hdntl=exp=1475688028~acl= %2f*~data=hdntl~hmac=bd0fabfcb9789af63ab6c6aa9b6a3eaab9151da0f05bc3db0f8d99b8ee1 fbf61 [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[26](size=99): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=2369000,RESOLUTION=1280x720,CODECS="avc1.77.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[27](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_6_av.m3u8?null=0&hdntl=exp=1475688028~acl= %2f*~data=hdntl~hmac=bd0fabfcb9789af63ab6c6aa9b6a3eaab9151da0f05bc3db0f8d99b8ee1 fbf61 [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[28](size=99): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=3181000,RESOLUTION=1280x720,CODECS="avc1.77.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[29](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_7_av.m3u8?null=0&hdntl=exp=1475688028~acl= %2f*~data=hdntl~hmac=bd0fabfcb9789af63ab6c6aa9b6a3eaab9151da0f05bc3db0f8d99b8ee1 fbf61 [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[30](size=101): #EXT-X-STREAM-INF:PROGRAM-ID= 1,BANDWIDTH=4702000,RESOLUTION=1920x1080,CODECS="avc1.640028, mp4a.40.2" [getVariantsFromMasterUrl] Response[31](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_8_av.m3u8?null=0&hdntl=exp=1475688028~acl= %2f*~data=hdntl~hmac=bd0fabfcb9789af63ab6c6aa9b6a3eaab9151da0f05bc3db0f8d99b8ee1 fbf61 [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] - end of read, Content-Length reached < 208.486> eServiceApp::fillSubservices - found 9 subservices < 208.486> eServiceApp::start - subservice(4702000b/s) selected according to c onnection speed (1410064408) < 208.496> KodiExtRequestHandler: send()-> opcode = 1, status = 1, data = None < 208.501> PlayerBackend::gotMessage - tStart < 208.502> PlayerApp::processStart: exteplayer3 "https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_8_av.m3u8?null=0&hdntl=exp=1475688028~acl= %2f*~data=hdntl~hmac=bd0fabfcb9789af63ab6c6aa9b6a3eaab9151da0f05bc3db0f8d99b8ee1 fbf61" < 208.722> ExtEPlayer3::handleJsonOutput - unhandled key "EPLAYER3_EXTENDED" < 209.450> ExtEPlayer3::handleJsonOutput - unhandled key "PLAYBACK_OPEN" < 209.454> PlayerBackend::recvStopped - retval = 0 < 209.455> PlayerBackend::thread_finished < 209.455> PlayerBackend::gotMessage - stop < 209.455> eServiceApp::gotExtPlayerMessage - stop < 209.456> eServiceApp::isCurrentlySeekable < 209.457> resolved to PAUSE < 209.457> eServiceApp::pause < 209.476> [SubsSupport] closing subtitleDisplay < 209.485> eServiceApp::stop < 209.507> ~PlayerBackend < 209.508> ~ExtEplayer3 < 209.508> ~BasePlayer < 209.508> ~PlayerApp < 209.508> ~eServiceApp < 209.657> KodiExtRequestHandler: recv()-> opcode = 2, status = 0, data = None < 209.660> KodiExtRequestHandler: send()-> opcode = 2, status = 0, data = {"du ration": null, "position": null, "playing": false} < 209.662> KodiExtRequestHandler: recv()-> opcode = 3, status = 0, data = None < 209.664> [KodiLauncher] FBLock < 209.664> [KodiLauncher] RCLock < 209.676> KodiExtRequestHandler: send()-> opcode = 3, status = 1, data = None
Edited by ian1095, 4 October 2016 - 18:25.
Posted 4 October 2016 - 18:49
Cool
Yes the latest fixes have deffo exposed some fault within Serviceapp that were somehow being masked before the Openssl handshake fixes because it now no longer streams using GSTPlayer either (which is why I considered the possibility of the addon itself being down)
Its all worth the effort in the end though mx3L lol
Ian.
Posted 4 October 2016 - 22:06
Sadly mx3L the latest fixes regarding the sending of the header to the player have not fixed it.
Here is the Enigma2 log using debug level 4
< 352.592> [ePopen] command: ps | grep kodi.bin | grep -v grep < 352.592> [eConsoleAppContainer] Starting /bin/sh < 352.611> [KodiLauncher] FBLock < 352.611> [KodiLauncher] startup: kodi is not running, starting... < 352.611> [ePopen] command: unset PYTHONPATH;kodi;kodiext -T < 352.612> [eConsoleAppContainer] Starting /bin/sh < 354.016> [DVBCAHandler] no more services < 355.091> [eDVBResourceManager] release cached channel (timer timeout) < 355.091> [eDVBLocalTimerHandler] remove channel 0x2fa6dd8 < 355.091> [eEPGCache] remove channel 0x2fa6dd8 < 355.092> [eEPGCache] abort caching events !! < 355.094> [eDVBResourceManager] stop release channel timer < 358.095> [eDVBFrontend] close frontend 0 < 412.177> KodiExtRequestHandler: recv()-> opcode = 1, status = 0, data = http s://dscusvod-vh.akamaihd.net/i/longform/2016-09/28/155312.013.02.001-43368-,500k ,200k,350k,800k,1200k,1600k,2200k,3000k,4500k,.mp4.csmil/master.m3u8?hdnts=exp=1 475618600~acl=/*~hmac=989b5e307a4731fcbe949cb99ea5666dd497951a78ed877ff851682272 b63118 < 412.179> [KodiLauncher] FBUnlock < 412.179> [fb] double buffering available! < 412.209> [KodiLauncher] RCUnlock < 412.211> UDSServer: handlePlayMessage: playPath = https://dscusvod-vh.akamai hd.net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k, 1600k,2200k,3000k,4500k,.mp4.csmil/master.m3u8?hdnts=exp=1475618600~acl=/*~hmac= 989b5e307a4731fcbe949cb99ea5666dd497951a78ed877ff851682272b63118 < 412.218> [SKIN] Parsing embedded skin <embedded-in-'StatusScreen'> < 412.229> [SubsSupport] using global config < 412.392> [SKIN] Parsing embedded skin <embedded-in-'SubsEmbeddedScreen'> < 412.400> [SKIN] Parsing embedded skin <embedded-in-'SubsScreen'> < 412.413> [SubsLoader][info] setting block parsing for Parsers < 412.423> [SKIN] Parsing embedded skin <embedded-in-'Screensaver'> < 412.449> [SKIN] Parsing embedded skin <embedded-in-'HideVBILine'> < 412.518> [ePicLoad] setPara max-X=-1 max-Y=-1 aspect_ratio=1.000000 cache=0 resize=0 bg=#FF000000 auto_orient=0 < 412.518> [WebPixmap] load - already loaded < 412.529> playing 4097:0:0:0:0:0:0:0:0:0:https%3a//dscusvod-vh.akamaihd.net/i /longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,1600k,22 00k,3000k,4500k,.mp4.csmil/master.m3u8?hdnts=exp=1475618600~acl=/*~hmac=989b5e30 7a4731fcbe949cb99ea5666dd497951a78ed877ff851682272b63118:Dual Survival - Blackou t < 412.530> eServiceApp < 412.530> PlayerApp < 412.530> BasePlayer < 412.531> ExtEplayer3 < 412.531> PlayerBackend < 412.531> eServiceApp::setTarget 0 [getVariantsFromMasterUrl] - (SSL) Connected with ECDHE-RSA-AES256-GCM-SHA384 en cryption [getVariantsFromMasterUrl] - (SSL) Error in certificate verification: unable to get local issuer certificate [getVariantsFromMasterUrl] - Request: GET /i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,16 00k,2200k,3000k,4500k,.mp4.csmil/master.m3u8?hdnts=exp=1475618600~acl=/*~hmac=98 9b5e307a4731fcbe949cb99ea5666dd497951a78ed877ff851682272b63118 HTTP/1.1 Host: dscusvod-vh.akamaihd.net User-Agent: Enigma2 HbbTV/1.1.1 (+PVR+RTSP+DL;OpenPLi;;;) Accept: */* Connection: close [getVariantsFromMasterUrl] Response[0](size=15): HTTP/1.1 200 OK [getVariantsFromMasterUrl] Response[1](size=19): Server: AkamaiGHost [getVariantsFromMasterUrl] Response[2](size=20): Content-Length: 3375 [getVariantsFromMasterUrl] Response[3](size=43): Content-Type: application/vnd.a pple.mpegurl [getVariantsFromMasterUrl] Response[4](size=192): Set-Cookie: _alid_=VxcYdpC/Loa 3CY9ixnYH1Q==; path=/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,35 0k,800k,1200k,1600k,2200k,3000k,4500k,.mp4.csmil/; domain=dscusvod-vh.akamaihd.n et [getVariantsFromMasterUrl] Response[5](size=17): Mime-Version: 1.0 [getVariantsFromMasterUrl] Response[6](size=30): Access-Control-Allow-Origin: * [getVariantsFromMasterUrl] Response[7](size=38): Expires: Tue, 04 Oct 2016 21:03 :26 GMT [getVariantsFromMasterUrl] Response[8](size=34): Cache-Control: max-age=0, no-ca che [getVariantsFromMasterUrl] Response[9](size=16): Pragma: no-cache [getVariantsFromMasterUrl] Response[10](size=35): Date: Tue, 04 Oct 2016 21:03:2 6 GMT [getVariantsFromMasterUrl] Response[11](size=17): Connection: close [getVariantsFromMasterUrl] Response[12](size=0): [getVariantsFromMasterUrl] - content part started [getVariantsFromMasterUrl] Response[13](size=7): #EXTM3U [getVariantsFromMasterUrl] Response[14](size=97): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=573000,RESOLUTION=640x360,CODECS="avc1.66.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[15](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_0_av.m3u8?null=0&hdntl=exp=1475701406~acl= %2f*~data=hdntl~hmac=4a2873b27298ed7a10ecf88c2f3dc85d0f820231c55d5748782099b0179 6037f [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[16](size=97): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=267000,RESOLUTION=320x180,CODECS="avc1.66.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[17](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_1_av.m3u8?null=0&hdntl=exp=1475701406~acl= %2f*~data=hdntl~hmac=4a2873b27298ed7a10ecf88c2f3dc85d0f820231c55d5748782099b0179 6037f [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[18](size=97): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=420000,RESOLUTION=320x180,CODECS="avc1.66.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[19](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_2_av.m3u8?null=0&hdntl=exp=1475701406~acl= %2f*~data=hdntl~hmac=4a2873b27298ed7a10ecf88c2f3dc85d0f820231c55d5748782099b0179 6037f [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[20](size=97): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=911000,RESOLUTION=640x360,CODECS="avc1.77.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[21](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_3_av.m3u8?null=0&hdntl=exp=1475701406~acl= %2f*~data=hdntl~hmac=4a2873b27298ed7a10ecf88c2f3dc85d0f820231c55d5748782099b0179 6037f [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[22](size=98): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=1319000,RESOLUTION=854x480,CODECS="avc1.77.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[23](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_4_av.m3u8?null=0&hdntl=exp=1475701406~acl= %2f*~data=hdntl~hmac=4a2873b27298ed7a10ecf88c2f3dc85d0f820231c55d5748782099b0179 6037f [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[24](size=98): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=1726000,RESOLUTION=854x480,CODECS="avc1.77.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[25](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_5_av.m3u8?null=0&hdntl=exp=1475701406~acl= %2f*~data=hdntl~hmac=4a2873b27298ed7a10ecf88c2f3dc85d0f820231c55d5748782099b0179 6037f [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[26](size=99): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=2369000,RESOLUTION=1280x720,CODECS="avc1.77.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[27](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_6_av.m3u8?null=0&hdntl=exp=1475701406~acl= %2f*~data=hdntl~hmac=4a2873b27298ed7a10ecf88c2f3dc85d0f820231c55d5748782099b0179 6037f [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[28](size=99): #EXT-X-STREAM-INF:PROGRAM-ID=1 ,BANDWIDTH=3181000,RESOLUTION=1280x720,CODECS="avc1.77.30, mp4a.40.2" [getVariantsFromMasterUrl] Response[29](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_7_av.m3u8?null=0&hdntl=exp=1475701406~acl= %2f*~data=hdntl~hmac=4a2873b27298ed7a10ecf88c2f3dc85d0f820231c55d5748782099b0179 6037f [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] Response[30](size=101): #EXT-X-STREAM-INF:PROGRAM-ID= 1,BANDWIDTH=4702000,RESOLUTION=1920x1080,CODECS="avc1.640028, mp4a.40.2" [getVariantsFromMasterUrl] Response[31](size=274): https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_8_av.m3u8?null=0&hdntl=exp=1475701406~acl= %2f*~data=hdntl~hmac=4a2873b27298ed7a10ecf88c2f3dc85d0f820231c55d5748782099b0179 6037f [getVariantsFromMasterUrl] - continue parsing m3u8 stream info [getVariantsFromMasterUrl] - end of read, Content-Length reached < 413.046> eServiceApp::fillSubservices - found 9 subservices < 413.046> eServiceApp::start - subservice(4702000b/s) selected according to c onnection speed (1410064408) < 413.047> PlayerBackend::gotMessage - tStart < 413.047> PlayerApp::processStart: exteplayer3 "https://dscusvod-vh.akamaihd. net/i/longform/2016-09/28/155312.013.02.001-43368-,500k,200k,350k,800k,1200k,160 0k,2200k,3000k,4500k,.mp4.csmil/index_8_av.m3u8?null=0&hdntl=exp=1475701406~acl= %2f*~data=hdntl~hmac=4a2873b27298ed7a10ecf88c2f3dc85d0f820231c55d5748782099b0179 6037f" -h "Cookie:_alid_=VxcYdpC/Loa3CY9ixnYH1Q==; path=/i/longform/2016-09/28/1 55312.013.02.001-43368-,500k,200k,350k,800k,1200k,1600k,2200k,3000k,4500k,.mp4.c smil/; domain=dscusvod-vh.akamaihd.net " < 413.057> KodiExtRequestHandler: send()-> opcode = 1, status = 1, data = None < 413.123> ExtEPlayer3::handleJsonOutput - unhandled key "EPLAYER3_EXTENDED" < 413.717> ExtEPlayer3::handleJsonOutput - unhandled key "PLAYBACK_OPEN" < 413.719> PlayerBackend::recvStopped - retval = 0 < 413.720> PlayerBackend::gotMessage - stop < 413.720> eServiceApp::gotExtPlayerMessage - stop < 413.720> eServiceApp::isCurrentlySeekable < 413.720> resolved to PAUSE < 413.721> eServiceApp::pause < 413.721> PlayerBackend::thread_finished < 413.736> [SubsSupport] closing subtitleDisplay < 413.744> eServiceApp::stop < 413.768> ~PlayerBackend < 413.768> ~ExtEplayer3 < 413.768> ~BasePlayer < 413.768> ~PlayerApp < 413.768> ~eServiceApp < 414.214> KodiExtRequestHandler: recv()-> opcode = 2, status = 0, data = None < 414.216> KodiExtRequestHandler: send()-> opcode = 2, status = 0, data = {"du ration": null, "position": null, "playing": false} < 414.219> KodiExtRequestHandler: recv()-> opcode = 3, status = 0, data = None < 414.220> [KodiLauncher] FBLock < 414.220> [KodiLauncher] RCLock < 414.232> KodiExtRequestHandler: send()-> opcode = 3, status = 1, data = None
Ian.
DVB subtitles support in eServiceMP3/GStreamerStarted by DimitarCC, 17 Oct 2024 DVB, Subtitles, GStreamer |
|
|||
Is het denkbaar om GStreamer te vervangen door VLC in toekomstige release?Started by Niceguy, 13 Jan 2022 GStreamer, VLC |
|
|||
Openpli 8.0 ffmpeg problemStarted by tigrousad, 2 Mar 2021 serviceapp, ffmpeg, exteplayer3 and 2 more... |
|
|||
DTS geluid probleem op Pli 6.0 Mutant, Werkt op Pli 4.0 VuDuoStarted by Niceguy, 9 Jan 2018 Gstreamer, Audio DTS |
|
|||
ISo en VOB afspelen in OpenPli 6.1Started by dutcharnie, 8 Jan 2018 ISO, DVD, Gstreamer |
|
0 members, 5 guests, 0 anonymous users