Genymobile / scrcpy

Display and control your Android device
Apache License 2.0
105.61k stars 10.25k forks source link

Color looks too bright and lost details #4282

Open GOGOsu opened 10 months ago

GOGOsu commented 10 months ago

Environment

Describe the bug As description. When I use scrcpy the screen is too white and lost details. I tried using with -m 800 or --render-driver=software or without them, but nothing helps.

Terminal outputs seems normal:

C:\Users\GOGOsu\Downloads\scrcpy-win64-v2.1.1> ./scrcpy --render-driver=software
scrcpy 2.1.1 <https://github.com/Genymobile/scrcpy>
INFO: ADB device found:
INFO:     -->   (usb)              a6***3c            device  23049RAD8C
C:\Users\GOGOsu\Downloads\scrcpy-win64-v2.1.1\scrcpy-serve... file pushed, 0 skipped. 69.5 MB/s (56995 bytes in 0.001s)
[server] INFO: Device: [Xiaomi] Redmi 23049RAD8C (Android 13)
INFO: Renderer: software
INFO: Texture: 1080x2400

The following screenshot shows the difference between scrcpy and adb exec-out screencap: image

rom1v commented 10 months ago

How did you take the screenshot on the right?

How is the resulting image if you capture with:

adb exec-out screencap -p > file.png

?

What if you record with:

adb shell screenrecord /sdcard/file.mp4
adb pull /sdcard/file.mp4

?

Does it happen with all encoders?

And if you increase the bitrate (scrcpy -b20M)?

(don't use "software" rendering)

Also related: #638

GOGOsu commented 10 months ago
  1. The right image is captured by adb shell screencap /sdcard/test.png; adb pull /sdcard/test.png
  2. The adb exec-out screencap -p > file.png produce a correct-looking file like the above command.
  3. The screenrecord looks too white, like in issue.
  4. With some encoders, see below.
  5. Increase the bitrate do not help.

Encoders returned by scrcpy --list-encoders:

[server] INFO: List of video encoders:
    --video-codec=h264 --video-encoder='c2.qti.avc.encoder'
    --video-codec=h264 --video-encoder='OMX.qcom.video.encoder.avc'
    --video-codec=h264 --video-encoder='c2.android.avc.encoder'
    --video-codec=h264 --video-encoder='OMX.google.h264.encoder'
    --video-codec=h265 --video-encoder='c2.qti.hevc.encoder'
    --video-codec=h265 --video-encoder='OMX.qcom.video.encoder.hevc'
    --video-codec=h265 --video-encoder='c2.qti.hevc.encoder.cq'
    --video-codec=h265 --video-encoder='OMX.qcom.video.encoder.hevc.cq'
    --video-codec=h265 --video-encoder='c2.android.hevc.encoder'
[server] INFO: List of audio encoders:
    --audio-codec=opus --audio-encoder='c2.android.opus.encoder'
    --audio-codec=aac --audio-encoder='c2.android.aac.encoder'
    --audio-codec=aac --audio-encoder='OMX.google.aac.encoder'

All video encoder containing qti or qcom will produce abnormal color, but the video is smooth. The remaining 3 encoder (c2.android.avc.encoder, OMX.google.h264.encoder, c2.android.hevc.encoder) produce correct color, but with significant lag & jelly-like scrolling (even if -b20M / -b40M)

English is not my native language, sorry for any inconvenience.

rom1v commented 10 months ago

The screenrecord looks too white, like in issue.

Ok, this is a capture issue on your device then.

You could check if you have some "color enhancement" applied in your device settings that might confuse the capture.

GOGOsu commented 10 months ago

Thank you for your reply! I will try later and update the thread when I get some usable information.

IsGuibo commented 4 months ago

Thank you for your reply! I will try later and update the thread when I get some usable information.

I have the same problem, have you solved it?

GOGOsu commented 4 months ago

I have the same problem, have you solved it?

Sadly, no. I tried everything in my phone's color settings, but no luck.