gnome-shell-extension-cast-to-tv
gnome-shell-extension-cast-to-tv copied to clipboard
Black screen (audio and subs work)
I'm able to cast to my Chromecast plugged into my TV, there is sound and I can see the subtitles, however the video is a black screen. I have made sure all NPM modules are installed, checked that ffmpeg and ffprobe are also installed and in the correct paths.
Ubuntu 20.04.3 LTS 64-bit Gnome 3.36.8 CPU: Intel® Core™ i7-10750H CPU @ 2.60GHz × 12 GPU: NVIDIA Corporation / NVIDIA GeForce RTX 2070/PCIe/SSE2 Using NVIDIA driver metapackage from nvidia-driver-470 (proprierary, tested)
Here is an example of a few seconds of the stream in debug mode:
Debug Output:
DEBUG=bridge,chromecast* node server
bridge Full playlist: ["/home/joseph/Videos/video.720p.mkv"] +0ms
bridge New selection contents: {"streamType":"VIDEO","subsPath":"","filePath":"/home/joseph/Videos/video.720p.mkv"} +1ms
bridge Processing video file... +1ms
bridge Found reusable subtitles file +2ms
bridge File processed successfully +0ms
chromecast NEW SELECTION +0ms
chromecast Generated new session id: 85oxFdj2U4 +13ms
chromecast Media title: Video 720p +0ms
chromecast Setting media: {"contentId":"http://192.168.86.23:4000/cast?session=85oxFdj2U4","contentType":"video/*","streamType":"BUFFERED","metadata":{"metadataType":1,"images":[{"url":""}],"title":"Video 720p"},"textTrackStyle":{"backgroundColor":"#00000000","foregroundColor":"#FFFFFFFF","edgeType":"OUTLINE","edgeColor":"#000000FF","fontScale":"1.0","fontStyle":"NORMAL","fontFamily":"Droid Sans","fontGenericFamily":"SANS_SERIF","windowType":"NONE"},"tracks":[{"trackId":1,"type":"TEXT","trackContentType":"text/vtt","name":"Subtitles","subtype":"SUBTITLES","trackContentId":"http://192.168.86.23:4000/subswebplayer?session=85oxFdj2U4"}]} +0ms
chromecast Setting opts: {"autoplay":false,"activeTrackIds":[1],"name":"b0c71ef4-2768-809b-2338-da41131a8be5.local","ip":null} +0ms
chromecast Casting... +1ms
chromecast-controller Player check: inactive +0ms
chromecast-controller Starting new cast session... +0ms
chromecast-controller Searching for device: b0c71ef4-2768-809b-2338-da41131a8be5.local +0ms
chromecast-controller Found device ip: 192.168.86.33 +366ms
chromecast-controller Player check: active +2s
chromecast-controller Loaded new media in current session +724ms
chromecast Cast started +3s
chromecast Starting delayed playback... +2ms
chromecast Obtained volume value: 1 +15ms
chromecast:status Got Chromecast status +0ms
chromecast:status {
chromecast:status mediaSessionId: 1,
chromecast:status playbackRate: 1,
chromecast:status playerState: 'PAUSED',
chromecast:status currentTime: 0.003,
chromecast:status supportedMediaCommands: 12303,
chromecast:status volume: { level: 1, muted: false },
chromecast:status activeTrackIds: [ 1 ],
chromecast:status currentItemId: 1,
chromecast:status repeatMode: 'REPEAT_OFF'
chromecast:status } +0ms
chromecast:status Got Chromecast status +2s
chromecast:status {
chromecast:status mediaSessionId: 1,
chromecast:status playbackRate: 1,
chromecast:status playerState: 'BUFFERING',
chromecast:status currentTime: 0.003,
chromecast:status supportedMediaCommands: 12303,
chromecast:status volume: { level: 1, muted: false },
chromecast:status activeTrackIds: [ 1 ],
chromecast:status currentItemId: 1,
chromecast:status repeatMode: 'REPEAT_OFF'
chromecast:status } +0ms
chromecast Playback started +3s
chromecast Started status interval +1ms
chromecast:status Got Chromecast status +453ms
chromecast:status {
chromecast:status mediaSessionId: 1,
chromecast:status playbackRate: 1,
chromecast:status playerState: 'PLAYING',
chromecast:status currentTime: 0.43217,
chromecast:status supportedMediaCommands: 12303,
chromecast:status volume: { level: 1, muted: false },
chromecast:status activeTrackIds: [ 1 ],
chromecast:status currentItemId: 1,
chromecast:status repeatMode: 'REPEAT_OFF'
chromecast:status } +0ms
chromecast:status Got Chromecast status +585ms
chromecast:status {
chromecast:status mediaSessionId: 1,
chromecast:status playbackRate: 1,
chromecast:status playerState: 'PLAYING',
chromecast:status currentTime: 0.985444,
chromecast:status supportedMediaCommands: 12303,
chromecast:status volume: { level: 1, muted: false },
chromecast:status activeTrackIds: [ 1 ],
chromecast:status media: {
chromecast:status contentId: 'http://192.168.86.23:4000/cast?session=85oxFdj2U4',
chromecast:status contentType: 'video/*',
chromecast:status streamType: 'BUFFERED',
chromecast:status metadata: {
chromecast:status metadataType: 1,
chromecast:status images: [Array],
chromecast:status title: 'Video 720p'
chromecast:status },
chromecast:status textTrackStyle: {
chromecast:status backgroundColor: '#00000000',
chromecast:status foregroundColor: '#FFFFFFFF',
chromecast:status edgeType: 'OUTLINE',
chromecast:status edgeColor: '#000000FF',
chromecast:status fontScale: '1.0',
chromecast:status fontStyle: 'NORMAL',
chromecast:status fontFamily: 'Droid Sans',
chromecast:status fontGenericFamily: 'SANS_SERIF',
chromecast:status windowType: 'NONE'
chromecast:status },
chromecast:status tracks: [ [Object], [Object] ],
chromecast:status mediaCategory: 'VIDEO',
chromecast:status duration: 1311.069,
chromecast:status breakClips: [],
chromecast:status breaks: []
chromecast:status },
chromecast:status currentItemId: 1,
chromecast:status items: [
chromecast:status {
chromecast:status itemId: 1,
chromecast:status media: [Object],
chromecast:status autoplay: false,
chromecast:status activeTrackIds: [Array],
chromecast:status orderId: 0
chromecast:status }
chromecast:status ],
chromecast:status repeatMode: 'REPEAT_OFF'
chromecast:status } +1ms
chromecast:status Got Chromecast status +984ms
chromecast:status {
chromecast:status mediaSessionId: 1,
chromecast:status playbackRate: 1,
chromecast:status playerState: 'PLAYING',
chromecast:status currentTime: 2.006414,
chromecast:status supportedMediaCommands: 12303,
chromecast:status volume: { level: 1, muted: false },
chromecast:status activeTrackIds: [ 1 ],
chromecast:status media: {
chromecast:status contentId: 'http://192.168.86.23:4000/cast?session=85oxFdj2U4',
chromecast:status contentType: 'video/*',
chromecast:status streamType: 'BUFFERED',
chromecast:status metadata: {
chromecast:status metadataType: 1,
chromecast:status images: [Array],
chromecast:status title: 'Video 720p'
chromecast:status },
chromecast:status textTrackStyle: {
chromecast:status backgroundColor: '#00000000',
chromecast:status foregroundColor: '#FFFFFFFF',
chromecast:status edgeType: 'OUTLINE',
chromecast:status edgeColor: '#000000FF',
chromecast:status fontScale: '1.0',
chromecast:status fontStyle: 'NORMAL',
chromecast:status fontFamily: 'Droid Sans',
chromecast:status fontGenericFamily: 'SANS_SERIF',
chromecast:status windowType: 'NONE'
chromecast:status },
chromecast:status tracks: [ [Object], [Object] ],
chromecast:status mediaCategory: 'VIDEO',
chromecast:status duration: 1311.069,
chromecast:status breakClips: [],
chromecast:status breaks: []
chromecast:status },
chromecast:status currentItemId: 1,
chromecast:status items: [
chromecast:status {
chromecast:status itemId: 1,
chromecast:status media: [Object],
chromecast:status autoplay: false,
chromecast:status activeTrackIds: [Array],
chromecast:status orderId: 0
chromecast:status }
chromecast:status ],
chromecast:status repeatMode: 'REPEAT_OFF'
chromecast:status } +0ms
chromecast:status Got Chromecast status +1s
chromecast:status {
chromecast:status mediaSessionId: 1,
chromecast:status playbackRate: 1,
chromecast:status playerState: 'PLAYING',
chromecast:status currentTime: 2.879155,
chromecast:status supportedMediaCommands: 12303,
chromecast:status volume: { level: 1, muted: false },
chromecast:status activeTrackIds: [ 1 ],
chromecast:status media: {
chromecast:status contentId: 'http://192.168.86.23:4000/cast?session=85oxFdj2U4',
chromecast:status contentType: 'video/*',
chromecast:status streamType: 'BUFFERED',
chromecast:status metadata: {
chromecast:status metadataType: 1,
chromecast:status images: [Array],
chromecast:status title: 'Video 720p'
chromecast:status },
chromecast:status textTrackStyle: {
chromecast:status backgroundColor: '#00000000',
chromecast:status foregroundColor: '#FFFFFFFF',
chromecast:status edgeType: 'OUTLINE',
chromecast:status edgeColor: '#000000FF',
chromecast:status fontScale: '1.0',
chromecast:status fontStyle: 'NORMAL',
chromecast:status fontFamily: 'Droid Sans',
chromecast:status fontGenericFamily: 'SANS_SERIF',
chromecast:status windowType: 'NONE'
chromecast:status },
chromecast:status tracks: [ [Object], [Object] ],
chromecast:status mediaCategory: 'VIDEO',
chromecast:status duration: 1311.069,
chromecast:status breakClips: [],
chromecast:status breaks: []
chromecast:status },
chromecast:status currentItemId: 1,
chromecast:status items: [
chromecast:status {
chromecast:status itemId: 1,
chromecast:status media: [Object],
chromecast:status autoplay: false,
chromecast:status activeTrackIds: [Array],
chromecast:status orderId: 0
chromecast:status }
chromecast:status ],
chromecast:status repeatMode: 'REPEAT_OFF'
chromecast:status } +1ms
chromecast:status Got Chromecast status +1s
chromecast:status {
chromecast:status mediaSessionId: 1,
chromecast:status playbackRate: 1,
chromecast:status playerState: 'PLAYING',
chromecast:status currentTime: 4.09406,
chromecast:status supportedMediaCommands: 12303,
chromecast:status volume: { level: 1, muted: false },
chromecast:status activeTrackIds: [ 1 ],
chromecast:status media: {
chromecast:status contentId: 'http://192.168.86.23:4000/cast?session=85oxFdj2U4',
chromecast:status contentType: 'video/*',
chromecast:status streamType: 'BUFFERED',
chromecast:status metadata: {
chromecast:status metadataType: 1,
chromecast:status images: [Array],
chromecast:status title: 'Video 720p'
chromecast:status },
chromecast:status textTrackStyle: {
chromecast:status backgroundColor: '#00000000',
chromecast:status foregroundColor: '#FFFFFFFF',
chromecast:status edgeType: 'OUTLINE',
chromecast:status edgeColor: '#000000FF',
chromecast:status fontScale: '1.0',
chromecast:status fontStyle: 'NORMAL',
chromecast:status fontFamily: 'Droid Sans',
chromecast:status fontGenericFamily: 'SANS_SERIF',
chromecast:status windowType: 'NONE'
chromecast:status },
chromecast:status tracks: [ [Object], [Object] ],
chromecast:status mediaCategory: 'VIDEO',
chromecast:status duration: 1311.069,
chromecast:status breakClips: [],
chromecast:status breaks: []
chromecast:status },
chromecast:status currentItemId: 1,
chromecast:status items: [
chromecast:status {
chromecast:status itemId: 1,
chromecast:status media: [Object],
chromecast:status autoplay: false,
chromecast:status activeTrackIds: [Array],
chromecast:status orderId: 0
chromecast:status }
chromecast:status ],
chromecast:status repeatMode: 'REPEAT_OFF'
chromecast:status } +0ms
chromecast:status Got Chromecast status +913ms
chromecast:status {
chromecast:status mediaSessionId: 1,
chromecast:status playbackRate: 1,
chromecast:status playerState: 'PLAYING',
chromecast:status currentTime: 4.958411,
chromecast:status supportedMediaCommands: 12303,
chromecast:status volume: { level: 1, muted: false },
chromecast:status activeTrackIds: [ 1 ],
chromecast:status media: {
chromecast:status contentId: 'http://192.168.86.23:4000/cast?session=85oxFdj2U4',
chromecast:status contentType: 'video/*',
chromecast:status streamType: 'BUFFERED',
chromecast:status metadata: {
chromecast:status metadataType: 1,
chromecast:status images: [Array],
chromecast:status title: 'Video 720p'
chromecast:status },
chromecast:status textTrackStyle: {
chromecast:status backgroundColor: '#00000000',
chromecast:status foregroundColor: '#FFFFFFFF',
chromecast:status edgeType: 'OUTLINE',
chromecast:status edgeColor: '#000000FF',
chromecast:status fontScale: '1.0',
chromecast:status fontStyle: 'NORMAL',
chromecast:status fontFamily: 'Droid Sans',
chromecast:status fontGenericFamily: 'SANS_SERIF',
chromecast:status windowType: 'NONE'
chromecast:status },
chromecast:status tracks: [ [Object], [Object] ],
chromecast:status mediaCategory: 'VIDEO',
chromecast:status duration: 1311.069,
chromecast:status breakClips: [],
chromecast:status breaks: []
chromecast:status },
chromecast:status currentItemId: 1,
chromecast:status items: [
chromecast:status {
chromecast:status itemId: 1,
chromecast:status media: [Object],
chromecast:status autoplay: false,
chromecast:status activeTrackIds: [Array],
chromecast:status orderId: 0
chromecast:status }
chromecast:status ],
chromecast:status repeatMode: 'REPEAT_OFF'
chromecast:status } +1ms
bridge New remote contents: {"action":"STOP"} +11s
chromecast Signal from remote. ACTION: STOP +6s
chromecast:status Got Chromecast status +890ms
chromecast:status {
chromecast:status mediaSessionId: 1,
chromecast:status playbackRate: 1,
chromecast:status playerState: 'IDLE',
chromecast:status currentTime: 0,
chromecast:status supportedMediaCommands: 12303,
chromecast:status volume: { level: 1, muted: false },
chromecast:status currentItemId: 1,
chromecast:status idleReason: 'CANCELLED'
chromecast:status } +0ms
chromecast Stopped status interval +55ms
chromecast Closing cast session... +1ms
chromecast-controller Closing client... +9s
chromecast-controller Player check: active +0ms
chromecast-controller Closed client +100ms
chromecast Session closed +101ms
chromecast Cast finished! +1ms
^C
Cast to TV: closing node app...
bridge Closing node server +4s
Cast to TV: closed successfully
This sounds like video is in a format that Chromecast does not support. Have you tried casting with transcode video option?
I think you're probably right. I'll try that.