MERGING MediaPortal Url Source Splitter & IPTV Filter (2 Viewers)

georgius

Retired Team Member
  • Premium Supporter
  • October 31, 2010
    1,376
    654
    Bratislava
    Home Country
    Slovakia Slovakia
    JIRA MP1-4155 : Rework of DVBIP RTSP Filter
    https://issues.team-mediaportal.com/browse/MP1-4155

    GIT branch: https://github.com/MediaPortal/Medi...TV_filter_and_MediaPortal_Url_Source_Splitter

    Supported protocols
    Filter should be more stable and reliable than version provided with MediaPortal. Latest version supports protocols:
    • IPTV (TV Service)
      • UDP sources
      • RTP sources
      • HTTP sources
      • RTSP sources
      • M3U8 sources (Apple HTTP live streaming)
    • splitter (OnlineVideos)
      • UDP sources
      • RTP sources
      • HTTP sources
      • RTSP sources
      • RTMP sources
      • AFHS sources (Adobe Flash HTTP streaming)
      • MSHS sources (Microsoft HTTP streaming)
      • M3U8 sources (Apple HTTP live streaming)
    Note: Filter doesn't have ability to transcode or to mux incoming stream to MPEG2 TS format (yet). This is planned to be added but later (after all things, which are already planned).

    Compatibility
    Filter is compatible and tested with MP 1.7.1. If you found that filter is compatible with any other MP version, let me know to update.

    Compatibility with standard MediaPortal IPTV filter
    Filter is partially backward compatible with standard MediaPortal IPTV filter delivered by MediaPortal installer. It can partially handle URL parameters from standard MediaPortal IPTV filter. From standard MediaPortal IPTV filter URL parameters are supported parameters:
    MediaPortal IPTV filter parameter nameMergedMediaPortal IPTV filter and url source splitter parameter nameSpecification
    urlUrlThe URL to open.
    interfaceInterfaceThe name of network card interface to use to open URL.
    SidValueMpeg2TsProgramNumberThe program number in program association section (PAT) and in transport stream program map section (PMT).
    PidValueMpeg2TsProgramMapPIDThe program map PID in program association section (PAT) or PID of packet containing transport stream program map section (PMT).
    Note: The URL from standard MediaPortal IPTV filter don't have to be changed to MediaPortal IPTV filter and url source splitter URL format.

    TV Plugin
    From version 2.1.3.5440 is in filter installer included TV plugin to edit scan playlist with possibility to set various filter parameters for each url. The TV plugin is available from TV-Server Configuration tool. After enabling plugin in Plugins section, you can edit playlist or set default parameters for several protocols.

    On main_screen_with_playlist.png image is main screen with loaded playlist. There is Channel name, Url, Protocol, Filter url and special icon column. Below playlist is property grid, when can be changed various settings for select url(s). It is possible to select mutiple urls, after that is possible to change settings for multiple urls.

    In special column is by default blue question mark. It is possible to test URL by clicking on icon, while testing url is shown two arrows in circle (testing_channel.png). If testing is successful, green tick icon is shown (testing_channel_successful.png) else red cross icon is shown (testing_channel_failed.png). The reason of failure is shown in tool tip over the red cross icon.

    Next to playlist editor tab are tabs with general settings for protocols. Each protocol has its own general settings. These settings are applied to url default settings on loading of playlist or pressing Apply settings button. If some settings have wrong value, then next to value is shown exclamation mark with short description of error (in tool tip over icon).

    When some filter url exceedes maximum length of url in TV server database (by default 200 characters), the Update database button is shown. In that case is needed to update database (press button) or you have to find exceeding url(s) and change settings to fit url in database.

    From version 2.1.4.5454 is included in TV plugin also database editor to update channel url directly in database (no scanning is necessary in this case). Database editor is very similar to playlist editor. After urls editing is needed to store changes into database by pressing Store changes button. By pressing Set M2TS parser button are set transport stream ID, program number and program map PID to MPEG2 TS parser settings in channel url.

    From version 2.2.8.5875 is possible to specify remote server authentication and proxy server authentication for HTTP, AFHS, MSHS and M3U8 protocols.

    HTTP protocol settings
    Parameter nameDefault valueSpecification
    InterfaceSystem defaultThe name of network card interface to use to open URL (in default case is network interface card chosen by operating system).
    Open connetion timeout5000The timeout to open HTTP url in milliseconds.
    Open connection sleep time0The time in milliseconds to sleep before opening connection.
    Total reopen connection timeout60000The total timeout to open HTTP url in milliseconds. It is applied when lost connection and trying to open new one. Filter will be trying to open connection until this timeout occurs. This parameter is ignored.
    RTMP protocol settings
    Parameter nameDefault valueSpecification
    InterfaceSystem defaultThe name of network card interface to use to open URL (in default case is network interface card chosen by operating system).
    Open connetion timeout20000The timeout to open RTMP url in milliseconds.
    Open connection sleep time0The time in milliseconds to sleep before opening connection.
    Total reopen connection timeout60000The total timeout to open RTMP url in milliseconds. It is applied when lost connection and trying to open new one. Filter will be trying to open connection until this timeout occurs. This parameter is ignored.
    RTSP protocol settings
    Parameter nameDefault valueSpecification
    InterfaceSystem defaultThe name of network card interface to use to open URL (in default case is network interface card chosen by operating system).
    Open connetion timeout1500The timeout to open RTSP url in milliseconds.
    Open connection sleep time0The time in milliseconds to sleep before opening connection.
    Total reopen connection timeout60000The total timeout to open RTSP url in milliseconds. It is applied when lost connection and trying to open new one. Filter will be trying to open connection until this timeout occurs. This parameter is ignored.
    Client port range50000 - 65535The minimum and maximum UDP port to be used in UDP transport.
    Connection preferencesame connection, UDP, UDP multicastThe preference of each type of streaming. If negotiation of type of streaming failed, then filter tries to negotiate another type of transport. Changing preference order usually lead to faster opening of RTSP url.
    Ignore RTP payload typefalse (not checked)Specifies if filter have to ignore RTP packet payload type (in other case is RTP packet payload type compared to payload type specified in SDP).
    UDP or RTP protocol settings
    Parameter nameDefault valueSpecification
    InterfaceSystem defaultThe name of network card interface to use to open URL (in default case is network interface card chosen by operating system).
    Open connetion timeout1000The timeout to open UDP or RTP url in milliseconds.
    Open connection sleep time0The time in milliseconds to sleep before opening connection. UDP multicast protocol sometimes needs additional time to subscribe and unsubscribe from multicast group. In that case is recommended 200 milliseconds.
    Total reopen connection timeout60000The total timeout to open UDP or RTP url in milliseconds. It is applied when lost connection and trying to open new one. Filter will be trying to open connection until this timeout occurs. This parameter is ignored.
    Receive data check interval500The time in milliseconds to check incomming data. If length of incoming data is same, then connection is assumed as lost and is closed and opened new connection.
    MPEG2 Transport Stream parser settings
    When successfully tested stream (in playlist or database editor), you can access to MPEG2 Transport stream parser settings (m2ts_parser_in_editor.png). The MPEG2 Transport Stream parser settings are divided into three sections: basic settings, filtering program elements and stream analysis.

    The basic settings (m2ts_basic.png) controls simple parser functionality. Align to MPEG2 TS packet checkbox controls aligning stream to MPEG2 TS packet boundary. If this is not checked, then other functionality of MPEG2 TS parser will not work. Detect discontinuity checkbox controls detecting discontinuities in MPEG2 TS packets in stream. The information about discontinuity is logged into filter's log file. Set stream as not encrypted checkbox controls filter ability to clear all encryption flags and data in stream. It doesn't decrypt stream. This option can be useful if stream is not encrypted, but TV service detects stream as encrypted.

    Force stream identification box allow to change stream identification for TV service. It can be useful when stream identification is changing (e.g. because of provider), but channel is still same. When stream identification is changed TV service cannot tune to channel. Values for transport stream ID, program number and program map PID can be found in stream analysis section or can be set in playlist or database editor by pressing Set M2TS parser button. Forcing stream identification is not recommended in case of multiple programs in stream. In this case is also shown warning about multiple programs (m2ts_multiple_programs_warning.png).

    Filtering program elements section is used to filter specific programs in stream (e.g. single radio channel in multiple radio channels stream). After successful stream test is this section populated with detected information from stream. Each tab represents one Transport Stream program map section (PMT) with all program elements (audio, video, subtitles, etc).

    Transport stream program map PID text box can be used to manually create new filtering tab. Add button adds new filtering tab, Remove button remoes actually selected tab.

    Allow filtering program elements allows filter to leave selected program elements in stream. Leave program elements is populated with program element PIDs and only selected program elements are left in stream.

    Future plans
    • add back missing protocols and parsers (MMS)
    • transcoding to MPEG2 TS format
    Installation
    For proper filter working you need Microsoft Visual C++ 2013 Redistributable Package (x86). Install through MediaPortal Extensions Installer or download MPEI package.

    Reverting filter installation:
    1. close MediaPortal
    2. uninstall MediaPortal IPTV filter and url source splitter in MediaPortal Extensions Installer
    3. if you're using OnlineVideos, install MediaPortal Url Source Splitter through MediaPortal Extensions Installer
    Reporting bugs or problems
    When you report bug or problem, please attach log files, which in best case can be obtained by this procedure:
    1. stop TvService and MediaPortal
    2. clear TvService and MediaPortal log folder
    3. start TvService
    4. run MediaPortal
    5. watch channel in TV or watch video in OnlineVideos
    6. wait for bug or problem occur
    7. close MediaPortal
    8. stop TvService
    9. post all logs from TvService and MediaPortal log folder
    Note: In case of crash (MP or TvService) filter produce crash dump files in log folder (MP or TvService, it depends on which component crashed). Crash dump files are generated only in case, when any filter component is cause of crash. These files are big (approx. 200 MB), so they can't be packed and posted.

    Technical documentation
    [COLLAPSE]
    Supported URLs' formats
    Because filter comes from MediaPortal Url Source Splitter, which is part of OnlineVideos, then all URL's must conform of general URL format for OnlineVideos. General format for URL has this structure (used ABNF syntax, RFC 5234):
    Code:
    URL         = PROTOCOLURL *1("####" PARAMETERS)
    PARAMETERS  = PARAMETER *("&" PARAMETER)
    PARAMETER   = NAME "=" VALUE
    NAME        = 1*ALPHADIGIT
    VALUE       = 1*(ALPHADIGIT / "%")
    
    HOSTPORT    = HOST [ ":" PORT ]
    HOST        = HOSTNAME | HOSTNUMBER
    HOSTNAME    = *[ DOMAINLABEL "." ] TOPLABEL
    DOMAINLABEL = ALPHADIGIT | ALPHADIGIT *[ ALPHADIGIT | "-" ] ALPHADIGIT
    TOPLABEL    = ALPHA | ALPHA *[ ALPHADIGIT | "-" ] ALPHADIGIT
    PORT        = 1*DIGIT
    ALPHADIGIT  = ALPHA | DIGIT
    ALPHA       = LOWALPHA | HIGHALPHA
    LOWALPHA    = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" |
                  "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" |
                  "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" |
                  "y" | "z"
    HIGHALPHA   = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" |
                  "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" |
                  "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z"
    DIGIT       = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
    If in URL is specified ####, then HEADER part is ignored. In many cases is sufficient to specify only HEADER part of URL. Each parameter value MUST BE encoded for URL (in C# System.Web.HttpUtility.UrlEncode() method), this ensures that all special characters in parameter value (like space, ampersand (&), cross (#), equal (=), etc.) are properly encoded.

    General filter parameters
    Parameter nameDefault valueSpecification
    UrlEmptyThe URL to open.
    InterfaceEmptyThe name of network card interface to use to open URL (in default case is network interface card chosen by operating system).
    LogFileName
    • Common application data\Team MediaPortal\MPIPTVSource.log - for IPTV
    • Common application data\Team MediaPortal\MPUrlSourceSplitter.log - for splitter
    Specifies log file name for filter.
    LogMaxSize10485760The maximum size of log file in bytes (default is 10 MB).
    LogVerbosity4Log file verbosity level. Possible values are:
    • 0 - no messages are logged to log file
    • 1 - error messages are logged to log file
    • 2 - warning messages are logged to log file
    • 3 - information messages are logged to log file
    • 4 - verbose messages are logged to log file
    MaxPlugins256The maximum value of plugins to be loaded.
    CacheFolder
    • Common application data\Team MediaPortal\MPIPTVSource - for IPTV
    • Common application data\Team MediaPortal\MPUrlSourceSplitter - for splitter
    Specifies cache folder for filter. Here are stored temporary files for splitter or IPTV. They are used to minimize memory consumption and for faster seeking in streams.
    LiveStream
    • 0 - for splitter
    • 1 - for IPTV
    The flag specifying that stream is live stream. Live streams should set this parameter to 1. IPTV has always this flag set to 1.
    DumpProtocolInputData0The flag specifying that protocol input data should be dumped. The possible values are:
    • 0 - disabled
    • 1 - enabled
    DumpProtocolOutputData0The flag specifying that protocol output data should be dumped. The possible values are:
    • 0 - disabled
    • 1 - enabled
    DumpParserInputData0The flag specifying that parser input data should be dumped. The possible values are:
    • 0 - disabled
    • 1 - enabled
    DumpParserOutputData0The flag specifying that parser output data should be dumped. The possible values are:
    • 0 - disabled
    • 1 - enabled
    DumpOutputPinData0The flag specifying that output pin data should be dumped. The possible values are:
    • 0 - disabled
    • 1 - enabled
    Note: Unknown parameters are ignored by filter.

    UDP and RTP protocols
    UDP and RTP protocols URLs are in this format:
    Code:
    PROTOCOLURL = SCHEME "://" *1(SOURCEHOST "@") LOCALHOST
    SCHEME      = 1*1("UDP" | "RTP")
    SOURCEHOST  = HOSTPORT
    LOCALHOST   = HOSTPORT
    The scheme of protocol can be "UDP" or "RTP", it doesn't matter. The protocol is determined on first received packet.

    Examples:
    • udp://233.10.12.1:7777
    • udp://@233.10.12.1:7777
    • udp://192.168.15.50:4477@233.10.12.1:7777
    UDP and RTP protocol parameters
    Parameter nameDefault valueSpecification
    UdpOpenConnectionTimeout2000The timeout to open UDP or RTP url in milliseconds.
    UdpOpenConnectionSleepTime0The time in milliseconds to sleep before opening connection. UDP multicast protocol sometimes needs additional time to subscribe and unsubscribe from multicast group. In that case is recommended 200 milliseconds.
    UdpTotalReopenConnectionTimeout60000The total timeout to open UDP or RTP url in milliseconds. It is applied when lost connection and trying to open new one. Filter will be trying to open connection until this timeout occurs. This parameter is ignored in case of live stream (IPTV or specified live stream in OnlineVideos).
    UdpReceiveDataCheckInterval500The time in milliseconds to check incomming data. If count of incoming data is same, then connection is assumed as lost and is closed and opened new connection.
    Example of UDP URL with url (udp://@233.10.12.1:7777) and network interface (Local Area Connection):
    Code:
    udp://@233.10.12.1:7777####Url=udp%3a%2f%2f%40233.10.12.1%3a7777&Interface=Local%20Area%20Connection
    HTTP protocol
    HTTP protocol URL is defined in RFC 1738. By general in format:
    Code:
    PROTOCOLURL = SCHEME "://" HOSTPORT [ "/" PATH ]
    SCHEME      = "http" | "https"
    Examples:
    • http://test.tv
    • http://test.tv/channel
    • http://test.tv:5678/channel
    HTTP protocol parameters
    Parameter nameDefault valueSpecification
    HttpOpenConnectionTimeout20000The timeout to open HTTP url in milliseconds.
    HttpOpenConnectionSleepTime0The time in milliseconds to sleep before opening connection.
    HttpTotalReopenConnectionTimeout60000The total timeout to open HTTP url in milliseconds. It is applied when lost connection and trying to open new one. Filter will be trying to open connection until this timeout occurs. This parameter is ignored in case of live stream (IPTV or specified live stream in OnlineVideos).
    HttpRefererEmptyThe value of referer HTTP header to send to remote server.
    HttpUserAgentEmptyThe value of user agent HTTP header to send to remote server.
    HttpCookieEmptyThe value of cookie HTTP header to send to remote server.
    HttpVersion0Forces to use specific HTTP protocol version. Possible values are:
    • 0 - automatic HTTP protocol version (by default it is HTTP 1.1)
    • 1 - forces to use HTTP 1.0
    • 2 - forces to use HTTP 1.1
    HttpIgnoreContentLength0Specifies if content length HTTP header have to be ignored (e.g. because server reports bad content length). Possible values are:
    • 0 - doesn't ignore content length HTTP header
    • 1 - ignore content length HTTP header
    HttpCookiesCount0Specifies the count of HTTP cookies parameters (HttpCookie00000000, HttpCookie00000001, etc.).
    HttpCookie%08uEmptyThe value of specific HTTP cookie in Netscape or Mozilla format or regular HTTP style cookie header. HTTP cookies are used to initialize cookie engine, but used are only these cookies, which are related to HTTP url. The parameters are indexed from zero.
    HttpSeekingSupported0Specifies if seeking is supported by specifying range HTTP header in request. The possible values are:
    • 0 - seeking is not supported
    • 1 - forces seeking support
    HttpSeekingSupportDetection1Enables or disables automatic detection of seeking support. The possible values are:
    • 0 - automatic detection is disabled (in that case is seeking support specified by HttpSeekingSupported parameter)
    • 1 - automatic detection is enabled
    HttpServerAuthenticate0Enables or disables remote server authentication. The possible values are:
    • 0 - authentication is disabled
    • 1 - authentication is enabled
    HttpServerUserNameEmptyThe remote server user name.
    HttpServerPasswordEmptyThe remote server password.
    HttpProxyServerAuthenticate0Enables or disables proxy server authentication. The possible values are:
    • 0 - proxy server authentication is disabled
    • 1 - proxy server authentication is enabled
    HttpProxyServerEmptyThe URL or IP address of proxy server.
    HttpProxyServerPortEmptyThe proxy server port.
    HttpProxyServerUserNameEmptyThe proxy server user name.
    HttpProxyServerPasswordEmptyThe proxy server password.
    HttpProxyServerType1The type of proxy server. The possible values are:
    • 0 - no proxy server type, invalid value
    • 1 - HTTP proxy server
    • 2 - HTTP/1.0 proxy server
    • 3 - SOCKS4 proxy server
    • 4 - SOCKS5 proxy server
    • 5 - SOCKS4A proxy server
    • 6 - SOCKS5 proxy server with resolving hostname
    Example of HTTP URL with url (http://www.youtube.com), referer (http://www.test.tv) and user agent (Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0):
    Code:
    http://www.youtube.com####Url=http%3a%2f%2fwww.youtube.com&HttpReferer=http%3a%2f%2fwww.test.tv&HttpUserAgent=Mozilla%2f5.0+(Windows+NT+6.1%3b+WOW64%3b+rv%3a24.0)+Gecko%2f20100101+Firefox%2f24.0

    RTSP protocol
    RTSP protocol URL has same format as HTTP protocol URL, except scheme:
    Code:
    PROTOCOLURL = SCHEME "://" HOSTPORT [ "/" PATH ]
    SCHEME      = "rtsp"
    Examples:
    • rtsp://test.tv
    • rtsp://test.tv/channel
    • rtsp://test.tv:5678/channel
    RTSP protocol parameters
    Parameter nameDefault valueSpecification
    RtspOpenConnectionTimeout20000The timeout to open RTSP url in milliseconds.
    RtspOpenConnectionSleepTime0The time in milliseconds to sleep before opening connection.
    RtspTotalReopenConnectionTimeout60000The total timeout to open RTSP url in milliseconds. It is applied when lost connection and trying to open new one. Filter will be trying to open connection until this timeout occurs. This parameter is ignored in case of live stream (IPTV or specified live stream in OnlineVideos).
    RtspMulticastPreference2The preference of multicast UDP transport.
    RtspUdpPreference1The preference of unicast UDP transport.
    RtspSameConnectionTcpPreference0The preference of interleaved TCP transport.
    RtspClientPortMin50000The minimum UDP port to be used in UDP transport.
    RtspClientPortMax65535The maximum UDP port to be used in UDP transport.
    RtspIgnoreRtpPayloadType0Value set to 1 ignores check of received RTP packets payload type against payload type specified in SDP.
    The RTSP protocol negotiate way how to transport data from server to client. The filter needs to know which transport is more preferred by user (e.g. because of firewalls, NATs, routers, etc.). For this purpose there are three parameters: RtspMulticastPreference, RtspUdpPreference and RtspSameConnectionTcpPreference. More preferred transport is that with lower value. In default configuration is transport of data negotiated in this order: same TCP connection, new UDP connection and last is new multicast UDP connection. If your server supports only specific type of connection or you simply want to reorder negotiations, just change these three parameters values. Reordering negotiations can lead to faster opening of RTSP URLs, because filter doesn't create RTSP requests which are denied by remote RTSP server (because of unsupported transport).

    For UDP connection there are two additional parameters: RtspClientPortMin and RtspClientPortMax. They specify minimum and maximum UDP ports to be used in negotiating transport.

    Example of RTSP URL with url (rtsp://test.tv:5678/channel), network interface (Local Area Connection), preferred order of transports (first UDP, second same TCP, third multicast UDP) and minimum UDP client port (55000):
    Code:
    rtsp://test.tv:5678/channel####Url=rtsp%3a%2f%2ftest.tv%3a5678%2fchannel&Interface=Local%20Area%20Connection&RtspUdpPreference=0&RtspSameConnectionTcpPreference=1&RtspClientPortMin=55000
    RTMP protocol
    RTMP protocol is proprietary protocol. RTMP protocol URL is in format:
    Code:
    PROTOCOLURL = SCHEME "://" HOSTPORT [ "/" PATH ]
    SCHEME      = "rtmp" | "rtmpt" | "rtmpe" | "rtmpte" | "rtmps" | "rtmpts"
    Examples:
    • rtmp://test.tv
    • rtmp://test.tv/channel
    • rtmp://test.tv:5678/channel
    RTMP protocol parameters
    Parameter nameDefault valueSpecification
    RtmpOpenConnectionTimeout20000The timeout to open RTMP url in milliseconds.
    RtmpOpenConnectionSleepTime0The time in milliseconds to sleep before opening connection.
    RtmpTotalReopenConnectionTimeout60000The total timeout to open RTMP url in milliseconds. It is applied when lost connection and trying to open new one. Filter will be trying to open connection until this timeout occurs. This parameter is ignored in case of live stream (IPTV or specified live stream in OnlineVideos).
    RtmpAppEmptyName of application to connect to on the RTMP server.
    RtmpTcUrlEmptyURL of the target stream.
    RtmpPageUrlEmptyURL of the web page in which the media was embedded.
    RtmpSwfUrlEmptyURL of the SWF player for the media.
    RtmpFlashVerEmptyVersion of the Flash plugin used to run the SWF player.
    RtmpAuthEmptyAuthentication string to be appended to the connect string.
    RtmpArbitraryDataEmptyAppends arbitrary AMF data to the Connect message. The type must be B for Boolean, N for number, S for string, O for object, or Z for null. For Booleans the data must be either 0 or 1 for FALSE or TRUE, respectively. Likewise for Objects the data must be 0 or 1 to end or begin an object, respectively. Data items in subobjects may be named, by prefixing the type with 'N' and specifying the name before the value, e.g. NB:myFlag:1. This option may be used multiple times to construct arbitrary AMF sequences. E.g. conn=B:1 conn=S:authMe conn=O:1 conn=NN:code:1.23 conn=NS:flag:ok conn=O:0
    RtmpPlayPathEmptyThe play path of media.
    RtmpPlaylist0If the value is 1, issue a set_playlist command before sending the play command.
    RtmpLive0If the value is 1, specifies that the media is a live stream. This flag is only for RTMP protocol and it has different meaning as LiveStream parameter.
    RtmpSubscribeEmptyName of live stream to subscribe to.
    RtmpBuffer30000Sets buffer time to specified value in milliseconds.
    RtmpTokenEmptyKey for SecureToken response, used if the server requires SecureToken authentication.
    RtmpJtvEmptyJSON token used by legacy Justin.tv servers. Invokes NetStream.Authenticate.UsherToken.
    RtmpSwfVerify0If the value is 1, the SWF player is retrieved from the specified RtmpSwfUrl for performing SWF Verification. The SWF hash and size (used in the verification step) are computed automatically.
    Example of RTMP URL with url (rtmp://rtmp.server.tv), application (/vod/test.flv), target stream URL (rtmp://rtmp.server.tv/vod/test.flv), page URL (http://my.server.tv), SWF file URL (http://my.server.tv/sources/player.swf) and verification (1):
    Code:
    rtmp://rtmp.server.tv####Url=rtmp%3a%2f%2frtmp.server.tv&RtmpApp=%2fvod%2ftest.flv&RtmpTcUrl=rtmp%3a%2f%2frtmp.server.tv%2fvod%2ftest.flv&RtmpPageUrl=http%3a%2f%2fmy.server.tv&RtmpSwfUrl=http%3a%2f%2fmy.server.tv%2fsources%2fplayer.swf&RtmpSwfVerify=1
    AFHS protocol
    AFHS (Adobe Flash HTTP Streaming) protocol URL has same format as HTTP protocol URL, except scheme:
    Code:
    PROTOCOLURL = SCHEME "://" HOSTPORT [ "/" PATH ]
    SCHEME      = "afhs"
    Examples:
    • afhs://test.tv
    • afhs://test.tv/channel
    • afhs://test.tv:5678/channel
    AFHS protocol parameters
    All HTTP protocol parameters are allowed for AFHS protocol. The following parameters are added for AFHS protocol:
    Parameter nameDefault valueSpecification
    AfhsSegmentFragmentUrlExtraParametersEmptySpecifies string, which is added to each segment and fragment HTTP URL.
    AfhsBootstrapInfoEmptyThe content of bootstrap info in BASE64 encoding.
    AfhsBaseUrlEmptyThe base URL to create stream segements and fragments URL. Created from manifest URL, omitted is everything including last forward slash of path.
    AfhsMediaPartUrlEmptyThe content of url attribute of media element in manifest.
    AfhsMediaMetadataEmptyThe content of metadata element in media element in manifest.
    AfhsMediaBootstrapInfoUrlEmptyThe URL to bootstrap info (if specified in manifest).
    AfhsManifestUrlEmptyThe URL to manifest.
    AfhsManifestContentEmptyThe content of Flash Media Manifest (F4M file).
    Note: DRM protected streams are not supported.

    MSHS protocol
    MSHS (Microsoft Smooth HTTP Streaming) protocol URL has same format as HTTP protocol URL, except scheme:

    Code:
    PROTOCOLURL = SCHEME "://" HOSTPORT [ "/" PATH ]
    SCHEME      = "mshs"
    Examples:
    • mshs://test.tv
    • mshs://test.tv/channel
    • mshs://test.tv:5678/channel
    MSHS protocol parameters
    All HTTP protocol parameters are allowed for MSHS protocol. The following parameters are added for AFHS protocol:
    Parameter nameDefault valueSpecification
    MshsBaseUrlEmptyThe base URL to create stream fragments URL. Created from manifest URL, omitted is everything including last forward slash of path.
    MshsManifestEmptyThe content of manifest, zipped and encoded to BASE64 encoding.
    Note: DRM protected streams are not supported.
    Note: From family of possible video and audio formats are supported:
    • video: H264
    • audio: AACL
    M3U8 protocol
    M3U8 (Apple HTTP live streaming) protocol URL has same format as HTTP protocol URL, except scheme:
    Code:
    PROTOCOLURL = SCHEME "://" HOSTPORT [ "/" PATH ]
    SCHEME      = "m3u8"
    Examples:
    • afhs://test.tv
    • afhs://test.tv/channel
    • afhs://test.tv:5678/channel
    M3U8 protocol parameters
    All HTTP protocol parameters are allowed for MSHS protocol. The following parameters are added for M3U8protocol:
    Parameter nameDefault valueSpecification
    M3u8PlaylistUrlEmptyThe M3U8 playlist URL.
    M3u8PlaylistContentEmptyThe playlist content (compressed by zlib) in BASE64 encoding.
    Note: DRM protected streams are not supported.
    Note: Currently are supported only media playlists up to version 7, but tested were only up to version 3.

    Parsers
    The filter can parse and handle several types of files:
    This means that you don't have to specify specific AFHS, MSHS or M3U8 protocol url, just specify HTTP url to F4M file, MSHS manifest file or M3U8 playlist file.

    MPEG2 Transport Stream parser
    MPEG2 Transport Stream parser do several changes to MPEG2 stream:
    • align MPEG2 transport stream packets to their boundary
    • detects discontinuity in MPEG2 stream based on continuity counters of MPEG2 transport stream packets
    • can change transport stream ID in program association section (TSID in PAT)
    • can change program number in program association section (program number in PAT) and transport stream program map section (program number in PMT)
    • can change program map PID and PID of PSI packets containing transport stream program map (PMT PID)
    The last three options (changing transport stream ID, changing program number and/or changing program map PID) you need to use in case that your provider is chaning this identificators in stream and you need to rescan channels in TV-Server Configuration tool.

    Note: MPEG2 Transport Stream parser can change program number and/or program map PID only in case that in MPEG2 stream is only one program.

    MPEG2 Transport Stream parser parameters
    Parameter nameDefault valueSpecification
    Mpeg2TsDetectDiscontinuity1Enables or disables discontinuity detection by analysing continuity counters of packets. Possible values are:
    • 0 - discontinuity detection is disabled
    • 1 - discontinuity detection is enabled
    Mpeg2TsAlignToMpeg2TSPacket1Align MPEG2 Transport Stream packets to their boundaries. It is strongly recommended to have this option left in default configuration. Without properly aligned MPEG2 packets, other functions in parser will not work. Probably also filter stops working (depending if you're using splitter or IPTV filter). Possible values are:
    • 0 - aligning of packets is disabled
    • 1 - aligning of packets is enabled
    Mpeg2TsTransportStreamIDEmptyThe value of transport stream ID in program association section (PAT).
    Mpeg2TsProgramNumberEmptyThe value of program number in program association section (PAT) and transport stream program map section (PMT).
    Mpeg2TsProgramMapPIDEmptyThe value of program map PID in program association section (PAT) and PID of packet containing transport stream program section (PMT).
    [/COLLAPSE]
     

    Attachments

    • main_screen_with_playlist.png
      main_screen_with_playlist.png
      75.3 KB
    • http_settings.png
      http_settings.png
      49.5 KB
    • rtmp_settings.png
      rtmp_settings.png
      51.3 KB
    • rtsp_settings.png
      rtsp_settings.png
      56.6 KB
    • udp_rtp_settings.png
      udp_rtp_settings.png
      51.8 KB
    • testing_channel.png
      testing_channel.png
      87.6 KB
    • testing_channel_successful.png
      testing_channel_successful.png
      86.7 KB
    • testing_channel_failed.png
      testing_channel_failed.png
      84.9 KB
    • wrong_parameter.png
      wrong_parameter.png
      70.8 KB
    • update_databse.png
      update_databse.png
      72.1 KB
    • database_editor.png
      database_editor.png
      79 KB
    • m2ts_basic.png
      m2ts_basic.png
      38.2 KB
    • m2ts_filtering_program_elements.png
      m2ts_filtering_program_elements.png
      36.4 KB
    • m2ts_stream_analysis.png
      m2ts_stream_analysis.png
      44 KB
    • m2ts_parser_in_editor.png
      m2ts_parser_in_editor.png
      77.7 KB
    • m2ts_multiple_programs_warning.png
      m2ts_multiple_programs_warning.png
      41.5 KB
    Last edited:

    azzuro

    Test Group
  • Team MediaPortal
  • May 10, 2007
    9,948
    5,617
    France - IDF
    Home Country
    France France
    About FFmpeg : the next step is to use NUGET.
    @Sebasti.

    But : the first approch is to find Bug (but who said, it is bugged ???? :whistle: )
    Cable card support if we have regression ( maybe no relation ) or enhancement ...

    Eh, maybe ready for the RED line of MP 1.6 :D many thanks. :notworthy:
     

    georgius

    Retired Team Member
  • Premium Supporter
  • October 31, 2010
    1,376
    654
    Bratislava
    Home Country
    Slovakia Slovakia
    Probably impossible to include FFmpeg as NUGET. Filter/splitter has slightly changed FFmpeg libraries (mainly because of seeking in streams). Also each compilation of FFmpeg produce specific set of header files, which must be included into project.

    Edit: same with CURL and RTMP.
     
    Last edited:

    georgius

    Retired Team Member
  • Premium Supporter
  • October 31, 2010
    1,376
    654
    Bratislava
    Home Country
    Slovakia Slovakia
    It should be ready for compilation. Try to open MPUrlSourceSplitter.sln and try to build. As I remember, only DSHOW_BASE variable must be set. I know that this is changed in newer version of MP and I change it ASAP. And also I'll add whole MPUrlSourceSplitter solution into Filters solution.
     

    azzuro

    Test Group
  • Team MediaPortal
  • May 10, 2007
    9,948
    5,617
    France - IDF
    Home Country
    France France
    few error for compil
    Code:
    	2	IntelliSense : impossible d'ouvrir le fichier source "streams.h"	e:\svnroot\1.mediaportal\mediaportal-1\directshowfilters\mpurlsourcesplitter\mpurlsourcesplitter\mpurlsourcesplitter_interfaces\iplugin.h	28	1	MPUrlSourceSplitter_Interfaces
    	1	IntelliSense : impossible d'ouvrir le fichier source "ParameterCollection.h"	e:\svnroot\1.mediaportal\mediaportal-1\directshowfilters\mpurlsourcesplitter\mpurlsourcesplitter\mpurlsourcesplitter_interfaces\iplugin.h	26	1	MPUrlSourceSplitter_Interfaces
    	9	IntelliSense : impossible d'ouvrir le fichier source "MediaPacketCollection.h"	e:\svnroot\1.mediaportal\mediaportal-1\directshowfilters\mpurlsourcesplitter\mpurlsourcesplitter\mpurlsourcesplitter_interfaces\iparserplugin.h	27	1	MPUrlSourceSplitter_Interfaces
    	5	IntelliSense : identificateur "HRESULT" non défini	e:\svnroot\1.mediaportal\mediaportal-1\directshowfilters\mpurlsourcesplitter\mpurlsourcesplitter\mpurlsourcesplitter_interfaces\iplugin.h	55	11	MPUrlSourceSplitter_Interfaces
    	4	IntelliSense : identificateur "GUID" non défini	e:\svnroot\1.mediaportal\mediaportal-1\directshowfilters\mpurlsourcesplitter\mpurlsourcesplitter\mpurlsourcesplitter_interfaces\iplugin.h	50	11	MPUrlSourceSplitter_Interfaces
    	3	IntelliSense : identificateur "CParameterCollection" non défini	e:\svnroot\1.mediaportal\mediaportal-1\directshowfilters\mpurlsourcesplitter\mpurlsourcesplitter\mpurlsourcesplitter_interfaces\iplugin.h	35	3	MPUrlSourceSplitter_Interfaces
    	6	IntelliSense : identificateur "CParameterCollection" non défini	e:\svnroot\1.mediaportal\mediaportal-1\directshowfilters\mpurlsourcesplitter\mpurlsourcesplitter\mpurlsourcesplitter_interfaces\iplugin.h	62	33	MPUrlSourceSplitter_Interfaces
    	8	IntelliSense : identificateur "CParameterCollection" non défini	e:\svnroot\1.mediaportal\mediaportal-1\directshowfilters\mpurlsourcesplitter\mpurlsourcesplitter\mpurlsourcesplitter_interfaces\iplugin.h	63	44	MPUrlSourceSplitter_Interfaces
    	7	IntelliSense : identificateur "configuration" non défini	e:\svnroot\1.mediaportal\mediaportal-1\directshowfilters\mpurlsourcesplitter\mpurlsourcesplitter\mpurlsourcesplitter_interfaces\iplugin.h	62	55	MPUrlSourceSplitter_Interfaces

    EDIT :
    Streams.h was not available on my system (DX10 SDK installed)

    i have installed PSDK
    http://www.microsoft.com/en-us/download/details.aspx?id=6510

    now is available but VS2010 don't found it!
     
    Last edited:

    Sebastiii

    Development Group
  • Team MediaPortal
  • November 12, 2007
    16,583
    10,403
    France
    Home Country
    France France
    It should be ready for compilation. Try to open MPUrlSourceSplitter.sln and try to build. As I remember, only DSHOW_BASE variable must be set. I know that this is changed in newer version of MP and I change it ASAP. And also I'll add whole MPUrlSourceSplitter solution into Filters solution.


    Hi,
    We should get rid of :
    DirectShowFilters\bin_Win32
    DirectShowFilters\bin_Win32d
    It give 28mb for each branch.

    Do you think it's possible to build within building process ? (There is no bin in lavsplitter too and all dll are build from a batch).
    In fact, we need to submodule ffmpeg code (if needed) and then add in build process.
    Update the wiki if needed extra config/tool (MSYS maybe) etc. :)
     

    Users who are viewing this thread

    Top Bottom