bilibili / bilibili/ijkplayer

无法播放手机b站客户端直播dlna投屏的链接,出现 Server returned 403 Forbidden (access denied)报错

Open
#5,488 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
33.2k
Forks
8.2k
PR merge metrics
No merged PRs in 30d

Description

通过dlna拿到b站客户端直播视频的链接后,用ijkplayer播放,会出现 W/IJKMEDIA: HTTP error 403 Forbidden 和 E/IJKMEDIA: http://14.17.92.23/live-bvc/768629/live_2051100473_39541482_1500.flv?expires=1669435133&pt=android&deadline=1669435133&len=0&oi=2004595625&platform=android&qn=64&trid=10001bd5679e45ed4ba7941179d86f899b1b&uipk=100&uipv=100&nbs=1&uparams=cdn,deadline,len,oi,platform,qn,trid,uipk,uipv,nbs&cdn=cn-gotcha01&upsig=8427f679796b81cb50e0d56a8df0370e&sk=1304f646dfeb4df8b6e7ff33c167d3ad52dc28d2b434c49b202f46923d102069&p2p_type=8192&src=57345&sl=2&free_type=0&sid=cn-gddg-ct-01-22&chash=1&sche=ban&score=11&usgroup=eg&pp=rtmp&machinezone=ylf&source=onetier&trace=0&site=ee7cdaba98daa4e9a82864e370694cca&order=1&bili_room_id=26157531&_nva_ext_=: Server returned 403 Forbidden (access denied) 的报错。
下面是详细log:
D/IJKMEDIA: IjkMediaPlayer_native_setup
I/IJKMEDIA: av_version_info: ff4.0--ijk0.8.8--20210426--001
I/IJKMEDIA: ijk_version_info: k0.8.8-43-g30eb9441
D/IJKMEDIA: ffpipeline_create_from_android()
D/IJKMEDIA: ijkmp_set_inject_opaque(0x2a46)
D/IJKMEDIA: ijkmp_set_inject_opaque()=void
D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque(0x2a46)
D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque()=void
D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()
D/IJKMEDIA: ffpipeline_set_mediacodec_select_callback
D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: IjkMediaPlayer_setOption
D/IJKMEDIA: IjkMediaPlayer_setOption
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: IjkMediaPlayer_reset
D/IJKMEDIA: IjkMediaPlayer_release
D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0)
D/IJKMEDIA: ffpipeline_set_surface()
D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0)=void
D/IJKMEDIA: ijkmp_shutdown_l()
D/IJKMEDIA: ijkmp_shutdown_l()=void
D/IJKMEDIA: IjkMediaPlayer_native_setup
I/IJKMEDIA: av_version_info: ff4.0--ijk0.8.8--20210426--001
I/IJKMEDIA: ijk_version_info: k0.8.8-43-g30eb9441
D/IJKMEDIA: ffpipeline_create_from_android()
D/IJKMEDIA: ijkmp_set_inject_opaque(0x2a6a)
D/IJKMEDIA: ijkmp_set_inject_opaque()=void
D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque(0x2a6a)
D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque()=void
D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()
D/IJKMEDIA: ffpipeline_set_mediacodec_select_callback
D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()=void
D/IJKMEDIA: ijkmp_dec_ref(): ref=0
D/IJKMEDIA: ijkmp_shutdown_l()
D/IJKMEDIA: ijkmp_shutdown_l()=void

V/IJKMEDIA: setDataSource: path http://14.17.92.23/live-bvc/768629/live_2051100473_39541482_1500.flv?expires=1669435133&pt=android&deadline=1669435133&len=0&oi=2004595625&platform=android&qn=64&trid=10001bd5679e45ed4ba7941179d86f899b1b&uipk=100&uipv=100&nbs=1&uparams=cdn,deadline,len,oi,platform,qn,trid,uipk,uipv,nbs&cdn=cn-gotcha01&upsig=8427f679796b81cb50e0d56a8df0370e&sk=1304f646dfeb4df8b6e7ff33c167d3ad52dc28d2b434c49b202f46923d102069&p2p_type=8192&src=57345&sl=2&free_type=0&sid=cn-gddg-ct-01-22&chash=1&sche=ban&score=11&usgroup=eg&pp=rtmp&machinezone=ylf&source=onetier&trace=0&site=ee7cdaba98daa4e9a82864e370694cca&order=1&bili_room_id=26157531&_nva_ext_=
D/IJKMEDIA: ijkmp_set_data_source(url="http://14.17.92.23/live-bvc/768629/live_2051100473_39541482_1500.flv?expires=1669435133&pt=android&deadline=1669435133&len=0&oi=2004595625&platform=android&qn=64&trid=10001bd5679e45ed4ba7941179d86f899b1b&uipk=100&uipv=100&nbs=1&uparams=cdn,deadline,len,oi,platform,qn,trid,uipk,uipv,nbs&cdn=cn-gotcha01&upsig=8427f679796b81cb50e0d56a8df0370e&sk=1304f646dfeb4df8b6e7ff33c167d3ad52dc28d2b434c49b202f46923d102069&p2p_type=8192&src=57345&sl=2&free_type=0&sid=cn-gddg-ct-01-22&chash=1&sche=ban&score=11&usgroup=eg&pp=rtmp&machinezone=ylf&source=onetier&trace=0&site=ee7cdaba98daa4e9a82864e370694cca&order=1&bili_room_id=26157531&_nva_ext_=")
D/IJKMEDIA: ijkmp_set_data_source(url="http://14.17.92.23/live-bvc/768629/live_2051100473_39541482_1500.flv?expires=1669435133&pt=android&deadline=1669435133&len=0&oi=2004595625&platform=android&qn=64&trid=10001bd5679e45ed4ba7941179d86f899b1b&uipk=100&uipv=100&nbs=1&uparams=cdn,deadline,len,oi,platform,qn,trid,uipk,uipv,nbs&cdn=cn-gotcha01&upsig=8427f679796b81cb50e0d56a8df0370e&sk=1304f646dfeb4df8b6e7ff33c167d3ad52dc28d2b434c49b202f46923d102069&p2p_type=8192&src=57345&sl=2&free_type=0&sid=cn-gddg-ct-01-22&chash=1&sche=ban&score=11&usgroup=eg&pp=rtmp&machinezone=ylf&source=onetier&trace=0&site=ee7cdaba98daa4e9a82864e370694cca&order=1&bili_room_id=26157531&_nva_ext_=")=0
D/IJKMEDIA: IjkMediaPlayer_setVideoSurface
D/IJKMEDIA: ijkmp_set_android_surface(surface=0xffcee070)
D/IJKMEDIA: ffpipeline_set_surface()
D/IJKMEDIA: ijkmp_set_android_surface(surface=0xffcee070)=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: IjkMediaPlayer_prepareAsync
D/IJKMEDIA: ijkmp_prepare_async()
I/IJKMEDIA: ===== versions =====
I/IJKMEDIA: SDL_RunThread: [5631] ff_msg_loop
D/IJKMEDIA: message_loop
I/IJKMEDIA: ijkplayer : k0.8.8-43-g30eb9441
I/IJKMEDIA: FFmpeg : ff4.0--ijk0.8.8--20210426--001
I/IJKMEDIA: libavutil : 56.14.100
I/IJKMEDIA: libavcodec : 58.18.100
I/IJKMEDIA: libavformat : 58.12.100
I/IJKMEDIA: libswscale : 5.1.100
I/IJKMEDIA: libswresample: 3.1.100
I/IJKMEDIA: ===== options =====
I/IJKMEDIA: player-opts : framedrop = 10
I/IJKMEDIA: player-opts : enable-accurate-seek = 1
I/IJKMEDIA: player-opts : soundtouch = 1
I/IJKMEDIA: format-opts : ijkapplication = 0xbc5780c0
I/IJKMEDIA: format-opts : ijkiomanager = 0xbc705000
I/IJKMEDIA: ===================
D/IJKMEDIA: FFP_MSG_FLUSH:
D/IJKMEDIA: ijkmp_prepare_async()=0
I/IJKMEDIA: SDL_RunThread: [5632] ff_vout
I/IJKMEDIA: SDL_RunThread: [5633] ff_read
I/tv.danmaku.ijk.media.player.IjkMediaPlayer: onNativeInvoke 1
I/tv.danmaku.ijk.media.player.IjkMediaPlayer: onNativeInvoke 131073
I/tv.danmaku.ijk.media.player.IjkMediaPlayer: onNativeInvoke 131074
I/IJKMEDIA: tcp did open uri = tcp://14.17.92.23:80, ip = 14.17.92.23

W/IJKMEDIA: HTTP error 403 Forbidden
I/tv.danmaku.ijk.media.player.IjkMediaPlayer: onNativeInvoke 2
E/IJKMEDIA: http://14.17.92.23/live-bvc/768629/live_2051100473_39541482_1500.flv?expires=1669435133&pt=android&deadline=1669435133&len=0&oi=2004595625&platform=android&qn=64&trid=10001bd5679e45ed4ba7941179d86f899b1b&uipk=100&uipv=100&nbs=1&uparams=cdn,deadline,len,oi,platform,qn,trid,uipk,uipv,nbs&cdn=cn-gotcha01&upsig=8427f679796b81cb50e0d56a8df0370e&sk=1304f646dfeb4df8b6e7ff33c167d3ad52dc28d2b434c49b202f46923d102069&p2p_type=8192&src=57345&sl=2&free_type=0&sid=cn-gddg-ct-01-22&chash=1&sche=ban&score=11&usgroup=eg&pp=rtmp&machinezone=ylf&source=onetier&trace=0&site=ee7cdaba98daa4e9a82864e370694cca&order=1&bili_room_id=26157531&_nva_ext_=: Server returned 403 Forbidden (access denied)
I/IJKMEDIA: SDL_JNI_DetachThreadEnv: [5633]
D/IJKMEDIA: FFP_MSG_ERROR: 0
E/tv.danmaku.ijk.media.player.IjkMediaPlayer: Error (-10000,0)
D/IJKMEDIA: IjkMediaPlayer_reset
D/IJKMEDIA: IjkMediaPlayer_release
D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0)
D/IJKMEDIA: ffpipeline_set_surface()
D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0)=void
D/IJKMEDIA: ijkmp_shutdown_l()
D/IJKMEDIA: message_loop exit
I/IJKMEDIA: SDL_JNI_DetachThreadEnv: [5631]
I/IJKMEDIA: SDL_JNI_DetachThreadEnv: [5632]
D/IJKMEDIA: ijkmp_shutdown_l()=void
D/IJKMEDIA: IjkMediaPlayer_native_setup
I/IJKMEDIA: av_version_info: ff4.0--ijk0.8.8--20210426--001
I/IJKMEDIA: ijk_version_info: k0.8.8-43-g30eb9441
D/IJKMEDIA: ffpipeline_create_from_android()
D/IJKMEDIA: ijkmp_set_inject_opaque(0x2a7a)
D/IJKMEDIA: ijkmp_set_inject_opaque()=void
D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque(0x2a7a)
D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque()=void
D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()
D/IJKMEDIA: ffpipeline_set_mediacodec_select_callback
D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()=void
D/IJKMEDIA: ijkmp_dec_ref(): ref=0
D/IJKMEDIA: ijkmp_shutdown_l()
D/IJKMEDIA: ijkmp_shutdown_l()=void

D/IJKMEDIA: IjkMediaPlayer_reset
D/IJKMEDIA: IjkMediaPlayer_release
D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0)
D/IJKMEDIA: ffpipeline_set_surface()
D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0)=void
D/IJKMEDIA: ijkmp_shutdown_l()
D/IJKMEDIA: ijkmp_shutdown_l()=void
D/IJKMEDIA: IjkMediaPlayer_native_setup
I/IJKMEDIA: av_version_info: ff4.0--ijk0.8.8--20210426--001
I/IJKMEDIA: ijk_version_info: k0.8.8-43-g30eb9441
D/IJKMEDIA: ffpipeline_create_from_android()
D/IJKMEDIA: ijkmp_set_inject_opaque(0x2ab2)
D/IJKMEDIA: ijkmp_set_inject_opaque()=void
D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque(0x2ab2)
D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque()=void
D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()
D/IJKMEDIA: ffpipeline_set_mediacodec_select_callback
D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()=void
D/IJKMEDIA: ijkmp_dec_ref(): ref=0
D/IJKMEDIA: ijkmp_shutdown_l()
D/IJKMEDIA: ijkmp_shutdown_l()=void
IjkMediaPlayer_release
ijkmp_set_android_surface(surface=0x0)
ffpipeline_set_surface()
ijkmp_set_android_surface(surface=0x0)=void
ijkmp_shutdown_l()
ijkmp_shutdown_l()=void
ijkmp_dec_ref(): ref=0
ijkmp_shutdown_l()
ijkmp_shutdown_l()=void

请问该如何解决?

Contributor guide

No contributing guide indexed for this repository

Research direction

Start at the Android IjkMediaPlayer setDataSource and prepareAsync path shown in the log, using a current DLNA-derived Bilibili live URL to reproduce the HTTP 403 response. Compare the request behavior with the URL's expiry and access parameters; done means identifying a reproducible player-side cause or documenting that the rejection is external to ijkplayer.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.