Merge branch 'master' into change_audio_tracks

This commit is contained in:
hicom150
2019-10-13 22:38:50 +02:00
10 changed files with 55 additions and 48 deletions

View File

@@ -25,7 +25,8 @@ function init () {
title: 'About ' + config.APP_WINDOW_TITLE,
useContentSize: true,
webPreferences: {
nodeIntegration: true
nodeIntegration: true,
enableBlinkFeatures: 'AudioVideoTracks'
},
width: 300
})

View File

@@ -45,7 +45,7 @@ function init (state, options) {
width: initialBounds.width,
webPreferences: {
nodeIntegration: true,
experimentalFeatures: true
enableBlinkFeatures: 'AudioVideoTracks'
},
x: initialBounds.x,
y: initialBounds.y

View File

@@ -26,7 +26,8 @@ function init () {
title: 'webtorrent-hidden-window',
useContentSize: true,
webPreferences: {
nodeIntegration: true
nodeIntegration: true,
enableBlinkFeatures: 'AudioVideoTracks'
},
width: 150
})

View File

@@ -1,5 +1,3 @@
/* global HTMLMediaElement */
const React = require('react')
const Bitfield = require('bitfield')
const prettyBytes = require('prettier-bytes')
@@ -137,7 +135,6 @@ function renderMedia (state) {
onError={dispatcher('mediaError')}
onTimeUpdate={dispatcher('mediaTimeUpdate')}
onEncrypted={dispatcher('mediaEncrypted')}
onCanPlay={onCanPlay}
>
{trackTags}
</MediaTagName>
@@ -155,29 +152,50 @@ function renderMedia (state) {
</div>
)
// As soon as we know the video dimensions, resize the window
function onLoadedMetadata (e) {
if (state.playing.type !== 'video') return
const video = e.target
const dimensions = {
width: video.videoWidth,
height: video.videoHeight
}
dispatch('setDimensions', dimensions)
const mediaElement = e.target
// check if we can decode video and audio track
if (state.playing.type === 'video') {
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)
if (video.audioTracks) {
// set audioTracks
const tracks = []
for (let i = 0; i < video.audioTracks.length; i++) {
for (let i = 0; i < mediaElement.audioTracks.length; i++) {
tracks.push({
label: video.audioTracks[i].label || `Track ${i + 1}`,
language: video.audioTracks[i].language
label: mediaElement.audioTracks[i].label || `Track ${i + 1}`,
language: mediaElement.audioTracks[i].language
})
}
state.playing.audioTracks.tracks = tracks
state.playing.audioTracks.selectedIndex = 0
}
// check if we can decode audio track
if (state.playing.type === 'audio') {
if (mediaElement.audioTracks.length === 0) {
dispatch('mediaError', 'Audio codec unsupported')
}
dispatch('mediaSuccess')
}
}
function onEnded (e) {
@@ -189,20 +207,6 @@ function renderMedia (state) {
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) {

View File

@@ -212,7 +212,9 @@ module.exports = class TorrentList extends React.Component {
else if (torrentSummary.progress.progress === 1) status = 'Not seeding'
else status = 'Paused'
} else if (torrentSummary.status === 'downloading') {
status = 'Downloading'
if (!torrentSummary.progress) status = ''
else if (!torrentSummary.progress.ready) status = 'Verifying'
else status = 'Downloading'
} else if (torrentSummary.status === 'seeding') {
status = 'Seeding'
} else { // torrentSummary.status is 'new' or something unexpected
@@ -316,7 +318,7 @@ module.exports = class TorrentList extends React.Component {
torrentSummary.progress.files[index]) {
const fileProg = torrentSummary.progress.files[index]
isDone = fileProg.numPiecesPresent === fileProg.numPieces
progress = Math.round(100 * fileProg.numPiecesPresent / fileProg.numPieces) + '%'
progress = Math.floor(100 * fileProg.numPiecesPresent / fileProg.numPieces) + '%'
}
// Second, for media files where we saved our position, show how far we got