From ad8016d8014af1e8dfb267fcdb51da63ab8ca4a9 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 16 Apr 2025 17:23:55 +0200 Subject: better debug info and loggin --- web/script/player/mod.ts | 19 +++++++++++-------- web/script/player/track/mse.ts | 7 +++++-- web/style/js-player.css | 2 ++ 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/web/script/player/mod.ts b/web/script/player/mod.ts index 82ee287..af62cde 100644 --- a/web/script/player/mod.ts +++ b/web/script/player/mod.ts @@ -66,11 +66,11 @@ function initialize_player(el: HTMLElement, node_id: string) { let mute_saved_volume = 1; const toggle_mute = () => { if (player.volume.value == 0) { - logger.log("Unmuted."); + logger.log("Unmuted.", "volume"); player.volume.value = mute_saved_volume } else { - logger.log("Muted."); + logger.log("Muted.", "volume"); mute_saved_volume = player.volume.value player.volume.value = 0. } @@ -281,8 +281,8 @@ function initialize_player(el: HTMLElement, node_id: string) { else if (k.code == "KeyS") screenshot_video(player.video) else if (k.code == "KeyJ") step_track_kind("subtitles") else if (k.code == "KeyM") toggle_mute() - else if (k.code == "Digit9") (player.volume.value /= 1.2), logger.log(`Volume decreased to ${show_volume(player.volume.value)}`) - else if (k.code == "Digit0") (player.volume.value *= 1.2), logger.log(`Volume increased to ${show_volume(player.volume.value)}`) + else if (k.code == "Digit9") (player.volume.value /= 1.2), logger.log(`Volume decreased to ${show_volume(player.volume.value)}`, "volume") + else if (k.code == "Digit0") (player.volume.value *= 1.2), logger.log(`Volume increased to ${show_volume(player.volume.value)}`, "volume") else if (k.key == "#") step_track_kind("audio") else if (k.key == "_") step_track_kind("video") else if (k.code == "KeyV") show_stats.value = !show_stats.value @@ -355,10 +355,13 @@ function mouse_idle(e: HTMLElement, timeout: number): OVar { } export function show_format(format: FormatInfo): string { - // if (format.audio) return `codec=${format.audio.codec} br=${show.metric(format.audio.bitrate, "b/s")}${format.audio.sample_rate ? ` sr=${show.metric(format.audio.sample_rate, "Hz")}` : ""}` - // if (format.video) return `codec=${format.video.codec} br=${show.metric(format.video.bitrate, "b/s")} w=${format.video.width} preset=${format.video.preset}` - // if (format.subtitles) return `codec=${format.subtitles.codec}` - return `TODO` + let o = `${format.codec} br=${show.metric(format.bitrate, "b/s")} ac=${format.containers.join(",")}` + if (format.width) o += ` w=${format.width}` + if (format.height) o += ` h=${format.height}` + if (format.samplerate) o += ` ar=${show.metric(format.samplerate, "Hz")}` + if (format.channels) o += ` ac=${format.channels}` + if (format.bit_depth) o += ` bits=${format.bit_depth}` + return o } export function show_volume(v: number): string { return `${v == 0 ? "-∞" : (Math.log10(v) * 10).toFixed(2)}dB | ${(v * 100).toFixed(2)}%` diff --git a/web/script/player/track/mse.ts b/web/script/player/track/mse.ts index 5565a6b..237b6f6 100644 --- a/web/script/player/track/mse.ts +++ b/web/script/player/track/mse.ts @@ -9,6 +9,7 @@ import { BufferRange, Player } from "../player.ts"; import { PlayerTrack, AppendRange, TARGET_BUFFER_DURATION, MIN_BUFFER_DURATION } from "./mod.ts"; import { e } from "../../jshelper/src/element.ts"; import { FormatInfo, FragmentIndex, StreamContainer, TrackInfo } from "../types_stream.ts"; +import { show_format } from "../mod.ts"; interface UsableFormat { format_index: number, usable_index: number, format: FormatInfo, container: StreamContainer } @@ -154,8 +155,9 @@ export class MSEPlayerTrack extends PlayerTrack { this.current_load = frag; // TODO why is appending so unreliable?! sometimes it does not add it this.source_buffer.changeType(track_to_content_type(this.active_format.value!.format, this.active_format.value!.container)); + this.source_buffer.timestampOffset = this.active_format.value?.container == "mpeg4" ? frag.start : 0 // this.source_buffer.timestampOffset = this.active_format.value?.format.remux ? 0 : frag.start - this.source_buffer.timestampOffset = 0 + // this.source_buffer.timestampOffset = 0 this.source_buffer.appendBuffer(frag.buf); } } @@ -170,7 +172,8 @@ export class MSEPlayerTrack extends PlayerTrack { e("pre", p ? `mse track ${this.track_index}: format ${p.format_index} (${p.format.remux ? "remux" : "transcode"})` - + `\n\ttype: ${track_to_content_type(p.format, p.container)} br=${p.format.bitrate}` + + `\n\tformat: ${show_format(p.format)}` + + `\n\tbuffer type: ${track_to_content_type(p.format, p.container)}` + `\n\tbuffered: ${rtype("buffered", b)} / queued: ${rtype("queued", b)} / loading: ${rtype("loading", b)}` : "" ) as HTMLElement diff --git a/web/style/js-player.css b/web/style/js-player.css index c9a48e9..33669a5 100644 --- a/web/style/js-player.css +++ b/web/style/js-player.css @@ -112,6 +112,8 @@ padding: 0.15em; margin: 0px; font-size: large; +} +.jsp .jsh-log-line-appear { animation-name: appear; animation-timing-function: linear; animation-duration: 0.5s; -- cgit v1.2.3-70-g09d2