Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 2 additions & 10 deletions .github/actions/setup-native-player/action.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: Setup native player

description: Install ffmpeg, gstreamer, or vlc for harness tests
description: Install ffmpeg or gstreamer for harness tests

inputs:
player:
description: ffmpeg, gstreamer, or vlc
description: ffmpeg or gstreamer
required: true

runs:
Expand All @@ -19,7 +19,6 @@ runs:
case "${{ inputs.player }}" in
ffmpeg) sudo apt-get install -y ffmpeg xvfb ;;
gstreamer) sudo apt-get install -y gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad xvfb ;;
vlc) sudo apt-get install -y vlc xvfb ;;
*) echo "Unknown player: ${{ inputs.player }}"; exit 1 ;;
esac

Expand Down Expand Up @@ -51,10 +50,3 @@ runs:
Add-Content $env:GITHUB_PATH $bin
Add-Content $env:GITHUB_ENV "GSTREAMER_1_0_ROOT_MSVC_X86_64=$root"
Add-Content $env:GITHUB_ENV "GSTREAMER_BIN=$bin"

- name: Windows VLC
if: runner.os == 'Windows' && inputs.player == 'vlc'
shell: pwsh
run: |
choco install vlc -y --no-progress
Add-Content $env:GITHUB_PATH 'C:\Program Files\VideoLAN\VLC'
9 changes: 3 additions & 6 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
player: [ffmpeg, gstreamer, vlc]
player: [ffmpeg, gstreamer]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
Expand All @@ -52,12 +52,11 @@ jobs:
- name: Integration test
timeout-minutes: 10
env:
AIRPLAY_VLC_HEADLESS: 'true'
AIRPLAY_GST_CLI: 'true'
shell: bash
run: |
TASK="${{ matrix.player }}IntegrationTest"
EXTRA=(-Dairplay.vlc.headless=true -Dairplay.gst.cli=true)
EXTRA=(-Dairplay.gst.cli=true)
if [ -n "${GSTREAMER_BIN:-}" ]; then EXTRA+=("-Dgstreamer.path=$GSTREAMER_BIN"); fi
if [ "${{ runner.os }}" = "Linux" ]; then
xvfb-run -a ./gradlew ":player:harness:$TASK" --no-daemon "${EXTRA[@]}"
Expand All @@ -73,10 +72,9 @@ jobs:
strategy:
fail-fast: false
matrix:
player: [ffmpeg, gstreamer, vlc]
player: [ffmpeg, gstreamer]
runs-on: ubuntu-latest
env:
AIRPLAY_VLC_HEADLESS: 'true'
AIRPLAY_GST_CLI: 'true'
steps:
- uses: actions/checkout@v7
Expand All @@ -95,7 +93,6 @@ jobs:
-Dairplay.harness.metrics=true \
-Dairplay.harness.bench.seconds=300 \
-Dairplay.harness.bench.player=${{ matrix.player }} \
-Dairplay.vlc.headless=true \
-Dairplay.gst.cli=true
- if: always()
uses: actions/upload-artifact@v7
Expand Down
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ local.properties
dump.h264
dumps/
/log
/logs
**/logs
/log.*
gst.log
player/app/log
/research/
/.cursor
/.cursor/*
player/harness/logs/
**/build/reports/playback-metrics/
__pycache__/
2 changes: 1 addition & 1 deletion .run/Windows.run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<envs>
<env name="GSTREAMER_1_0_ROOT_MSVC_X86_64" value="C:\Program Files\gstreamer\1.0\msvc_x86_64" />
<env name="GST_REGISTRY_FORK" value="no" />
<env name="PLAYER_TRAY_ENABLED" value="false" />
<env name="PLAYER_TRAY_ENABLED" value="true" />
</envs>
<module name="java-airplay.player.app.main" />
<target name="srzhk@192.168.0.208:22" />
Expand Down
14 changes: 5 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@

- AirPlay audio + screen mirroring
- FairPlay decryption for mirrored streams
- Playbacks: GStreamer, FFmpeg (`ffplay`), VLC
- Volume control
- YouTube HLS playback (AirPlay video from the YouTube app)
- Playbacks: GStreamer, FFmpeg (`ffplay`)
- Optional session dump (protocol + decrypted media) for debugging

## Quick start
Expand Down Expand Up @@ -56,7 +58,7 @@ airplay.serverName=srzhka
airplay.width=1280
airplay.height=720
airplay.fps=24
# player (gstreamer, ffmpeg, vlc)
# player (gstreamer, ffmpeg)
player.implementation=gstreamer
player.tray.enabled=true
# dump (optional sidecar)
Expand All @@ -72,7 +74,7 @@ dump.videoFps=60

## Playback

Pick a backend with `player.implementation` (`gstreamer`, `ffmpeg`, or `vlc`). Install the matching native player first.
Pick a backend with `player.implementation` (`gstreamer` or `ffmpeg`). Install the matching native player first.

### GStreamer (recommended)

Expand All @@ -86,12 +88,6 @@ Uses `ffplay` on `PATH`. Video works; **mirroring audio is unreliable** on stock

Install: [FFmpeg download](https://ffmpeg.org/download.html)

### VLC

**Very unstable** in this project (sessions often drop). Use only for experiments.

Install: [VLC download](https://www.videolan.org/vlc/)

## Session dump

Set `dump.enabled=true` to record beside the live player under `dumps/<timestamp>_<sessionId>/`:
Expand Down
20 changes: 0 additions & 20 deletions client/build.gradle.kts

This file was deleted.

201 changes: 0 additions & 201 deletions client/src/main/java/com/github/serezhka/airplay/client/App.java

This file was deleted.

Loading
Loading