Fix player attempting load wrong quality video

This commit is contained in:
Eir Sunny 2024-12-19 21:11:08 -06:00
parent 9affde5097
commit ce11918e4e
5 changed files with 9 additions and 7 deletions

View File

@ -102,7 +102,6 @@ module.exports = [
}, 1000 * 2)) }, 1000 * 2))
// 404 // 404
else if (!downloader.videoExists(fname)) { else if (!downloader.videoExists(fname)) {
console.log(`dlstatus for ${fname}: ${dlStatus}`)
return { return {
statusCode: 404, statusCode: 404,
contentType: "text/html; charset=UTF-8", contentType: "text/html; charset=UTF-8",

View File

@ -191,7 +191,7 @@ module.exports = [
let largestSavedFormat let largestSavedFormat
let qualities = {} // When searching for a specific quality, if the specified one doesn't exist, retrieve the closest match let qualities = {} // When searching for a specific quality, if the specified one doesn't exist, retrieve the closest match
let videoPath = `/getVideo?v=${id}&q=${q || "360p"}` let videoPath = `/getVideo?v=${id}&q=${q || startingFormat.qualityLabel}`
for (const format of formats) { for (const format of formats) {
// apply media fragment to all sources + get largest format that is currently on disk // apply media fragment to all sources + get largest format that is currently on disk
@ -253,7 +253,6 @@ module.exports = [
// Download base video // Download base video
if (!qSet && willDownload && !largestSavedFormat) { if (!qSet && willDownload && !largestSavedFormat) {
console.log(`Starting download for ${id} (${startingFormat.qualityLabel})`);
dlQueue.enqueue(id, startingFormat.qualityLabel) dlQueue.enqueue(id, startingFormat.qualityLabel)
// Wait for a second to give the default noscript player at least a small portion of bytes to play // Wait for a second to give the default noscript player at least a small portion of bytes to play
await new Promise(resolve => setTimeout(resolve, 1000)) await new Promise(resolve => setTimeout(resolve, 1000))

View File

@ -79,7 +79,9 @@ async function enqueue(videoID, quality) {
else else
sortedQueues = dlQueues.sort((a, b) => (a.hq.length + (2 - a.downloadCount)) - (b.hq.length + (2 - b.downloadCount))) sortedQueues = dlQueues.sort((a, b) => (a.hq.length + (2 - a.downloadCount)) - (b.hq.length + (2 - b.downloadCount)))
return await sortedQueues[0].enqueue(videoID, quality) const out = sortedQueues[0].enqueue(videoID, quality)
// console.log(dlQueues)
return await out
} }
module.exports = { module.exports = {

View File

@ -15,6 +15,7 @@ const qualitySort = require("./quality-sort")
const downloadInPartsSize = 9_000_000 // 9 MB const downloadInPartsSize = 9_000_000 // 9 MB
const cuda_enabled = childProcess.execSync("ffmpeg -hide_banner -loglevel error -hwaccel cuda -i html/static/images/bow.png bow.png && rm bow.png") == "" const cuda_enabled = childProcess.execSync("ffmpeg -hide_banner -loglevel error -hwaccel cuda -i html/static/images/bow.png bow.png && rm bow.png") == ""
const codec = childProcess.execSync("ffmpeg -hide_banner -loglevel error -decoders").includes("h264_cuvid") ? "h264_cuvid" : "h264";
function downloadStatus(videoID) { function downloadStatus(videoID) {
let dlData = cacheManager.read("download")[videoID] let dlData = cacheManager.read("download")[videoID]
@ -270,7 +271,7 @@ async function saveMp4Android(id, quality) {
let cmd = [ let cmd = [
"ffmpeg", "ffmpeg",
cuda_enabled ? "-hwaccel cuda -c:v h264_cuvid" : null, cuda_enabled ? `-hwaccel cuda -c:v ${codec}` : null,
`-y -i ${path.join(pathBase, videoPath)}`, `-y -i ${path.join(pathBase, videoPath)}`,
`-i ${path.join(pathBase, audioPath)}`, `-i ${path.join(pathBase, audioPath)}`,
`-c:v copy -c:a copy`, `-c:v copy -c:a copy`,
@ -523,6 +524,7 @@ module.exports = {
return videoData return videoData
}, },
/** @returns {Promise<object[]>} */
sortFormats: async function(video, targetQuality) { sortFormats: async function(video, targetQuality) {
// if (video.formatStreams == undefined || video.formatStreams.length == 0) // if (video.formatStreams == undefined || video.formatStreams.length == 0)
// return [] // return []

View File

@ -8,7 +8,7 @@ export default (modules, q, qa) => {
let downloading = false let downloading = false
if (modules.globals.dlStatus > 0 && modules.globals.dlStatus < 3) { if (modules.globals.dlStatus > 0 && modules.globals.dlStatus < 3) {
downloading = true downloading = true
modules.cacheInfo.pingCache(`${modules.globals.data.videoId}-${videoSource.split("&quality=")[1] || "360p"}`, () => { modules.cacheInfo.pingCache(`${modules.globals.data.videoId}-${videoSource.split("&quality=")[1] || modules.globals.startingFormat.qualityLabel}`, () => {
downloading = false downloading = false
self.reloadSource() self.reloadSource()
}, 1000 * 2) }, 1000 * 2)
@ -59,7 +59,7 @@ export default (modules, q, qa) => {
}) })
}, },
qualitySelected: quality => { qualitySelected: quality => {
quality = quality || "360p" quality = quality || modules.globals.startingFormat.qualityLabel
modules.controls.setQualityButtonActive(quality) modules.controls.setQualityButtonActive(quality)