small fix for source editor and doc update (#899)

- Added Flussonic UserAgent docs
- Fixed possible problem in Source Editor
This commit is contained in:
euzu
2026-10-05 12:19:07 +02:00
committed by GitHub
parent 9cebb510ef
commit f1ffffccd3
2 changed files with 18 additions and 2 deletions
+12
View File
@@ -232,6 +232,18 @@ headers:
X-Custom-Auth: "my-secret-token"
```
> **Note:** Some Flussonic providers select the catch-up format by `User-Agent`. With a VLC User-Agent (for example
> `VLC/3.0.21 LibVLC/3.0.21`), they return separate fMP4 video and audio renditions whose initialization objects
> (`.hls.fmp4`) fail with `403 Forbidden`, while the playlists still return `200`. The ffmpeg default User-Agent
> (`Lavf/…`) receives a combined MPEG-TS rendition that plays. If catch-up stops at the fMP4 initialization
> object, set a non-VLC `User-Agent` for this input. Then check that live and VOD playback still work, because
> some providers require a specific User-Agent.
>
> A per-channel `#EXTVLCOPT:http-user-agent` directive in the provider playlist overrides the input `User-Agent`
> on catch-up HLS requests. If a channel sets this directive to a VLC User-Agent, the input header has no effect
> for that channel. Change the directive to a non-VLC User-Agent as well, for example in a local copy of the
> playlist.
---
### 2.2 Input Options (`options`)
@@ -1763,7 +1763,10 @@ pub fn SourceEditor(props: &SourceEditorProps) -> Html {
}
}
if let Some(move_it) = compute_drag_move_params(&editor_state_ref.borrow(), mouse_x, mouse_y) {
// Bind first: an if-let scrutinee temporary would keep the borrow alive
// across move_blocks.emit, which needs borrow_mut.
let move_params = compute_drag_move_params(&editor_state_ref.borrow(), mouse_x, mouse_y);
if let Some(move_it) = move_params {
move_blocks.emit(move_it);
// Drag updates are applied directly to DOM for smoothness.
// Avoid full re-render on every mouse move while dragging blocks.
@@ -1891,7 +1894,8 @@ pub fn SourceEditor(props: &SourceEditorProps) -> Html {
let touch_x = client_x - rect.left() as f32;
let touch_y = client_y - rect.top() as f32;
if let Some(move_it) = compute_drag_move_params(&editor_state_ref.borrow(), touch_x, touch_y) {
let move_params = compute_drag_move_params(&editor_state_ref.borrow(), touch_x, touch_y);
if let Some(move_it) = move_params {
move_blocks.emit(move_it);
} else {
force_update.set(*force_update + 1);