home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
73.56k stars 30.74k forks source link

Apple TV media_player.play_media breaking actual AirPlay (e.g. screen mirroring from an iPhone) #51658

Closed 0bimaster closed 3 years ago

0bimaster commented 3 years ago

The problem

Hi,

I'm using the apple_tv integration frequently to display videos on my TV triggered by Home Assistant (e.g. in combination with Alexa, if I tell Alexa to display my WiFi's QR code, I play a video file that shows the QR using the integration with media_player.play_media on the Apple TV).

Playing the video itself is working fine, however, after I do that I cannot use AirPlay on the target Apple TV on my iPhone anymore. If I try to e.g. mirror it gives the error shown in the attached screenshot. The only way to get it working again is to "Restart" the Apple TV via (Apple TV's UI) Settings >> System >> Restart. After that "normal" AirPlay from an iOS device is working again until I play something via Home Assistant, then it breaks again.

What is version of Home Assistant Core has the issue?

core-2021.6.3

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

apple_tv

Link to integration documentation on our website

https://www.home-assistant.io/integrations/apple_tv/

Example YAML snippet

service: media_player.play_media
target:
  entity_id: media_player.appletv
data:
  media_content_type: video
  media_content_id: http://<myhassip>:8123/local/testvideo.mp4

Anything in the logs that might be useful for us?

Nothing specifically useful (at least for my knowledge, so here's the full log of pyatv as of when I start playing a video locally via AirPlay) so I added the full log.

2021-06-09 10:23:00 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event call_service[L]: domain=media_player, service=play_media, service_data=media_content_type=video, media_content_id=http://<myhassip>:8123/local/testvideo.mp4, entity_id=['media_player.appletv']>
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.airplay.srp] Authentication keys (Private=d5628995904f0aa4cf11d2dd8ccc76bc7f582a1215835de9890637990a90af84, Public=f47815bba352095217a82bf8e26972f1a24fd349d676bc6587cab100f21c96a1)
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.airplay.srp] Verification keys (Private=d5628995904f0aa4cf11d2dd8ccc76bc7f582a1215835de9890637990a90af84, Public=fd0815994ba734e523117713e73e8cb48e641fe1df9b4562cb81d5e1f612821b)
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.support.net] POST URL: http://192.168.1.76:7000/pair-verify
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.support.net] >> POST (Data=01000000fd0815994ba734e523117713e73e8cb48e641fe1df9b4562cb81d5e1f612821bf47815bba352095217a82bf8e26972f1a24fd349d676bc6587cab100f21c96a1)
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:00 GMT, Content-Length=96, Content-Type=application/octet-stream, Server=AirTunes/545.22]
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.airplay.srp] Verify (Data=5c840d5e361ed76c4d14cfee445e08f1c0a811444c8e3abf8d4299bcc0f22b83389cec80ce23481d54a3591491fb8f1976be30728fe2830abafa237f4742f687, PublicSecret=87c3efe64c9cd16b54cde60520984fc5debb6bf9db791adff70f47f67f338e60)
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.airplay.srp] Shared secret (Secret=3b901cb766e0c745e14f429ed69a993d45ae508c9da69129bee9a4c507769e44)
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.airplay.srp] Pair-Verify-AES (IV=424c7df21a8fb78a6096c513c53e76f6, Key=e6af0eb01065ff2aae4c131e36a1cc84)
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.airplay.srp] Signature (Signature=a607e9677f7d02485a52d03708e87b5f2fef30269ea1d09e91f4d4fb8c76ff42ae47fbffa22f93d9f2565600e48b5133695182451d4001014e7704576e197a41)
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.support.net] POST URL: http://192.168.1.76:7000/pair-verify
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.support.net] >> POST (Data=00000000a607e9677f7d02485a52d03708e87b5f2fef30269ea1d09e91f4d4fb8c76ff42ae47fbffa22f93d9f2565600e48b5133695182451d4001014e7704576e197a41)
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:00 GMT, Content-Length=0, Content-Type=application/octet-stream, Server=AirTunes/545.22]
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.airplay.player] Starting to play http://<myhassip>:8123/local/testvideo.mp4
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.support.net] POST URL: http://192.168.1.76:7000/play
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.support.net] >> POST (Data=62706c6973743030d30102030405065f1010436f6e74656e742d4c6f636174696f6e5e53746172742d506f736974696f6e5f1012582d4170706c652d53657373696f6e2d49445f1031687474703a2f2f6a61727669732e6f62696c6f63616c3a383132332f6c6f63616c2f6f626967756573745f71722e6d703410005f102461396234323737652d303435362d346335312d393363632d393062623435666564363965080f2231467a7c00000000000001010000000000000007000000000000000000000000000000a3)
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.support.net] Response: status=500, headers=[Content-Length=0, Server=AirTunes/545.22]
2021-06-09 10:23:00 DEBUG (MainThread) [pyatv.airplay.player] Failed to stream http://<myhassip>:8123/local/testvideo.mp4, retry 1 of 3
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Data=40f95b6cb6d7a63f0e87140f887f18246141fb79e26765d29ae25f61b2337133985f17b50a8d987932246154a760dee8ebcd5049ad718f78c80be8e79bcf80b3ee)
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=08282000e202020800aa052437444232453443312d333231392d344542422d413242332d453838433434363934374645)
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_HILITE_MODE_MESSAGE
errorCode: NoError
[setHiliteModeMessage] {
hiliteMode: 0
}
uniqueIdentifier: "7DB2E4C1-3219-4EBB-A2B3-E88C446947FE"
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:01 GMT, Content-Length=0, Server=AirTunes/545.22]
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Data=9d012cea68cb17cfd2abce5eca0bb84ec09110aef7a949ef1f51954724e8a859ac469c64dc515754e76ef7f20c4f9f4b07d20cfaed84237bb608f11531515fb4b153374400e66d10dfca268b00641e986933094b76d78a00410483467b463e5e2384af700f391c5e6d8733827ecbc75fb6329f5ba14e06f87f075e6b5d2b7aaca407916580e3a84e37e7980e13ea17655b761adb665196200be7e77299e1bc)
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=080420004a604204080110014a580a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a2b0a194d6564696152656d6f74652d44656661756c74506c61796572120e44656661756c7420506c61796572aa052431323431383830312d323031342d343233392d383446302d313836434538313134433344)
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_STATE_MESSAGE
errorCode: NoError
[setStateMessage] {
playbackQueueCapabilities {
requestByRange: true
requestByIdentifiers: true
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "MediaRemote-DefaultPlayer"
displayName: "Default Player"
}
}
}
uniqueIdentifier: "12418801-2014-4239-84F0-186CE8114C3D"
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 4 (SetStateMessage) to Listener(func=<bound method PlayerStateManager._handle_set_state of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Data=9d010303220f9bf49d2315be4117683c55383fa3b9b64d36777f3232cd6f0684e7d4142b8ed1ef9a1c750c56d33780aa69822cb18fe087bf554daf8b4941ad4f04afca571bd259b8d2e2ce64f2e69c02925ee0e273f3a098c06265e8f40b950e0cefc66e61cd82acbd6b4fc0428d3a92a0fa597e154ca9dcb72e14a2561e652203e1dca58af6d0cafa63ffc5754fb51c7ad1088b1452ae1fbc2499ec9daf6b)
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=080420004a604204080110014a580a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a2b0a194d6564696152656d6f74652d44656661756c74506c61796572120e44656661756c7420506c61796572aa052430334533414131302d324332442d344635382d383934372d434636374232333244334339)
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_STATE_MESSAGE
errorCode: NoError
[setStateMessage] {
playbackQueueCapabilities {
requestByRange: true
requestByIdentifiers: true
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "MediaRemote-DefaultPlayer"
displayName: "Default Player"
}
}
}
uniqueIdentifier: "03E3AA10-2C2D-4F58-8947-CF67B232D3C9"
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 4 (SetStateMessage) to Listener(func=<bound method PlayerStateManager._handle_set_state of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)

2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:01 GMT, Content-Length=181, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963742f3e0a3c2f706c6973743e0a)
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict/>\n</plist>\n'
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Data=c80110178982937891c78c57d7c65a8d504eed625437ee88bf1e6f9f9a0151d66c79711fa0fd8992eff4d20e7c88e56a5cf87efbb2b67431494e18c980a7f395d8f9d87fdf6b651cadc98c482135b643653cff0519c33684aa9f8825cbecf7694ceba5581a0a4b2f1054a2d8f71022808200961376e02c9276ba3a3f8c8d28f92454ddf1efa0073ff8d0b71887cd56889b23a62a3e5d649254629ea1791bfca87b5860eee2af584e6202391f8d12f41884ad92f591d01a65a7a7fb76459a3ed074b59bc821996dceee15)
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=080420004a8a011a2c080012280a2432424144334630422d324432432d344534342d414235352d333635393241453439423945120042004a580a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a2b0a194d6564696152656d6f74652d44656661756c74506c61796572120e44656661756c7420506c61796572aa052436374143344441312d373136342d343442362d383941372d353238363032303244314545)
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_STATE_MESSAGE
errorCode: NoError
[setStateMessage] {
playbackQueue {
location: 0
contentItems {
identifier: "2BAD3F0B-2D2C-4E44-AB55-36592AE49B9E"
metadata {
}
}
}
playbackQueueCapabilities {
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "MediaRemote-DefaultPlayer"
displayName: "Default Player"
}
}
}
uniqueIdentifier: "67AC4DA1-7164-44B6-89A7-52860202D1EE"
2021-06-09 10:23:01 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 4 (SetStateMessage) to Listener(func=<bound method PlayerStateManager._handle_set_state of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:01 DEBUG (zeroconf-Engine-259) [zeroconf] Received from '192.168.1.25':5353 (socket 36): <DNSIncoming:{id=0, flags=0, n_q=4, n_ans=0, n_auth=0, n_add=1, questions=[question[ptr,in-unique,_airplay._tcp.local.], question[ptr,in-unique,_raop._tcp.local.], question[ptr,in-unique,_airplay._tcp.local.], question[ptr,in-unique,_raop._tcp.local.]], answers=[]}> (90 bytes) as [b'\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x01\x08_airplay\x04_tcp\x05local\x00\x00\x0c\x80\x01\x05_raop\xc0\x15\x00\x0c\x80\x01\xc0\x0c\x00\x0c\x80\x01\xc0%\x00\x0c\x80\x01\x00\x00)\x05\xa0\x00\x00\x11\x94\x00\x12\x00\x04\x00\x0e\x00\xbc\xae\x86\x1e\xc4\xf6\xac>0SPG\x98']
2021-06-09 10:23:01 DEBUG (zeroconf-Engine-259) [zeroconf] Ignoring duplicate message received from '172.30.32.1':5353 (socket 36) (90 bytes) as [b'\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x01\x08_airplay\x04_tcp\x05local\x00\x00\x0c\x80\x01\x05_raop\xc0\x15\x00\x0c\x80\x01\xc0\x0c\x00\x0c\x80\x01\xc0%\x00\x0c\x80\x01\x00\x00)\x05\xa0\x00\x00\x11\x94\x00\x12\x00\x04\x00\x0e\x00\xbc\xae\x86\x1e\xc4\xf6\xac>0SPG\x98']
2021-06-09 10:23:02 DEBUG (MainThread) [async_upnp_client.traffic.ssdp] Received packet from ('192.168.1.234', 33400): b'NOTIFY * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nCACHE-CONTROL: max-age = 1800\r\nLOCATION: http://192.168.1.234:1400/xml/device_description.xml\r\nNT: urn:schemas-upnp-org:service:ContentDirectory:1\r\nNTS: ssdp:alive\r\nSERVER: Linux UPnP/1.0 Sonos/63.2-89260 (ZPS18)\r\nUSN: uuid:RINCON_48A6B8875DD801400_MS::urn:schemas-upnp-org:service:ContentDirectory:1\r\nX-RINCON-HOUSEHOLD: Sonos_83v2Qf6LYLPOqFsgvdkEiJzmwu\r\nX-RINCON-BOOTSEQ: 212\r\nBOOTID.UPNP.ORG: 212\r\nX-RINCON-WIFIMODE: 1\r\nX-RINCON-VARIANT: 2\r\nHOUSEHOLD.SMARTSPEAKER.AUDIO: Sonos_83v2Qf6LYLPOqFsgvdkEiJzmwu.QmFFci4esY3DNuJBN9c9\r\n\r\n'
2021-06-09 10:23:02 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=media_player.appletv, old_state=<state media_player.appletv=paused; media_position_updated_at=2021-06-09T10:22:11.222339+02:00, app_id=com.apple.TVAirPlay, app_name=AirPlay, friendly_name=AppleTV, supported_features=317363 @ 2021-06-09T10:22:11.222872+02:00>, new_state=<state media_player.appletv=paused; media_position_updated_at=2021-06-09T10:23:02.019097+02:00, app_id=com.apple.TVAirPlay, app_name=AirPlay, friendly_name=AppleTV, supported_features=317363 @ 2021-06-09T10:22:11.222872+02:00>>
2021-06-09 10:23:02 DEBUG (MainThread) [async_upnp_client.traffic.ssdp] UpnpAdvertisementListener._on_data: NOTIFY * HTTP/1.1, {'HOST': '239.255.255.250:1900', 'CACHE-CONTROL': 'max-age = 1800', 'location': 'http://192.168.1.234:1400/xml/device_description.xml', 'NT': 'urn:schemas-upnp-org:service:ContentDirectory:1', 'NTS': 'ssdp:alive', 'SERVER': 'Linux UPnP/1.0 Sonos/63.2-89260 (ZPS18)', 'USN': 'uuid:RINCON_48A6B8875DD801400_MS::urn:schemas-upnp-org:service:ContentDirectory:1', 'X-RINCON-HOUSEHOLD': 'Sonos_83v2Qf6LYLPOqFsgvdkEiJzmwu', 'X-RINCON-BOOTSEQ': '212', 'BOOTID.UPNP.ORG': '212', 'X-RINCON-WIFIMODE': '1', 'X-RINCON-VARIANT': '2', 'HOUSEHOLD.SMARTSPEAKER.AUDIO': 'Sonos_83v2Qf6LYLPOqFsgvdkEiJzmwu.QmFFci4esY3DNuJBN9c9', '_location_original': 'http://192.168.1.234:1400/xml/device_description.xml', '_timestamp': datetime.datetime(2021, 6, 9, 10, 23, 2, 18139), '_host': '192.168.1.234', '_port': 33400, '_udn': 'uuid:RINCON_48A6B8875DD801400_MS'}
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Data=af01a07ee67c8941db25e1f6b86ac9514d700ac3a461cb5181b2a48e29665a03a5a6f6d7177f895c10c3a6ed573a6e940e4d2458e7878a71a090199ed8c1f2d81b7bd84d31d4e5f2a14e9b176b9c7956b7f22862be3cbcbaf9472d0565ebac258f763f203cc772057e39a4a899e9ebbbc48579aa3745ca1e053e606fe4aa3ed62514e8567d249e5ec06580d34cb901d1371bffd463ee8de46d6f851c2e1560bff333d0944f16c8c732346c1071306425d1a601704f7f856c779200f39d2156f75ed05b8d9b7ff4ecacf88bf56b6862b094bc6276aeebf5859cd7c2a23c45a49c982ce8a76d599819bd7745de8251c8c860f582495342f0a123c3506140389...)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=080420004a72300242004a630a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a360a2a61766b69742d46443445323334412d433646412d344533332d414336422d4242384339364434323937431208706c617965722d3359e257e0f25838c341aa052438424137304246372d464442442d343230422d414339372d463746413045423537443834)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_STATE_MESSAGE
errorCode: NoError
[setStateMessage] {
playbackState: Paused
playbackQueueCapabilities {
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
}
}
playbackStateTimestamp: 644919781.752682
}
uniqueIdentifier: "8BA70BF7-FDBD-420B-AC97-F7FA0EB57D84"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 4 (SetStateMessage) to Listener(func=<bound method PlayerStateManager._handle_set_state of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=080420004a69420208014a630a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a360a2a61766b69742d46443445323334412d433646412d344533332d414336422d4242384339364434323937431208706c617965722d33aa052434353936333830422d354231422d343846322d384234372d464545313243383044433630)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_STATE_MESSAGE
errorCode: NoError
[setStateMessage] {
playbackQueueCapabilities {
requestByRange: true
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
}
}
}
uniqueIdentifier: "4596380B-5B1B-48F2-8B47-FEE12C80DC60"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 4 (SetStateMessage) to Listener(func=<bound method PlayerStateManager._handle_set_state of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=082f20009a03650a630a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a360a2a61766b69742d46443445323334412d433646412d344533332d414336422d4242384339364434323937431208706c617965722d33aa052441393230424338422d433334302d343133452d393041352d413645344131453633393634)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_NOW_PLAYING_PLAYER_MESSAGE
errorCode: NoError
[setNowPlayingPlayerMessage] {
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
}
}
}
uniqueIdentifier: "A920BC8B-C340-413E-90A5-A6E4A1E63964"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 47 (SetNowPlayingPlayerMessage) to Listener(func=<bound method PlayerStateManager._handle_set_now_playing_player of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=080420004ad20112690a04080110010a04080210010a04080310010a04083510010a04083610010a04080410010a0d081210012100000000000024400a0d081310012100000000000024400a04080910010a04080b10010a04081410010a07082d10018001000a04082210010a040823100142004a630a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a360a2a61766b69742d46443445323334412d433646412d344533332d414336422d4242384339364434323937431208706c617965722d33aa052433313531333631342d433338372d344243432d423539322d394438394343353046313...)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_STATE_MESSAGE
errorCode: NoError
[setStateMessage] {
supportedCommands {
supportedCommands {
command: Play
enabled: true
}
supportedCommands {
command: Pause
enabled: true
}
supportedCommands {
command: TogglePlayPause
enabled: true
}
supportedCommands {
command: EnableLanguageOption
enabled: true
}
supportedCommands {
command: DisableLanguageOption
enabled: true
}
supportedCommands {
command: Stop
enabled: true
}
supportedCommands {
command: SkipForward
enabled: true
preferredIntervals: 10.0
}
supportedCommands {
command: SkipBackward
enabled: true
preferredIntervals: 10.0
}
supportedCommands {
command: BeginFastForward
enabled: true
}
supportedCommands {
command: BeginRewind
enabled: true
}
supportedCommands {
command: ChangePlaybackRate
enabled: true
}
supportedCommands {
command: SeekToPlaybackPosition
enabled: true
canScrub: 0
}
supportedCommands {
command: NextInContext
enabled: true
}
supportedCommands {
command: PreviousInContext
enabled: true
}
}
playbackQueueCapabilities {
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
}
}
}
uniqueIdentifier: "31513614-C387-4BCC-B592-9D89CC50F12D"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 4 (SetStateMessage) to Listener(func=<bound method PlayerStateManager._handle_set_state of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=080420004a72300142004a630a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a360a2a61766b69742d46443445323334412d433646412d344533332d414336422d4242384339364434323937431208706c617965722d3359d366e4f25838c341aa052434424630324442332d354146412d344432342d394443372d364342443342393741423037)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_STATE_MESSAGE
errorCode: NoError
[setStateMessage] {
playbackState: Playing
playbackQueueCapabilities {
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
}
}
playbackStateTimestamp: 644919781.784388
}
uniqueIdentifier: "4BF02DB3-5AFA-4D24-9DC7-6CBD3B97AB07"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 4 (SetStateMessage) to Listener(func=<bound method PlayerStateManager._handle_set_state of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=083a2000f2036c0a6a0a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a3d0a2a61766b69742d46443445323334412d433646412d344533332d414336422d4242384339364434323937431208706c617965722d332896808080f012aa052433383037443644462d434131352d344337442d424446302d374143423832424644303739)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: errorCode: NoError
uniqueIdentifier: "3807D6DF-CA15-4C7D-BDF0-7ACB82BFD079"
62 {
1 {
1 {
2: "AppleTV"
3: 1280262988
}
2 {
1: 151
2: "com.apple.TVAirPlay"
}
3 {
1: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
2: "player-3"
5: 648540061718
}
}
}
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=080420004ad00112670a04080110010a04080210010a04080310010a0208350a04083610010a04080410010a0d081210012100000000000024400a0d081310012100000000000024400a04080910010a04080b10010a04081410010a07082d10018001000a04082210010a040823100142004a630a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a360a2a61766b69742d46443445323334412d433646412d344533332d414336422d4242384339364434323937431208706c617965722d33aa052432433146323645322d354334392d343538432d424445342d383032364633453934384133)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_STATE_MESSAGE
errorCode: NoError
[setStateMessage] {
supportedCommands {
supportedCommands {
command: Play
enabled: true
}
supportedCommands {
command: Pause
enabled: true
}
supportedCommands {
command: TogglePlayPause
enabled: true
}
supportedCommands {
command: EnableLanguageOption
}
supportedCommands {
command: DisableLanguageOption
enabled: true
}
supportedCommands {
command: Stop
enabled: true
}
supportedCommands {
command: SkipForward
enabled: true
preferredIntervals: 10.0
}
supportedCommands {
command: SkipBackward
enabled: true
preferredIntervals: 10.0
}
supportedCommands {
command: BeginFastForward
enabled: true
}
supportedCommands {
command: BeginRewind
enabled: true
}
supportedCommands {
command: ChangePlaybackRate
enabled: true
}
supportedCommands {
command: SeekToPlaybackPosition
enabled: true
canScrub: 0
}
supportedCommands {
command: NextInContext
enabled: true
}
supportedCommands {
command: PreviousInContext
enabled: true
}
}
playbackQueueCapabilities {
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
}
}
}
uniqueIdentifier: "2C1F26E2-5C49-458C-BDE4-8026F3E948A3"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 4 (SetStateMessage) to Listener(func=<bound method PlayerStateManager._handle_set_state of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=083a2000f2036c0a6a0a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a3d0a2a61766b69742d46443445323334412d433646412d344533332d414336422d4242384339364434323937431208706c617965722d332896808080f012aa052436303035323531312d423843382d344531372d413443452d303539454332384344454143)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: errorCode: NoError
uniqueIdentifier: "60052511-B8C8-4E17-A4CE-059EC28CDEAC"
62 {
1 {
1 {
2: "AppleTV"
3: 1280262988
}
2 {
1: 151
2: "com.apple.TVAirPlay"
}
3 {
1: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
2: "player-3"
5: 648540061718
}
}
}
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=080420004abb051ad104080012a0030a1c636f6d2e6170706c652e61766b69742e3135312e643938663534643612ff020a0071bdbee97087c07240980100a80100b00101b8010099020000000000000000a80200bd02000000008004029a04ae0262706c6973743030d4010203040506070a582476657273696f6e592461726368697665725424746f7058246f626a6563747312000186a05f100f4e534b657965644172636869766572d1080954726f6f748001a50b0c15161755246e756c6cd30d0e0f101214574e532e6b6579735a4e532e6f626a656374735624636c617373a1118002a113800380045f103041564d6564696152656d6f74654d616e6...)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_STATE_MESSAGE
errorCode: NoError
[setStateMessage] {
playbackQueue {
location: 0
contentItems {
identifier: "com.apple.avkit.151.d98f54d6"
metadata {
title: ""
duration: 300.0330666666667
artworkAvailable: false
infoAvailable: false
languageOptionsAvailable: true
numberOfSections: 0
elapsedTime: 0.0
isAlwaysLive: false
playbackRate: 0.0
mediaType: Video
nowPlayingInfoData: "bplist00\324\001\002\003\004\005\006\007\nX$versionY$archiverT$topX$objects\022\000\001\206\240_\020\017NSKeyedArchive...
elapsedTimeTimestamp: 644919781.815554
inferredTimestamp: 644919781.749645
legacyUniqueIdentifier: -644918058
}
}
requestId: "PlaybackQueueInvalidation-7141CC0A-F4CB-4D68-9636-5C7396E95752"
resolvedPlayerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
5: 648540061718
}
}
}
playbackQueueCapabilities {
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
}
}
}
uniqueIdentifier: "10BE00C0-9E2F-4457-8D35-F9EEE97E9E15"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 4 (SetStateMessage) to Listener(func=<bound method PlayerStateManager._handle_set_state of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=080420004ad20112690a04080110010a04080210010a04080310010a04083510010a04083610010a04080410010a0d081210012100000000000024400a0d081310012100000000000024400a04080910010a04080b10010a04081410010a07082d10018001000a04082210010a040823100142004a630a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a360a2a61766b69742d46443445323334412d433646412d344533332d414336422d4242384339364434323937431208706c617965722d33aa052436353437353931432d383834342d343337362d384235382d303833323944384637314...)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: SET_STATE_MESSAGE
errorCode: NoError
[setStateMessage] {
supportedCommands {
supportedCommands {
command: Play
enabled: true
}
supportedCommands {
command: Pause
enabled: true
}
supportedCommands {
command: TogglePlayPause
enabled: true
}
supportedCommands {
command: EnableLanguageOption
enabled: true
}
supportedCommands {
command: DisableLanguageOption
enabled: true
}
supportedCommands {
command: Stop
enabled: true
}
supportedCommands {
command: SkipForward
enabled: true
preferredIntervals: 10.0
}
supportedCommands {
command: SkipBackward
enabled: true
preferredIntervals: 10.0
}
supportedCommands {
command: BeginFastForward
enabled: true
}
supportedCommands {
command: BeginRewind
enabled: true
}
supportedCommands {
command: ChangePlaybackRate
enabled: true
}
supportedCommands {
command: SeekToPlaybackPosition
enabled: true
canScrub: 0
}
supportedCommands {
command: NextInContext
enabled: true
}
supportedCommands {
command: PreviousInContext
enabled: true
}
}
playbackQueueCapabilities {
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
}
}
}
uniqueIdentifier: "6547591C-8844-4376-8B58-08329D8F71ED"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 4 (SetStateMessage) to Listener(func=<bound method PlayerStateManager._handle_set_state of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:02 DEBUG (MainThread) [homeassistant.components.homekit.type_media_players] media_player.appletv: Set current state for "on_off" to True
2021-06-09 10:23:02 DEBUG (MainThread) [homeassistant.components.homekit.type_media_players] media_player.appletv: Set current state for "play_pause" to False
2021-06-09 10:23:02 DEBUG (MainThread) [homeassistant.components.homekit.type_media_players] media_player.appletv: Set current state for "play_stop" to False
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.player_state] Active player is now avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C (player-3)
2021-06-09 10:23:02 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=media_player.appletv, old_state=<state media_player.appletv=paused; media_position_updated_at=2021-06-09T10:23:02.019097+02:00, app_id=com.apple.TVAirPlay, app_name=AirPlay, friendly_name=AppleTV, supported_features=317363 @ 2021-06-09T10:22:11.222872+02:00>, new_state=<state media_player.appletv=idle; app_id=com.apple.TVAirPlay, app_name=AirPlay, friendly_name=AppleTV, supported_features=317363 @ 2021-06-09T10:23:02.829646+02:00>>
2021-06-09 10:23:02 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=media_player.appletv, old_state=<state media_player.appletv=idle; app_id=com.apple.TVAirPlay, app_name=AirPlay, friendly_name=AppleTV, supported_features=317363 @ 2021-06-09T10:23:02.829646+02:00>, new_state=<state media_player.appletv=playing; media_position_updated_at=2021-06-09T10:23:02.830514+02:00, app_id=com.apple.TVAirPlay, app_name=AirPlay, friendly_name=AppleTV, supported_features=317363 @ 2021-06-09T10:23:02.831109+02:00>>
2021-06-09 10:23:02 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=media_player.appletv, old_state=<state media_player.appletv=playing; media_position_updated_at=2021-06-09T10:23:02.830514+02:00, app_id=com.apple.TVAirPlay, app_name=AirPlay, friendly_name=AppleTV, supported_features=317363 @ 2021-06-09T10:23:02.831109+02:00>, new_state=<state media_player.appletv=paused; media_content_type=video, media_duration=300, media_position=0, media_position_updated_at=2021-06-09T10:23:02.831816+02:00, media_title=, app_id=com.apple.TVAirPlay, app_name=AirPlay, friendly_name=AppleTV, supported_features=317363 @ 2021-06-09T10:23:02.832219+02:00>>
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Data=aa0155255aaf40b8c42ac9d5b68f190d9465de9b1c62e9539aa24860affa2b4661ef7c19555d8b84421519c33216ecd41f6d6c7817b9495083ea7a6dd52ed5b331a2d2d1002cd9d3e0aa60f531d3e1f09a3d7c0af5cc577250fba54b6a5f04033c99656aff214fe18ec6a4a7efb9fae9c3c58008776a257a330740d8d9ab17927317c943d488780bc87ce945a00a45e072c1e3280327ef5aba9d0591fd01b770a0491b8dbff036cb30df8087)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=08412000aa046c0a340a074170706c655456122432304330304643382d374231352d343144362d424643392d4446453036363134434539465005a802001a340a074170706c655456122432304330304643382d374231352d343144362d424643392d4446453036363134434539465005a80200aa052443383131343642302d373539322d343635422d383846422d443035443145394545333133)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: UPDATE_OUTPUT_DEVICE_MESSAGE
errorCode: NoError
[updateOutputDeviceMessage] {
outputDevices {
name: "AppleTV"
uniqueIdentifier: "20C00FC8-7B15-41D6-BFC9-DFE06614CE9F"
deviceType: Wired
volumeCapabilities: 0
}
clusterAwareOutputDevices {
name: "AppleTV"
uniqueIdentifier: "20C00FC8-7B15-41D6-BFC9-DFE06614CE9F"
deviceType: Wired
volumeCapabilities: 0
}
}
uniqueIdentifier: "C81146B0-7592-465B-88FB-D05D1E9EE313"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Data=c601e9f34b533c9b3a559b3614cdd68a5dc8fdbbb79175abcb47e061ba259cddc03d73f95040bfd234361bd043d7ee088ce76c5d9b28049d456ffd2eb6fefe21e1cc3310bc7c73335bfb751edf945e9b740a2265222412a7b8fa43bb3a4c7c931c2b97b015ba90534861d53908aab5a27755b80042df5d1b1ec8e0e445668a5005eab5d280d8cef710e8f50c0435ee546d51e6c83b94eaaa60d2b48e8cd97775d0205dfa6b1807f1edef178ba50484f8984412220b002af65f0b71fb4a9550cbeda26ccf401514cfbd04b951772e0e6401626338d03a44bd4c129c60a970dfd63cf1f2d669fc6951d72f9f9a1aa6bb0b7934bc23923e541eeb8f71b8dbea7...)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=08382000e20387010a200a1c636f6d2e6170706c652e61766b69742e3135312e6439386635346436120012630a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a360a2a61766b69742d46443445323334412d433646412d344533332d414336422d4242384339364434323937431208706c617965722d33aa052437364641374331432d373745432d343732302d393437302d414146303045323841343245)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: UPDATE_CONTENT_ITEM_MESSAGE
errorCode: NoError
[updateContentItemMessage] {
contentItems {
identifier: "com.apple.avkit.151.d98f54d6"
metadata {
}
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
}
}
}
uniqueIdentifier: "76FA7C1C-77EC-4720-9470-AAF00E28A42E"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 56 (UpdateContentItemMessage) to Listener(func=<bound method PlayerStateManager._handle_content_item_update of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=08382000e203fe030a96030a1c636f6d2e6170706c652e61766b69742e3135312e643938663534643612f5020a0071bdbee97087c07240980100a80100b00101b8010099022710f5094046e03fa80200bd02000000008004029a04ae0262706c6973743030d4010203040506070a582476657273696f6e592461726368697665725424746f7058246f626a6563747312000186a05f100f4e534b657965644172636869766572d1080954726f6f748001a50b0c15161755246e756c6cd30d0e0f101214574e532e6b6579735a4e532e6f626a656374735624636c617373a1118002a113800380045f103041564d6564696152656d6f74654d616e616765724...)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: UPDATE_CONTENT_ITEM_MESSAGE
errorCode: NoError
[updateContentItemMessage] {
contentItems {
identifier: "com.apple.avkit.151.d98f54d6"
metadata {
title: ""
duration: 300.0330666666667
artworkAvailable: false
infoAvailable: false
languageOptionsAvailable: true
numberOfSections: 0
elapsedTime: 0.508575458
isAlwaysLive: false
playbackRate: 0.0
mediaType: Video
nowPlayingInfoData: "bplist00\324\001\002\003\004\005\006\007\nX$versionY$archiverT$topX$objects\022\000\001\206\240_\020\017NSKeyedArchiver\...
elapsedTimeTimestamp: 644919782.790577
legacyUniqueIdentifier: -644918058
}
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
}
}
}
uniqueIdentifier: "C85246D7-196F-4ED5-A6D8-F5CD8CD6027F"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 56 (UpdateContentItemMessage) to Listener(func=<bound method PlayerStateManager._handle_content_item_update of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=08382000e2038f010a280a1c636f6d2e6170706c652e61766b69742e3135312e643938663534643612002a0208002a02080112630a0f12074170706c65545618cc86bde20412180897011213636f6d2e6170706c652e5456416972506c61791a360a2a61766b69742d46443445323334412d433646412d344533332d414336422d4242384339364434323937431208706c617965722d33aa052431443641354239302d363442462d344442422d393042302d454134423039454636433645)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: UPDATE_CONTENT_ITEM_MESSAGE
errorCode: NoError
[updateContentItemMessage] {
contentItems {
identifier: "com.apple.avkit.151.d98f54d6"
metadata {
}
availableLanguageOptions {
allowEmptySelection: false
}
availableLanguageOptions {
allowEmptySelection: true
}
}
playerPath {
origin {
displayName: "AppleTV"
identifier: 1280262988
}
client {
processIdentifier: 151
bundleIdentifier: "com.apple.TVAirPlay"
}
player {
identifier: "avkit-FD4E234A-C6FA-4E33-AC6B-BB8C96D4297C"
displayName: "player-3"
}
}
}
uniqueIdentifier: "1D6A5B90-64BF-4DBB-90B0-EA4B09EF6C6E"
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.mrp.protocol] Dispatching message with type 56 (UpdateContentItemMessage) to Listener(func=<bound method PlayerStateManager._handle_content_item_update of <pyatv.mrp.player_state.PlayerStateManager object at 0xa81aaaa8>>, data=None)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:02 GMT, Content-Length=2298, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:02 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>0.52672070800000004</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>526720708</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:03 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:03 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:03 GMT, Content-Length=2291, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:03 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:03 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>1.597771542</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>1597771542</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:04 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:04 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:04 GMT, Content-Length=2298, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:04 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:04 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>2.6130434170000001</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>2613043417</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:05 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:05 GMT, Content-Length=2298, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:05 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:05 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>3.6307651249999999</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>3630765125</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:05 DEBUG (zeroconf-Engine-259) [zeroconf] Ignoring duplicate message received from '172.30.32.1':5353 (socket 36) (209 bytes) as [b'\x00\x00\x84\x00\x00\x00\x00\x01\x00\x00\x00\x05\x05_miio\x04_udp\x05local\x00\x00\x0c\x00\x01\x00\x00\x00x\x00$!roborock-vacuum-s5e_miio321806816\xc0\x0c\xc0(\x00\x10\x80\x01\x00\x00\x00x\x00\x0f\x0epath=/mydevice\xc0(\x00!\x80\x01\x00\x00\x00x\x00)\x00\x00\x00\x00\xd41!roborock-vacuum-s5e_miio321806816\x00\xc0y\x00\x01\x80\x01\x00\x00\x00x\x00\x04\xc0\xa8\x01F\xc0y\x00\x01\x80\x01\x00\x00\x00x\x00\x04\xc0\xa8\x01F\xc0y\x00/\x80\x01\x00\x00\x00x\x00\t\xc0y\x00\x05@\x00\x00\x00\x00']
2021-06-09 10:23:06 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:06 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:06 GMT, Content-Length=2298, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:06 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:06 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>4.6491132080000002</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>4649113208</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:07 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:08 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:07 GMT, Content-Length=2298, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:08 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:08 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>5.6650489579999999</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>5665048958</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:09 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:08 GMT, Content-Length=2298, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:09 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:09 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>6.6815234999999999</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>6681523500</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:10 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:10 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:10 GMT, Content-Length=2298, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:10 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:10 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>7.7867712920000001</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>7786771292</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:10 DEBUG (MainThread) [homeassistant.core] Service did not complete before timeout: <ServiceCall media_player.play_media (c:83d9cc450e898ae3d058fc085e67774c): entity_id=['media_player.appletv'], extra=, media_type=video, media_id=http://<myhassip>:8123/local/testvideo.mp4>
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:11 GMT, Content-Length=2298, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>8.7984980000000004</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>8798498000</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.protocol] Sending periodic heartbeat 1
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 >> Send (Data=082a122444373242304545462d303636392d344346462d383443302d4146373132434246373446362000)
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 >> Send (Encrypted=96c1c6afb35fc62d76468b38480af67dc1d3d8dc8357c23353a98e20c0fc462e2fe746cc35a15774787c3fd78a11a5eb04997618b541bec1fb6c)
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 >> Send: Protobuf: type: GENERIC_MESSAGE
identifier: "D72B0EEF-0669-4CFF-84C0-AF712CBF74F6"
errorCode: NoError
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Data=61e4280cfbe928625898be52360297acdfedf71e5f4c49dcbc218de38bb86a206f312f3771b00be27305bbe3a12523738724c3120f3634aeca00ff6ce4c6deb03cf39cfb8e2f06df3b28591b463fdfbc36f766530d95fe92f5df4cbef39aa816cfa7)
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive (Decrypted=0800122444373242304545462d303636392d344346462d383443302d4146373132434246373446362000aa052434313242424641422d313331422d343533332d413636422d424436423838353946383646)
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:50600<->192.168.1.76:49153 << Receive: Protobuf: type: UNKNOWN_MESSAGE
identifier: "D72B0EEF-0669-4CFF-84C0-AF712CBF74F6"
errorCode: NoError
uniqueIdentifier: "412BBFAB-131B-4533-A66B-BD6B8859F86F"
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.protocol] Got heartbeat 1
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.protocol] Sending periodic heartbeat 1
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:44268<->192.168.1.8:49152 >> Send (Data=082a122431443743303844352d463844382d344332332d423743352d4141443441313238423138362000)
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:44268<->192.168.1.8:49152 >> Send (Encrypted=1f002d3c239314a2f8e5cd7e9869f1c8ede4ceff16a0f9c350416e7d3ed3d8b36c4fb45c12562e829884ec604474da4eb1f749a347fd4bb2e8ba)
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:44268<->192.168.1.8:49152 >> Send: Protobuf: type: GENERIC_MESSAGE
identifier: "1D7C08D5-F8D8-4C23-B7C5-AAD4A128B186"
errorCode: NoError
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:44268<->192.168.1.8:49152 << Receive (Data=61188b95327d6435f4d51c7adb0fe71ab4106b8cf633dfd23b16596e94a8aaef42d9730a78472040165c053abf3e49c8c7a7627a1fb968bee1d2127d209c47c7e6ef5753921ba8a67065c4b00f9f120b14433eecf5fbae973821c34cd0de537496bd)
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:44268<->192.168.1.8:49152 << Receive (Decrypted=0800122431443743303844352d463844382d344332332d423743352d4141443441313238423138362000aa052438463835383544362d384235342d344635342d383931432d363142433633353143423438)
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.connection] 192.168.1.249:44268<->192.168.1.8:49152 << Receive: Protobuf: type: UNKNOWN_MESSAGE
identifier: "1D7C08D5-F8D8-4C23-B7C5-AAD4A128B186"
errorCode: NoError
uniqueIdentifier: "8F8585D6-8B54-4F54-891C-61BC6351CB48"
2021-06-09 10:23:11 DEBUG (MainThread) [pyatv.mrp.protocol] Got heartbeat 1
2021-06-09 10:23:12 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:12 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:12 GMT, Content-Length=2298, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:12 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:12 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>9.8130393330000008</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>9813039333</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:13 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:13 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:13 GMT, Content-Length=2299, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:13 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:13 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>10.826818082999999</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>10826818083</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:15 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:15 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:15 GMT, Content-Length=2292, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:15 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:15 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>12.90828175</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>12908281750</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:16 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:16 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:16 GMT, Content-Length=2299, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:16 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:16 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>13.931654417000001</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>13931654417</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'
2021-06-09 10:23:17 DEBUG (MainThread) [pyatv.support.net] GET URL: http://192.168.1.76:7000/playback-info
2021-06-09 10:23:17 DEBUG (MainThread) [pyatv.support.net] Response: status=200, headers=[Date=Wed, 09 Jun 2021 08:23:17 GMT, Content-Length=2299, Content-Type=text/x-apple-plist+xml, Server=AirTunes/545.22]
2021-06-09 10:23:17 DEBUG (MainThread) [pyatv.support.net] << GET (Data=3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0a3c21444f435459504520706c697374205055424c494320222d2f2f4170706c652f2f44544420504c49535420312e302f2f454e222022687474703a2f2f7777772e6170706c652e636f6d2f445444732f50726f70657274794c6973742d312e302e647464223e0a3c706c6973742076657273696f6e3d22312e30223e0a3c646963743e0a093c6b65793e6475726174696f6e3c2f6b65793e0a093c7265616c3e3330302e30333330363636363636363636383c2f7265616c3e0a093c6b65793e6475726174696f6e434d54696d653c2f6b65793e0a093c6...)
2021-06-09 10:23:17 DEBUG (MainThread) [pyatv.airplay.player] Playback-info (200): b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>duration</key>\n\t<real>300.03306666666668</real>\n\t<key>durationCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>90000</integer>\n\t\t<key>value</key>\n\t\t<integer>27002976</integer>\n\t</dict>\n\t<key>loadedTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>playbackBufferEmpty</key>\n\t<false/>\n\t<key>playbackBufferFull</key>\n\t<false/>\n\t<key>playbackLikelyToKeepUp</key>\n\t<true/>\n\t<key>position</key>\n\t<real>14.947487541999999</real>\n\t<key>positionCMTime</key>\n\t<dict>\n\t\t<key>epoch</key>\n\t\t<integer>0</integer>\n\t\t<key>flags</key>\n\t\t<integer>1</integer>\n\t\t<key>timescale</key>\n\t\t<integer>1000000000</integer>\n\t\t<key>value</key>\n\t\t<integer>14947487542</integer>\n\t</dict>\n\t<key>rate</key>\n\t<real>1</real>\n\t<key>readyToPlay</key>\n\t<true/>\n\t<key>readyToPlayMs</key>\n\t<integer>0</integer>\n\t<key>seekableTimeRanges</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>duration</key>\n\t\t\t<real>300.03306666666668</real>\n\t\t\t<key>durationCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>90000</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>27002976</integer>\n\t\t\t</dict>\n\t\t\t<key>start</key>\n\t\t\t<real>0.0</real>\n\t\t\t<key>startCMTime</key>\n\t\t\t<dict>\n\t\t\t\t<key>epoch</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>flags</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>timescale</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>value</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n'

Additional information

Error message that appears when trying to screenmirror to the Apple TV after something has been played via Home Assistant:

IMG_3104

probot-home-assistant[bot] commented 3 years ago

apple_tv documentation apple_tv source (message by IssueLinks)

probot-home-assistant[bot] commented 3 years ago

Hey there @postlund, mind taking a look at this issue as its been labeled with an integration (apple_tv) you are listed as a codeowner for? Thanks! (message by CodeOwnersMention)

postlund commented 3 years ago

I'm aware of the problem and I have investigated it to the best of my ability. My conclusion so far is that this is a bug in tvOS, it shouldn't behave like this. I'm not sure there are anything I can do about it right now either. The part of AirPlay dealing with video like this, I.e. passing a URL and playing it on the device rather than streaming video from client (which pyatv doesn't support) seems to not be properly regression tested by Apple. I'm not sure if any Apple products use this interface anymore, but rather rely on streaming instead. That's my theory at least.

github-actions[bot] commented 3 years ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.