Genymobile / Genymobile/scrcpy

Could not create default audio encoder for opus (Nexus 4 with Android 11)

Open
#4,445 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
150k
Forks
13.7k
Avg merge
4d 13h
Merged PRs (30d)
2

Description

- [x] I have read the [FAQ](https://github.com/Genymobile/scrcpy/blob/master/FAQ.md).
- [x] I have searched in existing [issues](https://github.com/Genymobile/scrcpy/issues).

**Environment**
- OS: Android/Windows
- scrcpy version: v2.2
- installation method: Windows Release
- device model: Nexus 4 E960
- Android version: 11

**Describe the bug**

Not start in Nexus4 with Android 11.
If I try normally I get this error _"Could not create default audio encoder for opus"_
And if I try without audio, I get this: _"Encoding error: java.lang.IllegalStateException: null"_

```
C:\Program Files\Android\scrcpy-win64-v2.2\scrcpy-server: ...file pushed, 0 skipped. 128.3 MB/s (64363 bytes in 0.000s)
[server] INFO: Device: [LGE] google Nexus 4 (Android 11)
INFO: Renderer: direct3d
INFO: Texture: 768x1280
[server] ERROR: Could not create default audio encoder for opus
List of audio encoders:
--audio-codec=aac --audio-encoder='OMX.google.aac.encoder'
WARN: Demuxer 'audio': stream explicitly disabled by the device
[server] ERROR: Exception on thread Thread[audio-encoder,5,main]
java.lang.IllegalArgumentException: Failed to initialize audio/opus, error 0xfffffffe
at android.media.MediaCodec.native_setup(Native Method)
at android.media.MediaCodec.(MediaCodec.java:1912)
at android.media.MediaCodec.createEncoderByType(MediaCodec.java:1875)
at com.genymobile.scrcpy.AudioEncoder.createMediaCodec(AudioEncoder.java:292)
at com.genymobile.scrcpy.AudioEncoder.encode(AudioEncoder.java:184)
at com.genymobile.scrcpy.AudioEncoder.lambda$start$0$com-genymobile-scrcpy-AudioEncoder(AudioEncoder.java:124)
at com.genymobile.scrcpy.AudioEncoder$$ExternalSyntheticLambda0.run(Unknown Source:4)
at java.lang.Thread.run(Thread.java:923)
[server] INFO: Retrying with -m1024...
[server] INFO: Retrying...
[server] ERROR: Encoding error: java.lang.IllegalStateException: null
[server] ERROR: Encoding error: java.lang.IllegalStateException: null
[server] INFO: Retrying with -m800...
[server] INFO: Retrying...
[server] ERROR: Encoding error: java.lang.IllegalStateException: null
WARN: [server] ERROR: Exception on thread Thread[video,5,main]
Djava.lang.IllegalStateExceptione
vi at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)c
e at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:3452)
at com.genymobile.scrcpy.SurfaceEncoder.encode(SurfaceEncoder.java:157)
d at com.genymobile.scrcpy.SurfaceEncoder.streamScreen(SurfaceEncoder.java:76)
at com.genymobile.scrcpy.SurfaceEncoder.lambda$start$0$com-genymobile-scrcpy-SurfaceEncoder(SurfaceEncoder.java:253)i
at com.genymobile.scrcpy.SurfaceEncoder$$ExternalSyntheticLambda0.run(Unknown Source:4)sc
at java.lang.Thread.run(Thread.java:923)
onnected
```

using "--no-audio":

```
C:\Program Files\Android\scrcpy-win64-v2.2\scrcpy-server: ...file pushed, 0 skipped. 102.7 MB/s (64363 bytes in 0.001s)
[server] INFO: Device: [LGE] google Nexus 4 (Android 11)
INFO: Renderer: direct3d
INFO: Texture: 768x1280
[server] INFO: Retrying with -m1024...
[server] INFO: Retrying...
[server] ERROR: Encoding error: java.lang.IllegalStateException: null
[server] ERROR: Encoding error: java.lang.IllegalStateException: null
[server] INFO: Retrying with -m800...
[server] INFO: Retrying...
[server] ERROR: Encoding error: java.lang.IllegalStateException: null
[server] ERROR: Exception on thread Thread[video,5,main]
WARNjava.lang.IllegalStateException:
at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
D at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:3452)e
v at com.genymobile.scrcpy.SurfaceEncoder.encode(SurfaceEncoder.java:157)i
c at com.genymobile.scrcpy.SurfaceEncoder.streamScreen(SurfaceEncoder.java:76)e
at com.genymobile.scrcpy.SurfaceEncoder.lambda$start$0$com-genymobile-scrcpy-SurfaceEncoder(SurfaceEncoder.java:253)d
i at com.genymobile.scrcpy.SurfaceEncoder$$ExternalSyntheticLambda0.run(Unknown Source:4)
s at java.lang.Thread.run(Thread.java:923)
connected
```

Please do not post screenshots of your terminal, just post the content as text instead.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the failure on a Nexus 4 running Android 11 with scrcpy v2.2, then inspect the reported paths in AudioEncoder.java and SurfaceEncoder.java. Compare the codec initialization and MediaCodec failures in the supplied logs; done means the device can start successfully with audio and with --no-audio.

Written by the indexing model from the issue text.

Assessment

Tech stack
android
Domain
mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.