Skip to content

Instantly share code, notes, and snippets.

@opragel
Last active April 21, 2025 22:12
Show Gist options
  • Select an option

  • Save opragel/50a27b5bf8d00eeaa871189b15999fb2 to your computer and use it in GitHub Desktop.

Select an option

Save opragel/50a27b5bf8d00eeaa871189b15999fb2 to your computer and use it in GitHub Desktop.

Revisions

  1. opragel revised this gist Apr 21, 2025. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions scrpy-notes.sh
    Original file line number Diff line number Diff line change
    @@ -67,8 +67,8 @@ scrcpy --max-fps=165 --video-bit-rate=8M --video-codec=h264 --video-encoder=c2.q
    # Camera mirroring only (30 FPS -> more FPS, lighting is harder/darker)
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-fps 30 --no-audio


    scrcpy --max-fps=165 --audio-bit-rate=128000 --video-bit-rate=20M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 120 --no-audio
    # Camera mirroring, landscape
    scrcpy -s "$serialNumber" --max-fps=165 --video-bit-rate=8M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --video-source=camera --camera-id=0 --camera-fps 30 --no-audio --capture-orientation=270 --orientation=270

    # Camera mirroring, high-speed [120(?), definitely above 60] FPS)
    scrcpy --max-fps=165 --video-bit-rate=20M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 120 --no-audio
  2. opragel revised this gist Apr 21, 2025. 1 changed file with 14 additions and 3 deletions.
    17 changes: 14 additions & 3 deletions scrpy-notes.sh
    Original file line number Diff line number Diff line change
    @@ -1,10 +1,14 @@
    #!/bin/sh
    # Note: this is given as a shell script intended for use on macOS, but it works perfectly fine on Windows in Powershell too!
    # Note (script compatability): this is given as a shell script intended for use on macOS, but it works perfectly fine on Windows in Powershell too!

    # Note: I usually specify serial for ADB/scrcpy, because I typically run with
    # Note (specifying device): I usually specify serial for ADB/scrcpy, because I typically run with
    # both USB and wireless debugging enabled. If you only have one available
    # device for ADB debugging, you can skip that!]

    # Note: (web conferencing): Last I recall, Zoom/Meet cap out at 30FPS. So if you're intending to share stuff there, going beyond 30 FPS won't really provide value.

    # Set device identifer

    # Unix (sh/bash/zsh etc)
    # serialNumber="your_device_serial_here"
    # Windowz
    @@ -49,6 +53,10 @@ scrcpy --max-fps=165 --audio-bit-rate=128000 --video-bit-rate=8M --video-codec=h
    # Mirrors just camera at 30 FPS
    scrcpy --max-fps=165 --audio-bit-rate=128000 --video-bit-rate=8M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --video-source=camera --camera-id=0 --camera-fps 30 --no-audio

    # high bandwidth/framerate! network-intensive.
    scrcpy --max-fps=165 --video-bit-rate=8M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 120 --no-audio


    # Camera stuff

    # Camera mirroring
    @@ -59,8 +67,11 @@ scrcpy --max-fps=165 --audio-bit-rate=128000 --video-bit-rate=8M --video-codec=h
    # Camera mirroring only (30 FPS -> more FPS, lighting is harder/darker)
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-fps 30 --no-audio


    scrcpy --max-fps=165 --audio-bit-rate=128000 --video-bit-rate=20M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 120 --no-audio

    # Camera mirroring, high-speed [120(?), definitely above 60] FPS)
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 120 --no-audio
    scrcpy --max-fps=165 --video-bit-rate=20M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 120 --no-audio

    # other flags I find personall useful:
    # -t / --show-touches: shows PHYSICAL touches on screen
  3. opragel revised this gist Apr 21, 2025. 1 changed file with 11 additions and 2 deletions.
    13 changes: 11 additions & 2 deletions scrpy-notes.sh
    Original file line number Diff line number Diff line change
    @@ -40,6 +40,15 @@ scrcpy -s "$serialNumber" --stay-awake --max-fps=165 --audio-bit-rate=365000 --v
    # Use a virtual/"external" display and launch a specific app only
    scrcpy -s "$serialNumber" --stay-awake --max-fps=165 --audio-bit-rate=365000 --video-bit-rate=10M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --new-display --start-app=org.wikipedia

    # Intended for wireless ADB specifically - lowered bitrate/audio quality/FPS.
    # Play with bitrates and framerates, your exact results will heavily depend
    # on your current network conditions (both host and client device)
    # Mirrors entire screen
    scrcpy --max-fps=165 --audio-bit-rate=128000 --video-bit-rate=8M --video-codec=h264 --video-encoder=c2.qti.avc.encoder

    # Mirrors just camera at 30 FPS
    scrcpy --max-fps=165 --audio-bit-rate=128000 --video-bit-rate=8M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --video-source=camera --camera-id=0 --camera-fps 30 --no-audio

    # Camera stuff

    # Camera mirroring
    @@ -48,12 +57,12 @@ scrcpy -s "$serialNumber" --stay-awake --max-fps=165 --audio-bit-rate=365000 --v
    # watch out for audio feedback!

    # Camera mirroring only (30 FPS -> more FPS, lighting is harder/darker)
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 30 --no-audio
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-fps 30 --no-audio

    # Camera mirroring, high-speed [120(?), definitely above 60] FPS)
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 120 --no-audio

    # other flags I find personally useful:
    # other flags I find personall useful:
    # -t / --show-touches: shows PHYSICAL touches on screen
    # --window-borderless: borderless window (no title bar, no close/minimize buttons)
    # --no-audio-playback: Disable audio playback on the computer
  4. opragel revised this gist Apr 21, 2025. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion scrpy-notes.sh
    Original file line number Diff line number Diff line change
    @@ -53,7 +53,7 @@ scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-high-spee
    # Camera mirroring, high-speed [120(?), definitely above 60] FPS)
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 120 --no-audio

    # other flags I find personall useful:
    # other flags I find personally useful:
    # -t / --show-touches: shows PHYSICAL touches on screen
    # --window-borderless: borderless window (no title bar, no close/minimize buttons)
    # --no-audio-playback: Disable audio playback on the computer
  5. opragel revised this gist Apr 21, 2025. 1 changed file with 26 additions and 8 deletions.
    34 changes: 26 additions & 8 deletions scrpy-notes.sh
    Original file line number Diff line number Diff line change
    @@ -10,27 +10,38 @@
    # Windowz
    # $serialNumber = "your_device_serial_here"

    # Info gathering

    # Get available cameras
    scrcpy -s "$serialNumber" --list-cameras

    # Get available camera "sizes" / formats
    scrcpy -s "$serialNumber" --list-camera-sizes

    # Get device displays
    scrcpy -s "$serialNumber" --list-displays

    # Get available audio/video encoders
    scrcpy -s "$serialNumber" --list-encoders

    # Get available apps
    scrcpy -s "$serialNumber" --list-apps

    # General mirroring

    # Generic mirroring. Sets the max FPS to 165, which is my desktop monitor's
    # refresh rate. Also slightly ups video bitrate from default to 10M, and
    # significantly ups audio bitrate from default to 365k.
    scrcpy -s "$serialNumber" --stay-awake --max-fps=165 --audio-bit-rate=365000 --video-bit-rate=10M --video-codec=h264 --video-encoder=c2.qti.avc.encoder

    # Use a virtual display. You can optionally specify resolution (=1920x1080)
    # Use a virtual display. You can optionally specify resolution & DPI (eg: =1920x1080/240)
    scrcpy -s "$serialNumber" --stay-awake --max-fps=165 --audio-bit-rate=365000 --video-bit-rate=10M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --new-display

    # Use a virtual/"external" display and launch a specific app only
    scrcpy -s "$serialNumber" --stay-awake --max-fps=165 --audio-bit-rate=365000 --video-bit-rate=10M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --new-display --start-app=org.wikipedia

    # Camera stuff

    # Get available cameras
    scrcpy -s "$serialNumber" --list-cameras

    # Get available camera "sizes" / formats
    scrcpy -s "$serialNumber" --list-cameras

    # Camera mirroring
    # I disable the audio because I'm not interested in the phone microphone
    # audio ususally, I have better mics. And if you are using speakers for output
    @@ -40,4 +51,11 @@ scrcpy -s "$serialNumber" --list-cameras
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 30 --no-audio

    # Camera mirroring, high-speed [120(?), definitely above 60] FPS)
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 120 --no-audio
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 120 --no-audio

    # other flags I find personall useful:
    # -t / --show-touches: shows PHYSICAL touches on screen
    # --window-borderless: borderless window (no title bar, no close/minimize buttons)
    # --no-audio-playback: Disable audio playback on the computer
    # --no-audio: Disable audio forwarding
    # -n / --no-control: Disable device control (mirror the device in read-only).
  6. opragel revised this gist Apr 21, 2025. No changes.
  7. opragel revised this gist Apr 21, 2025. 1 changed file with 9 additions and 1 deletion.
    10 changes: 9 additions & 1 deletion scrpy-notes.sh
    Original file line number Diff line number Diff line change
    @@ -9,11 +9,19 @@
    # serialNumber="your_device_serial_here"
    # Windowz
    # $serialNumber = "your_device_serial_here"

    # General mirroring

    # Generic mirroring. Sets the max FPS to 165, which is my desktop monitor's
    # refresh rate. Also slightly ups video bitrate from default to 10M, and
    # significantly ups audio bitrate from default to 365k.
    scrcpy -s "$serialNumber" --stay-awake --max-fps=165 --audio-bit-rate=365000 --video-bit-rate=10M --video-codec=h264 --video-encoder=c2.qti.avc.encoder

    # Use a virtual display. You can optionally specify resolution (=1920x1080)
    scrcpy -s "$serialNumber" --stay-awake --max-fps=165 --audio-bit-rate=365000 --video-bit-rate=10M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --new-display

    # Use a virtual/"external" display and launch a specific app only
    scrcpy --new-display=1920x1080 --start-app=org.videolan.vlc
    scrcpy -s "$serialNumber" --stay-awake --max-fps=165 --audio-bit-rate=365000 --video-bit-rate=10M --video-codec=h264 --video-encoder=c2.qti.avc.encoder --new-display --start-app=org.wikipedia

    # Camera stuff

  8. opragel revised this gist Apr 21, 2025. 1 changed file with 9 additions and 5 deletions.
    14 changes: 9 additions & 5 deletions scrpy-notes.sh
    Original file line number Diff line number Diff line change
    @@ -3,14 +3,18 @@

    # Note: I usually specify serial for ADB/scrcpy, because I typically run with
    # both USB and wireless debugging enabled. If you only have one available
    # device for ADB debugging, you can skip that!

    serialNumber="your_device_serial_here"

    # Genneral mirroring
    # device for ADB debugging, you can skip that!]

    # Unix (sh/bash/zsh etc)
    # serialNumber="your_device_serial_here"
    # Windowz
    # $serialNumber = "your_device_serial_here"
    # General mirroring
    scrcpy -s "$serialNumber" --stay-awake --max-fps=165 --audio-bit-rate=365000 --video-bit-rate=10M --video-codec=h264 --video-encoder=c2.qti.avc.encoder

    # Use a virtual/"external" display and launch a specific app only
    scrcpy --new-display=1920x1080 --start-app=org.videolan.vlc

    # Camera stuff

    # Get available cameras
  9. opragel created this gist Apr 21, 2025.
    31 changes: 31 additions & 0 deletions scrpy-notes.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    #!/bin/sh
    # Note: this is given as a shell script intended for use on macOS, but it works perfectly fine on Windows in Powershell too!

    # Note: I usually specify serial for ADB/scrcpy, because I typically run with
    # both USB and wireless debugging enabled. If you only have one available
    # device for ADB debugging, you can skip that!

    serialNumber="your_device_serial_here"

    # Genneral mirroring

    scrcpy -s "$serialNumber" --stay-awake --max-fps=165 --audio-bit-rate=365000 --video-bit-rate=10M --video-codec=h264 --video-encoder=c2.qti.avc.encoder

    # Camera stuff

    # Get available cameras
    scrcpy -s "$serialNumber" --list-cameras

    # Get available camera "sizes" / formats
    scrcpy -s "$serialNumber" --list-cameras

    # Camera mirroring
    # I disable the audio because I'm not interested in the phone microphone
    # audio ususally, I have better mics. And if you are using speakers for output
    # watch out for audio feedback!

    # Camera mirroring only (30 FPS -> more FPS, lighting is harder/darker)
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 30 --no-audio

    # Camera mirroring, high-speed [120(?), definitely above 60] FPS)
    scrcpy -s "$serialNumber" --video-source=camera --camera-id=0 --camera-high-speed --camera-fps 120 --no-audio