VideoHelp Forum




+ Reply to Thread
Results 1 to 10 of 10
  1. Hello everybody,

    I would like to know if the geoblocked livestream here is encrypted or not: https://www.megatv.com/live/

    With NordVPN and greek IP it is playing but I cannot figure out its url after the ad has finished so I assume that it is encrypted.

    Is there a way to find it so that I can watch it on any device instead of only in a browser ?

    Thanks for your interest.
    Quote Quote  
  2. Member
    Join Date
    Mar 2008
    Location
    United States
    Search Comp PM
    In Firefox you can turn DRM off in the settings.
    If it still plays you can safely infer it's not DRM protected ....
    Quote Quote  
  3. Well I have disabled DRM and restarted firefox.
    It is still playing but I cannot find the url by using the addon "The Stream Detector" nor does my paid Internet Download Manager show it up.

    Are there other methods of encrypting besides DRM ?
    Quote Quote  
  4. we've seen this before:

    Code:
    import json
    import struct
    import threading
    import time
    
    import websocket
    
    if __name__ == '__main__':
        def parse_rendition_data(data):
            payload_offset = struct.unpack('>H', data[1:3])[0]
            flags = data[3]
            rendition_id = data[4]
            payload = data[payload_offset:]
    
            return {
                'renditionId': rendition_id,
                'flags': flags,
                'payload': payload
            }
    
        def generate_adts_header(frame_length):
            # Settings:
            #  + MPEG-4
            #  + No CRC
            #  + AAC Low Complexity
            #  + 2 Channels
            #  + 48000 Hz
            #  + 1 Frame/ADTS header
    
            adts_header = bytearray([
                0b11111111,
                0b11110001,
                0b01001100,
                (0b10000000 | ((frame_length >> 11) & 0b00000011)),
                (frame_length >> 3) & 0xFF,
                ((frame_length & 0b111) << 5) | 0b00011111,
                0b11111100
            ])
    
            return adts_header
    
        def on_message(ws, message):
            if isinstance(message, str):
                print(">", message)
            else:
                message_data = parse_rendition_data(message)
                payload = message_data["payload"]
    
                if message_data["flags"] & 0x08 == 0 and message_data["flags"] & 0x04 == 0:
                    if not (message_data["flags"] & 0x02):
                        if message_data["renditionId"] == 5:
                            with open("y_video.mp4", "ab") as f:
                                f.write(payload)
                        elif message_data["renditionId"] == 1:
                            with open("y_audio.aac", "ab") as f:
                                f.write(generate_adts_header(len(payload) + 7))
                                f.write(payload)
    
        def on_open(ws):
            print("[Opened connection]")
    
        def on_error(ws, error):
            print(f"[ERROR: {error}]")
            exit()
    
        def on_close(ws, close_status_code, close_msg):
            print(f"[Closed connection: Code: {close_status_code}, Reason: {close_msg}]")
    
        def heartbeat(ws):
            while True:
                time.sleep(5)
                ping_message = json.dumps({
                    "type": "ping"
                })
                print("<", ping_message)
                ws.send(ping_message.encode())
    
        WSS_URL = "wss://ume3-edge-01.cdn.vindral.com/subscribe?channelId=alteregomedia_megatv1_ci_6cc490c7-e5c6-486b-acf0-9bb9c20fa670&sessionId=e51e487f-5300-4497-a5cc-0f39e8694c4f&clientId=22f176af-57d9-4337-9700-0c4756db8686&audio.bitRate=128000&audio.codec=aac&video.width=1024&video.height=576&video.bitRate=900000&video.codec=av1&burstMs=2000"
    
        ws = websocket.WebSocketApp(
            WSS_URL,
            on_message=on_message,
            on_open=on_open,
            on_error=on_error,
            on_close=on_close
        )
    
        thread = threading.Thread(target=heartbeat, args=(ws,))
        thread.daemon = True
        thread.start()
    
        ws.run_forever()
    Bypass HMACs, One-time-tokens and Lic.Wrapping: https://github.com/DevLARLEY/WidevineProxy2
    Quote Quote  
  5. Thank you all.

    What is wss ?

    An encryption method, a different protocol like http(s), udp ?

    Does this mean that the wss url cannot be played outside the website ?

    I would like to have it on my EnigmaČ receiver for timer based recordings or on DVB Viewer Pro.
    Quote Quote  
  6. It's a WebSocket connection with TLS.
    The stream itself is not encrypted but you'll need some kind of code to attach it to anything.
    Bypass HMACs, One-time-tokens and Lic.Wrapping: https://github.com/DevLARLEY/WidevineProxy2
    Quote Quote  
  7. Well this "some kind of code" seems to be the problem.

    I have tried to play it on SMPlayer, vlc, DVB Viewer Pro
    as
    Code:
    wss://ume3-edge-01.cdn.vindral.com/subscribe?channelId=alteregomedia_megatv1_ci_6cc490c7-e5c6-486b-acf0-9bb9c20fa670&sessionId=e51e487f-5300-4497-a5cc-0f39e8694c4f&clientId=22f176af-57d9-4337-9700-0c4756db8686&audio.bitRate=128000&audio.codec=aac&video.width=1024&video.height=576&video.bitRate=900000&video.codec=av1&burstMs=2000
    and on OpenPLi and OpenATV with installed streamlinkproxy plugin
    Code:
    #SERVICE 5002:0:1:10:10:0:0:0:0:0:http%3a//127.0.0.1%3a8088/wss%3a//ume3-edge-01.cdn.vindral.com/subscribe?channelId=alteregomedia_megatv1_ci_6cc490c7-e5c6-486b-acf0-9bb9c20fa670&sessionId=e51e487f-5300-4497-a5cc-0f39e8694c4f&clientId=22f176af-57d9-4337-9700-0c4756db8686&audio.bitRate=128000&audio.codec=aac&video.width=1024&video.height=576&video.bitRate=900000&video.codec=av1&burstMs=2000
    both with no success.

    Maybe somebody with programming abilities can succeed running it.

    Looks to be a hard nut for common folks like me.
    Quote Quote  
  8. The code snippet I made a while back from post#5 will record your live stream to a video and audio file.

    The problem here is that the data coming from Vindral is in a proprietary format. If there's a standardized way in which VLC could receive video data through WebSockets you'd need to translate it to that or build fragments + an HLS playlist.
    Bypass HMACs, One-time-tokens and Lic.Wrapping: https://github.com/DevLARLEY/WidevineProxy2
    Quote Quote  
  9. I highly appreciate your interest and propositions but with my restricted knowledge I cannot go any further.

    The optimum would be the url to be played in my EnigmaČ receivers. Then I could set timers over the EPG. But for this stream this just seems far too difficult.

    Thank you for spending time and clearing my initial question.
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!