Merge pull request #1711 from hicom150/fix_codec_unsupported_detection
Improve codec unsupported detection
This commit is contained in:
@@ -25,7 +25,8 @@ function init () {
|
|||||||
title: 'About ' + config.APP_WINDOW_TITLE,
|
title: 'About ' + config.APP_WINDOW_TITLE,
|
||||||
useContentSize: true,
|
useContentSize: true,
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
nodeIntegration: true
|
nodeIntegration: true,
|
||||||
|
enableBlinkFeatures: 'AudioVideoTracks'
|
||||||
},
|
},
|
||||||
width: 300
|
width: 300
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -44,7 +44,8 @@ function init (state, options) {
|
|||||||
useContentSize: true, // Specify web page size without OS chrome
|
useContentSize: true, // Specify web page size without OS chrome
|
||||||
width: initialBounds.width,
|
width: initialBounds.width,
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
nodeIntegration: true
|
nodeIntegration: true,
|
||||||
|
enableBlinkFeatures: 'AudioVideoTracks'
|
||||||
},
|
},
|
||||||
x: initialBounds.x,
|
x: initialBounds.x,
|
||||||
y: initialBounds.y
|
y: initialBounds.y
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ function init () {
|
|||||||
title: 'webtorrent-hidden-window',
|
title: 'webtorrent-hidden-window',
|
||||||
useContentSize: true,
|
useContentSize: true,
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
nodeIntegration: true
|
nodeIntegration: true,
|
||||||
|
enableBlinkFeatures: 'AudioVideoTracks'
|
||||||
},
|
},
|
||||||
width: 150
|
width: 150
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
/* global HTMLMediaElement */
|
|
||||||
|
|
||||||
const React = require('react')
|
const React = require('react')
|
||||||
const Bitfield = require('bitfield')
|
const Bitfield = require('bitfield')
|
||||||
const prettyBytes = require('prettier-bytes')
|
const prettyBytes = require('prettier-bytes')
|
||||||
@@ -130,7 +128,6 @@ function renderMedia (state) {
|
|||||||
onError={dispatcher('mediaError')}
|
onError={dispatcher('mediaError')}
|
||||||
onTimeUpdate={dispatcher('mediaTimeUpdate')}
|
onTimeUpdate={dispatcher('mediaTimeUpdate')}
|
||||||
onEncrypted={dispatcher('mediaEncrypted')}
|
onEncrypted={dispatcher('mediaEncrypted')}
|
||||||
onCanPlay={onCanPlay}
|
|
||||||
>
|
>
|
||||||
{trackTags}
|
{trackTags}
|
||||||
</MediaTagName>
|
</MediaTagName>
|
||||||
@@ -148,15 +145,38 @@ function renderMedia (state) {
|
|||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|
||||||
// As soon as we know the video dimensions, resize the window
|
|
||||||
function onLoadedMetadata (e) {
|
function onLoadedMetadata (e) {
|
||||||
if (state.playing.type !== 'video') return
|
const mediaElement = e.target
|
||||||
const video = e.target
|
|
||||||
const dimensions = {
|
// check if we can decode video and audio track
|
||||||
width: video.videoWidth,
|
if (state.playing.type === 'video') {
|
||||||
height: video.videoHeight
|
if (mediaElement.videoTracks.length === 0) {
|
||||||
|
dispatch('mediaError', 'Video codec unsupported')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mediaElement.audioTracks.length === 0) {
|
||||||
|
dispatch('mediaError', 'Audio codec unsupported')
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch('mediaSuccess')
|
||||||
|
|
||||||
|
const dimensions = {
|
||||||
|
width: mediaElement.videoWidth,
|
||||||
|
height: mediaElement.videoHeight
|
||||||
|
}
|
||||||
|
|
||||||
|
// As soon as we know the video dimensions, resize the window
|
||||||
|
dispatch('setDimensions', dimensions)
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if we can decode audio track
|
||||||
|
if (state.playing.type === 'audio') {
|
||||||
|
if (mediaElement.audioTracks.length === 0) {
|
||||||
|
dispatch('mediaError', 'Audio codec unsupported')
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch('mediaSuccess')
|
||||||
}
|
}
|
||||||
dispatch('setDimensions', dimensions)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function onEnded (e) {
|
function onEnded (e) {
|
||||||
@@ -168,20 +188,6 @@ function renderMedia (state) {
|
|||||||
if (state.window.isFullScreen) dispatch('toggleFullScreen')
|
if (state.window.isFullScreen) dispatch('toggleFullScreen')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onCanPlay (e) {
|
|
||||||
const elem = e.target
|
|
||||||
if (elem.readyState < HTMLMediaElement.HAVE_FUTURE_DATA) return
|
|
||||||
if (state.playing.type === 'video' &&
|
|
||||||
elem.webkitVideoDecodedByteCount === 0) {
|
|
||||||
dispatch('mediaError', 'Video codec unsupported')
|
|
||||||
} else if (elem.webkitAudioDecodedByteCount === 0) {
|
|
||||||
dispatch('mediaError', 'Audio codec unsupported')
|
|
||||||
} else {
|
|
||||||
dispatch('mediaSuccess')
|
|
||||||
elem.play()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderOverlay (state) {
|
function renderOverlay (state) {
|
||||||
|
|||||||
Reference in New Issue
Block a user