Compare commits

..
Author SHA1 Message Date
dependabot[bot]andGitHub 577c8b3e2d Bump the react-native group across 2 directories with 5 updates
Bumps the react-native group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@react-native/new-app-screen](https://github.com/facebook/react-native/tree/HEAD/packages/new-app-screen) | `0.84.1` | `0.86.0` |
| [@react-native/babel-preset](https://github.com/facebook/react-native) | `0.84.1` | `0.86.0` |
| [@react-native/eslint-config](https://github.com/facebook/react-native/tree/HEAD/packages/eslint-config-react-native) | `0.84.1` | `0.86.0` |
| [@react-native/metro-config](https://github.com/facebook/react-native/tree/HEAD/packages/metro-config) | `0.84.1` | `0.86.0` |
| [@react-native/typescript-config](https://github.com/facebook/react-native/tree/HEAD/packages/typescript-config) | `0.84.1` | `0.86.0` |

Bumps the react-native group with 5 updates in the /example directory:

| Package | From | To |
| --- | --- | --- |
| [@react-native/new-app-screen](https://github.com/facebook/react-native/tree/HEAD/packages/new-app-screen) | `0.84.1` | `0.86.0` |
| [@react-native/babel-preset](https://github.com/facebook/react-native) | `0.84.1` | `0.86.0` |
| [@react-native/eslint-config](https://github.com/facebook/react-native/tree/HEAD/packages/eslint-config-react-native) | `0.84.1` | `0.86.0` |
| [@react-native/metro-config](https://github.com/facebook/react-native/tree/HEAD/packages/metro-config) | `0.84.1` | `0.86.0` |
| [@react-native/typescript-config](https://github.com/facebook/react-native/tree/HEAD/packages/typescript-config) | `0.84.1` | `0.86.0` |



Updates `@react-native/new-app-screen` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/new-app-screen)

Updates `@react-native/babel-preset` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/compare/v0.84.1...v0.86.0)

Updates `@react-native/eslint-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/eslint-config-react-native)

Updates `@react-native/metro-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/metro-config)

Updates `@react-native/typescript-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/typescript-config)

Updates `@react-native/new-app-screen` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/new-app-screen)

Updates `@react-native/babel-preset` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/compare/v0.84.1...v0.86.0)

Updates `@react-native/eslint-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/eslint-config-react-native)

Updates `@react-native/metro-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/metro-config)

Updates `@react-native/typescript-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/typescript-config)

Updates `@react-native/new-app-screen` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/new-app-screen)

Updates `@react-native/babel-preset` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/compare/v0.84.1...v0.86.0)

Updates `@react-native/eslint-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/eslint-config-react-native)

Updates `@react-native/metro-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/metro-config)

Updates `@react-native/typescript-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/typescript-config)

Updates `@react-native/new-app-screen` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/new-app-screen)

Updates `@react-native/babel-preset` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/compare/v0.84.1...v0.86.0)

Updates `@react-native/eslint-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/eslint-config-react-native)

Updates `@react-native/metro-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/metro-config)

Updates `@react-native/typescript-config` from 0.84.1 to 0.86.0
- [Release notes](https://github.com/facebook/react-native/releases)
- [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/typescript-config)

---
updated-dependencies:
- dependency-name: "@react-native/babel-preset"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/babel-preset"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/babel-preset"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/babel-preset"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/eslint-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/eslint-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/eslint-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/eslint-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/metro-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/metro-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/metro-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/metro-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/new-app-screen"
  dependency-version: 0.85.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/new-app-screen"
  dependency-version: 0.85.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/new-app-screen"
  dependency-version: 0.85.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/new-app-screen"
  dependency-version: 0.85.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/typescript-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/typescript-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/typescript-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
- dependency-name: "@react-native/typescript-config"
  dependency-version: 0.85.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: react-native
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 05:44:38 +00:00
zoriya 453f86a448 Implement audio and rendition selection on web 2026-06-23 23:09:46 +02:00
8 changed files with 52 additions and 16 deletions
+1 -1
View File
@@ -39,7 +39,7 @@ jobs:
name: Build Android Example App
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- name: Install dependencies (bun)
+1 -1
View File
@@ -50,7 +50,7 @@ jobs:
name: Build iOS Example App
runs-on: macOS-15
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
+1 -1
View File
@@ -21,7 +21,7 @@ jobs:
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v7
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Bun.js
+1 -1
View File
@@ -381,7 +381,7 @@ function PlayerExample({
isAutoQuality && styles.selectedTrackButtonText,
]}
>
Auto
Auto{isAutoQuality && tracks.renditions.find(r => r.selected) ? ` (${tracks.renditions.find(r => r.selected)!.height}p)` : ""}
</Text>
</Pressable>
{tracks.renditions.length === 0 ? (
+5 -5
View File
@@ -12,7 +12,7 @@
"pod": "bundle install && bundle exec pod install --project-directory=ios"
},
"dependencies": {
"@react-native/new-app-screen": "0.84.1",
"@react-native/new-app-screen": "0.86.0",
"react": "19.2.3",
"react-dom": "19.2.3",
"react-native": "0.84.1",
@@ -27,10 +27,10 @@
"@react-native-community/cli": "20.1.0",
"@react-native-community/cli-platform-android": "20.1.0",
"@react-native-community/cli-platform-ios": "20.1.0",
"@react-native/babel-preset": "0.84.1",
"@react-native/eslint-config": "0.84.1",
"@react-native/metro-config": "0.84.1",
"@react-native/typescript-config": "0.84.1",
"@react-native/babel-preset": "0.86.0",
"@react-native/eslint-config": "0.86.0",
"@react-native/metro-config": "0.86.0",
"@react-native/typescript-config": "0.86.0",
"@types/jest": "^29.5.13",
"babel-loader": "^10.1.1",
"babel-plugin-module-resolver": "^5.0.2",
+1
View File
@@ -10,6 +10,7 @@
"scripts": {
"dev": "cd example && bun start",
"android": " cd example && bunx react-native run-android --no-packager --port 8082",
"web": "cd example && bun web",
"typecheck": "tsc --noEmit && tsc -p plugin/tsconfig.json --noEmit",
"build:plugin": "tsc -p plugin/tsconfig.json",
"build": "bun run typecheck && bob build && bun run build:plugin",
+41 -7
View File
@@ -1,4 +1,5 @@
import type { VideoPlayerStore } from "@videojs/core/dom";
import type Hls from "hls.js";
import { stateMapper } from "./events.web";
import type {
OmniPlayer,
@@ -17,6 +18,11 @@ export class WebOmniPlayer implements OmniPlayer {
this._store = store;
}
private getHls(): Hls | null {
const media = this._store.target?.media;
return (media?.engine as Hls | undefined) ?? null;
}
source: Source | null = null;
get showNotification(): boolean {
@@ -78,7 +84,9 @@ export class WebOmniPlayer implements OmniPlayer {
}
get isAutoQuality(): boolean {
return true;
const hls = this.getHls();
if (!hls) return false;
return hls.autoLevelEnabled;
}
play(): void {
@@ -112,16 +120,31 @@ export class WebOmniPlayer implements OmniPlayer {
}
get videos(): Track[] {
// hls.js does not support alternative video tracks (e.g. camera angles)
return [];
}
selectVideo(video: Track): void {}
selectVideo(_video: Track): void {
// hls.js does not support alternative video tracks
}
get audios(): Track[] {
return [];
const hls = this.getHls();
if (!hls) return [];
const currentTrackId = hls.audioTrack;
return hls.audioTracks.map((track, index) => ({
id: index.toString(),
label: track.name,
language: track.lang,
selected: index === currentTrackId,
}));
}
selectAudio(audio: Track): void {}
selectAudio(audio: Track): void {
const hls = this.getHls();
if (!hls) return;
hls.audioTrack = parseInt(audio.id, 10);
}
get subtitles(): Track[] {
return this._store.textTrackList
@@ -145,10 +168,21 @@ export class WebOmniPlayer implements OmniPlayer {
}
get rendition(): Rendition[] {
return [];
const hls = this.getHls();
if (!hls) return [];
const currentLevel = hls.currentLevel;
return hls.levels.map((level, index) => ({
id: index.toString(),
width: level.width,
height: level.height,
bitrate: level.bitrate,
selected: index === currentLevel,
}));
}
selectRendition(_rendition?: Rendition): void {
// Auto quality is handled by videojs/HLS
selectRendition(rendition?: Rendition): void {
const hls = this.getHls();
if (!hls) return;
hls.nextLevel = rendition ? parseInt(rendition.id, 10) : -1;
}
}
+1
View File
@@ -24,6 +24,7 @@ export const OmniView = ({
autoPlay={autoplay}
playsInline
crossOrigin="anonymous"
style={{ width: "100%", height: "100%", objectFit: "cover" }}
/>
)}
</VideoPlayer.Container>