使用ffprobe, pix_fmt返回的是DRM_PRIME, Ubuntu20.04下ffprobe返回的是yuv420p10le #211

Closed
opened 2025-12-23 10:36:03 +01:00 by backuprepo · 3 comments
Owner

Originally created by @cnjswwxbtcc on GitHub (Sep 5, 2025).

本仓库编译出来的ffprobe:

# ./ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height,pix_fmt,bit_rate,refs -of json Test\ Jellyfin\ 1080p\ HEVC\ 8bit\ 3M.mp4
mpp[17980]: mpp_platform: client 16 driver is not ready!
{
mpp[17980]: mpp_info: mpp version: 90c205ca author: Alexander Koval 2025-08-25 fix[vdpp] Fix building tests against musl libc
mpp[17980]: mpp_info: mpp version: 90c205ca author: Alexander Koval 2025-08-25 fix[vdpp] Fix building tests against musl libc
    "programs": [

    ],
    "streams": [
        {
            "codec_name": "hevc",
            "width": 1920,
            "height": 1080,
            "pix_fmt": "drm_prime",
            "level": -99,
            "refs": 1,
            "bit_rate": "3019301"
        }
    ]
}
# ./ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height,pix_fmt,bit_rate,refs -of json Test\ Jellyfin\ 1080p\ HEVC\ 10bit\ 3M.mp4
mpp[18030]: mpp_platform: client 16 driver is not ready!
{
mpp[18030]: mpp_info: mpp version: 90c205ca author: Alexander Koval 2025-08-25 fix[vdpp] Fix building tests against musl libc
mpp[18030]: mpp_info: mpp version: 90c205ca author: Alexander Koval 2025-08-25 fix[vdpp] Fix building tests against musl libc
    "programs": [

    ],
    "streams": [
        {
            "codec_name": "hevc",
            "width": 1920,
            "height": 1080,
            "pix_fmt": "drm_prime",
            "level": -99,
            "refs": 1,
            "bit_rate": "3018401"
        }
    ]
}

Ubuntu20.04 ffprobe:

❯ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height,pix_fmt,bit_rate,refs -of json Test\ Jellyfin\ 1080p\ HEVC\ 8bit\ 3M.mp4
{
    "programs": [

    ],
    "streams": [
        {
            "codec_name": "hevc",
            "profile": "Main",
            "width": 1920,
            "height": 1080,
            "pix_fmt": "yuv420p",
            "level": 123,
            "refs": 1,
            "bit_rate": "3019301"
        }
    ]
}
❯ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height,pix_fmt,bit_rate,refs -of json Test\ Jellyfin\ 1080p\ HEVC\ 10bit\ 3M.mp4
{
    "programs": [

    ],
    "streams": [
        {
            "codec_name": "hevc",
            "profile": "Main 10",
            "width": 1920,
            "height": 1080,
            "pix_fmt": "yuv420p10le",
            "level": 123,
            "refs": 1,
            "bit_rate": "3018401"
        }
    ]
}
Originally created by @cnjswwxbtcc on GitHub (Sep 5, 2025). 本仓库编译出来的ffprobe: ```bash # ./ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height,pix_fmt,bit_rate,refs -of json Test\ Jellyfin\ 1080p\ HEVC\ 8bit\ 3M.mp4 mpp[17980]: mpp_platform: client 16 driver is not ready! { mpp[17980]: mpp_info: mpp version: 90c205ca author: Alexander Koval 2025-08-25 fix[vdpp] Fix building tests against musl libc mpp[17980]: mpp_info: mpp version: 90c205ca author: Alexander Koval 2025-08-25 fix[vdpp] Fix building tests against musl libc "programs": [ ], "streams": [ { "codec_name": "hevc", "width": 1920, "height": 1080, "pix_fmt": "drm_prime", "level": -99, "refs": 1, "bit_rate": "3019301" } ] } # ./ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height,pix_fmt,bit_rate,refs -of json Test\ Jellyfin\ 1080p\ HEVC\ 10bit\ 3M.mp4 mpp[18030]: mpp_platform: client 16 driver is not ready! { mpp[18030]: mpp_info: mpp version: 90c205ca author: Alexander Koval 2025-08-25 fix[vdpp] Fix building tests against musl libc mpp[18030]: mpp_info: mpp version: 90c205ca author: Alexander Koval 2025-08-25 fix[vdpp] Fix building tests against musl libc "programs": [ ], "streams": [ { "codec_name": "hevc", "width": 1920, "height": 1080, "pix_fmt": "drm_prime", "level": -99, "refs": 1, "bit_rate": "3018401" } ] } ``` Ubuntu20.04 ffprobe: ```bash ❯ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height,pix_fmt,bit_rate,refs -of json Test\ Jellyfin\ 1080p\ HEVC\ 8bit\ 3M.mp4 { "programs": [ ], "streams": [ { "codec_name": "hevc", "profile": "Main", "width": 1920, "height": 1080, "pix_fmt": "yuv420p", "level": 123, "refs": 1, "bit_rate": "3019301" } ] } ❯ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height,pix_fmt,bit_rate,refs -of json Test\ Jellyfin\ 1080p\ HEVC\ 10bit\ 3M.mp4 { "programs": [ ], "streams": [ { "codec_name": "hevc", "profile": "Main 10", "width": 1920, "height": 1080, "pix_fmt": "yuv420p10le", "level": 123, "refs": 1, "bit_rate": "3018401" } ] } ```
backuprepo 2025-12-23 10:36:03 +01:00
  • closed this issue
  • added the
    invalid
    label
Author
Owner

@nyanmisaka commented on GitHub (Sep 5, 2025):

Unable to reproduce. This repository does not contain changes to the ffplay.c source code.

./ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height
,pix_fmt,bit_rate,refs -of json ./Test\ Jellyfin\ 1080p\ HEVC\ 8bit\ 3M.mp4
{
    "programs": [

    ],
    "stream_groups": [

    ],
    "streams": [
        {
            "codec_name": "hevc",
            "profile": "Main",
            "width": 1920,
            "height": 1080,
            "pix_fmt": "yuv420p",
            "level": 123,
            "refs": 1,
            "bit_rate": "3019301"
        }
    ]
}
@nyanmisaka commented on GitHub (Sep 5, 2025): Unable to reproduce. This repository does not contain changes to the ffplay.c source code. ``` ./ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height ,pix_fmt,bit_rate,refs -of json ./Test\ Jellyfin\ 1080p\ HEVC\ 8bit\ 3M.mp4 { "programs": [ ], "stream_groups": [ ], "streams": [ { "codec_name": "hevc", "profile": "Main", "width": 1920, "height": 1080, "pix_fmt": "yuv420p", "level": 123, "refs": 1, "bit_rate": "3019301" } ] } ```
Author
Owner

@cnjswwxbtcc commented on GitHub (Sep 9, 2025):

Unable to reproduce. This repository does not contain changes to the ffplay.c source code.

./ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height
,pix_fmt,bit_rate,refs -of json ./Test\ Jellyfin\ 1080p\ HEVC\ 8bit\ 3M.mp4
{
    "programs": [

    ],
    "stream_groups": [

    ],
    "streams": [
        {
            "codec_name": "hevc",
            "profile": "Main",
            "width": 1920,
            "height": 1080,
            "pix_fmt": "yuv420p",
            "level": 123,
            "refs": 1,
            "bit_rate": "3019301"
        }
    ]
}

刚有时间定位这个, 和我的编译估计有很大关系, gdb调用栈如下:

(gdb) info locals
codec = 0x7f802a0480 <ff_hevc_rkmpp_decoder>
codec = <optimized out>
probe_codec = <optimized out>
iter = <optimized out>
(gdb) bt
#0  find_probe_decoder (codec_id=<optimized out>, st=0x3f311830, s=0x3f310f70)
    at libavformat/demux.c:83
#1  avformat_find_stream_info (ic=0x3f310f70, options=0x0) at libavformat/demux.c:2505

find_probe_decoder匹配到了ff_hevc_rkmpp_decoder, 这是我编译裁剪过后生成的codec_list, 里面没有hevc的decoder

static const FFCodec * const codec_list[] = {
    &ff_rawvideo_encoder,
    &ff_wrapped_avframe_encoder,
    &ff_pcm_s16le_encoder,
    &ff_pcm_s24le_encoder,
    &ff_pcm_s32le_encoder,
    &ff_h264_rkmpp_encoder,
    &ff_hevc_rkmpp_encoder,
    &ff_mjpeg_rkmpp_encoder,
    &ff_vnull_encoder,
    &ff_anull_encoder,
    &ff_h263_rkmpp_decoder,
    &ff_h264_rkmpp_decoder,
    &ff_hevc_rkmpp_decoder,
    &ff_mpeg4_rkmpp_decoder,
    &ff_mpeg1_rkmpp_decoder,
    &ff_mpeg2_rkmpp_decoder,
    &ff_vp8_rkmpp_decoder,
    &ff_vp9_rkmpp_decoder,
    &ff_wrapped_avframe_decoder,
    &ff_aac_decoder,
    &ff_ac3_decoder,
    &ff_flac_decoder,
    &ff_mp1_decoder,
    &ff_mp1float_decoder,
    &ff_mp2_decoder,
    &ff_mp2float_decoder,
    &ff_mp3float_decoder,
    &ff_mp3_decoder,
    &ff_mp3adufloat_decoder,
    &ff_mp3adu_decoder,
    &ff_mp3on4float_decoder,
    &ff_mp3on4_decoder,
    &ff_opus_decoder,
    &ff_vorbis_decoder,
    &ff_wmav1_decoder,
    &ff_wmav2_decoder,
    &ff_pcm_f32le_decoder,
    &ff_pcm_f64le_decoder,
    &ff_pcm_s16le_decoder,
    &ff_pcm_s32le_decoder,
    &ff_av1_rkmpp_decoder,
    &ff_vnull_decoder,
    NULL };
@cnjswwxbtcc commented on GitHub (Sep 9, 2025): > Unable to reproduce. This repository does not contain changes to the ffplay.c source code. > > ``` > ./ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height > ,pix_fmt,bit_rate,refs -of json ./Test\ Jellyfin\ 1080p\ HEVC\ 8bit\ 3M.mp4 > { > "programs": [ > > ], > "stream_groups": [ > > ], > "streams": [ > { > "codec_name": "hevc", > "profile": "Main", > "width": 1920, > "height": 1080, > "pix_fmt": "yuv420p", > "level": 123, > "refs": 1, > "bit_rate": "3019301" > } > ] > } > ``` 刚有时间定位这个, 和我的编译估计有很大关系, gdb调用栈如下: ``` (gdb) info locals codec = 0x7f802a0480 <ff_hevc_rkmpp_decoder> codec = <optimized out> probe_codec = <optimized out> iter = <optimized out> (gdb) bt #0 find_probe_decoder (codec_id=<optimized out>, st=0x3f311830, s=0x3f310f70) at libavformat/demux.c:83 #1 avformat_find_stream_info (ic=0x3f310f70, options=0x0) at libavformat/demux.c:2505 ``` find_probe_decoder匹配到了`ff_hevc_rkmpp_decoder`, 这是我编译裁剪过后生成的codec_list, 里面没有hevc的decoder ```c static const FFCodec * const codec_list[] = { &ff_rawvideo_encoder, &ff_wrapped_avframe_encoder, &ff_pcm_s16le_encoder, &ff_pcm_s24le_encoder, &ff_pcm_s32le_encoder, &ff_h264_rkmpp_encoder, &ff_hevc_rkmpp_encoder, &ff_mjpeg_rkmpp_encoder, &ff_vnull_encoder, &ff_anull_encoder, &ff_h263_rkmpp_decoder, &ff_h264_rkmpp_decoder, &ff_hevc_rkmpp_decoder, &ff_mpeg4_rkmpp_decoder, &ff_mpeg1_rkmpp_decoder, &ff_mpeg2_rkmpp_decoder, &ff_vp8_rkmpp_decoder, &ff_vp9_rkmpp_decoder, &ff_wrapped_avframe_decoder, &ff_aac_decoder, &ff_ac3_decoder, &ff_flac_decoder, &ff_mp1_decoder, &ff_mp1float_decoder, &ff_mp2_decoder, &ff_mp2float_decoder, &ff_mp3float_decoder, &ff_mp3_decoder, &ff_mp3adufloat_decoder, &ff_mp3adu_decoder, &ff_mp3on4float_decoder, &ff_mp3on4_decoder, &ff_opus_decoder, &ff_vorbis_decoder, &ff_wmav1_decoder, &ff_wmav2_decoder, &ff_pcm_f32le_decoder, &ff_pcm_f64le_decoder, &ff_pcm_s16le_decoder, &ff_pcm_s32le_decoder, &ff_av1_rkmpp_decoder, &ff_vnull_decoder, NULL }; ```
Author
Owner

@nyanmisaka commented on GitHub (Sep 9, 2025):

ffprobe relies on software decoders. If you disable the software hevc decoder, ffprobe will not be able to detect video attributes correctly.

@nyanmisaka commented on GitHub (Sep 9, 2025): ffprobe relies on software decoders. If you disable the software hevc decoder, ffprobe will not be able to detect video attributes correctly.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: starred/ffmpeg-rockchip#211
No description provided.