Closed lm3515 closed 5 years ago
希望有大神可以知道一下,是不是需要做相应的配置?
这个是ffmpeg 编译时没有打开 ftp 格式支持, 或者 ftp 没有加入到白名单中。
@lm3515
搜这一行,加上 ftp
setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "protocol_whitelist", "async,cache,crypto,file,http,https,ijkhttphook,ijkinject,ijklivehook,ijklongurl,ijksegment,ijktcphook,pipe,rtp,tcp,tls,udp,ijkurlhook,data");
编译增加这个
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=ftp
试试
这个是ffmpeg 编译时没有打开 ftp 格式支持, 或者 ftp 没有加入到白名单中。
@lm3515
搜这一行,加上
ftp
setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "protocol_whitelist", "async,cache,crypto,file,http,https,ijkhttphook,ijkinject,ijklivehook,ijklongurl,ijksegment,ijktcphook,pipe,rtp,tcp,tls,udp,ijkurlhook,data");
编译增加这个
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=ftp
试试
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=ftp 这个已经加上了, setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "protocol_whitelist", "async,cache,crypto,file,http,https,ijkhttphook,ijkinject,ijklivehook,ijklongurl,ijksegment,ijktcphook,pipe,rtp,tcp,tls,udp,ijkurlhook,data"); 这段代码全局搜索都没有搜到,目前只是增加了编译配置,重新编译了没有效果,ftp还是不支持
setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "protocol_whitelist", "async,cache,crypto,file,http,https,ijkhttphook,ijkinject,ijklivehook,ijklongurl,ijksegment,ijktcphook,pipe,rtp,tcp,tls,udp,ijkurlhook,data");
@lm3515 这个是在k0.7.6 上的一行代码,你可以试试在你用的版本也加上这个。
@baishuai 这个代码在哪个文件?哪个方法里面,能贴出来吗 非常感谢
@lm3515 你切换一下分支就能搜出来了
@baishuai 下午把k0.7.6下载下来,编译了也没发现有这段代码
已解决,可以播放了,谢谢大家
大佬,你好,请问iOS IJKPlayer播放mp4失败 是怎么解决的?
老哥,怎么搞好的
2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_reset
2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_release
2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0)
2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: ffpipeline_set_surface()
2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0)=void
2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_shutdown_l()
2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_shutdown_l()=void
2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_native_setup
2023-01-14 00:25:41.965 20996-21040/com.example.myapplication I/IJKMEDIA: av_version_info: ff3.4--ijk0.8.7--20180103--001
2023-01-14 00:25:41.966 20996-21040/com.example.myapplication I/IJKMEDIA: ijk_version_info: k0.8.8
2023-01-14 00:25:41.966 20996-21040/com.example.myapplication D/IJKMEDIA: ffpipeline_create_from_android()
2023-01-14 00:25:41.966 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_inject_opaque(0x2e52)
2023-01-14 00:25:41.966 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_inject_opaque()=void
2023-01-14 00:25:41.966 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque(0x2e52)
2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque()=void
2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()
2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ffpipeline_set_mediacodec_select_callback
2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()=void
2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_dec_ref(): ref=0
2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_shutdown_l()
2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_shutdown_l()=void
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_setOptionLong
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_setOptionLong
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_setOption
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_setDataSourceAndHeaders
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication V/IJKMEDIA: setDataSource: path ftp://test:test@192.168.0.101:5656/swithun/mmm.mp4
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_data_source(url="ftp://test:test@192.168.0.101:5656/swithun/mmm.mp4")
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_data_source(url="ftp://test:test@192.168.0.101:5656/swithun/mmm.mp4")=0
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_setVideoSurface
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_android_surface(surface=0xc5a87020)
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ffpipeline_set_surface()
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_android_surface(surface=0xc5a87020)=void
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_prepareAsync
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_prepare_async()
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: ===== versions =====
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: ijkplayer : k0.8.8
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: FFmpeg : ff3.4--ijk0.8.7--20180103--001
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: libavutil : 55.78.100
2023-01-14 00:25:41.968 20996-21107/com.example.myapplication I/IJKMEDIA: SDL_RunThread: [21107] ff_msg_loop
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: libavcodec : 57.107.100
2023-01-14 00:25:41.968 20996-21107/com.example.myapplication D/IJKMEDIA: message_loop
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: libavformat : 57.83.100
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: libswscale : 4.8.100
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: libswresample: 2.9.100
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: ===== options =====
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: format-opts : ijkapplication = -952169280
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: format-opts : ijkiomanager = -1001050368
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: format-opts : reconnect = 1
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: format-opts : dns_cache_clear = 1
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: format-opts : protocol_whitelist = async,cache,crypto,file,http,https,ijkhttphook,ijkinject,ijklivehook,ijklongurl,ijksegment,ijktcphook,pipe,rtp,tcp,tls,udp,ijkurlhook,data,ftp
2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: ===================
2023-01-14 00:25:41.969 20996-21107/com.example.myapplication D/IJKMEDIA: FFP_MSG_FLUSH:
2023-01-14 00:25:41.969 20996-21108/com.example.myapplication I/IJKMEDIA: SDL_RunThread: [21108] ff_vout
2023-01-14 00:25:41.969 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_prepare_async()=0
2023-01-14 00:25:41.969 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_start
2023-01-14 00:25:41.969 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_start()
2023-01-14 00:25:41.969 20996-21109/com.example.myapplication I/IJKMEDIA: SDL_RunThread: [21109] ff_read
2023-01-14 00:25:41.969 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_start()=-3
2023-01-14 00:25:41.971 20996-21109/com.example.myapplication I/IJKMEDIA: Add dns cache hostname = 192.168.0.101, ip =
2023-01-14 00:25:41.983 20996-21109/com.example.myapplication I/IJKMEDIA: Hit DNS cache hostname = 192.168.0.101
2023-01-14 00:25:42.887 20996-21032/com.example.myapplication I/e.myapplicatio: ProcessProfilingInfo new_methods=8045 is saved saved_to_disk=1 resolve_classes_delay=8000
白名单我增加了ftp
编译的时候config也增加了ftp
但是,日志也没见报错,什么反应也没有,ftp连接是没问题的,直接电脑点击还能下载文件,是个mp4
老哥,怎么搞好的
2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_reset 2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_release 2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0) 2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: ffpipeline_set_surface() 2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0)=void 2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_shutdown_l() 2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_shutdown_l()=void 2023-01-14 00:25:41.965 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_native_setup 2023-01-14 00:25:41.965 20996-21040/com.example.myapplication I/IJKMEDIA: av_version_info: ff3.4--ijk0.8.7--20180103--001 2023-01-14 00:25:41.966 20996-21040/com.example.myapplication I/IJKMEDIA: ijk_version_info: k0.8.8 2023-01-14 00:25:41.966 20996-21040/com.example.myapplication D/IJKMEDIA: ffpipeline_create_from_android() 2023-01-14 00:25:41.966 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_inject_opaque(0x2e52) 2023-01-14 00:25:41.966 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_inject_opaque()=void 2023-01-14 00:25:41.966 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque(0x2e52) 2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque()=void 2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback() 2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ffpipeline_set_mediacodec_select_callback 2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()=void 2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_dec_ref(): ref=0 2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_shutdown_l() 2023-01-14 00:25:41.967 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_shutdown_l()=void 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_setOptionLong 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_setOptionLong 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_setOption 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_setDataSourceAndHeaders 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication V/IJKMEDIA: setDataSource: path ftp://test:test@192.168.0.101:5656/swithun/mmm.mp4 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_data_source(url="ftp://test:test@192.168.0.101:5656/swithun/mmm.mp4") 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_data_source(url="ftp://test:test@192.168.0.101:5656/swithun/mmm.mp4")=0 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_setVideoSurface 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_android_surface(surface=0xc5a87020) 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ffpipeline_set_surface() 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_set_android_surface(surface=0xc5a87020)=void 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_prepareAsync 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_prepare_async() 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: ===== versions ===== 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: ijkplayer : k0.8.8 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: FFmpeg : ff3.4--ijk0.8.7--20180103--001 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: libavutil : 55.78.100 2023-01-14 00:25:41.968 20996-21107/com.example.myapplication I/IJKMEDIA: SDL_RunThread: [21107] ff_msg_loop 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: libavcodec : 57.107.100 2023-01-14 00:25:41.968 20996-21107/com.example.myapplication D/IJKMEDIA: message_loop 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: libavformat : 57.83.100 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: libswscale : 4.8.100 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: libswresample: 2.9.100 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: ===== options ===== 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: format-opts : ijkapplication = -952169280 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: format-opts : ijkiomanager = -1001050368 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: format-opts : reconnect = 1 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: format-opts : dns_cache_clear = 1 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: format-opts : protocol_whitelist = async,cache,crypto,file,http,https,ijkhttphook,ijkinject,ijklivehook,ijklongurl,ijksegment,ijktcphook,pipe,rtp,tcp,tls,udp,ijkurlhook,data,ftp 2023-01-14 00:25:41.968 20996-21040/com.example.myapplication I/IJKMEDIA: =================== 2023-01-14 00:25:41.969 20996-21107/com.example.myapplication D/IJKMEDIA: FFP_MSG_FLUSH: 2023-01-14 00:25:41.969 20996-21108/com.example.myapplication I/IJKMEDIA: SDL_RunThread: [21108] ff_vout 2023-01-14 00:25:41.969 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_prepare_async()=0 2023-01-14 00:25:41.969 20996-21040/com.example.myapplication D/IJKMEDIA: IjkMediaPlayer_start 2023-01-14 00:25:41.969 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_start() 2023-01-14 00:25:41.969 20996-21109/com.example.myapplication I/IJKMEDIA: SDL_RunThread: [21109] ff_read 2023-01-14 00:25:41.969 20996-21040/com.example.myapplication D/IJKMEDIA: ijkmp_start()=-3 2023-01-14 00:25:41.971 20996-21109/com.example.myapplication I/IJKMEDIA: Add dns cache hostname = 192.168.0.101, ip = 2023-01-14 00:25:41.983 20996-21109/com.example.myapplication I/IJKMEDIA: Hit DNS cache hostname = 192.168.0.101 2023-01-14 00:25:42.887 20996-21032/com.example.myapplication I/e.myapplicatio: ProcessProfilingInfo new_methods=8045 is saved saved_to_disk=1 resolve_classes_delay=8000
白名单我增加了ftp 编译的时候config也增加了ftp
但是,日志也没见报错,什么反应也没有,ftp连接是没问题的,直接电脑点击还能下载文件,是个mp4
@baishuai @lm3515
最近在弄一个项目,要求播放局域网内U盘内的视频,采用FTP协议,我使用了ijkplayer 0.8.8,无法播放ftp文件服务器上的视频、音频 日志如下:
av_version_info: ff3.4--ijk0.8.7--20180103--001 ijk_version_info: k0.8.8 ijkmp_set_inject_opaque(0x281f01fc0) ijkmp_set_inject_opaque()=void ijkmp_set_ijkio_inject_opaque(0x281f01fc0) ijkmp_set_ijkio_inject_opaque()=void 2019-06-04 17:44:29.112610+0800 MyTV[7444:1566780] OK setup GL ijkmp_ios_set_view(glView=0x1035b5c00) ijkmp_ios_set_view(glView=0x1035b5c00)=void 2019-06-04 17:44:29.119304+0800 MyTV[7444:1566780] invalidateRenderBuffer 2019-06-04 17:44:29.121881+0800 MyTV[7444:1568504] IJKSDLGLView: setupDisplay not ready ijkmp_set_data_source(url="/ftp:/192.168.0.154/sda1/20190520205833.mp4") ijkmp_set_data_source(url="/ftp:/192.168.0.154/sda1/20190520205833.mp4")=0 ijkmp_prepare_async() ===== versions ===== [FFPlayer @ 0x1040c6000] ijkplayer : k0.8.8 [FFPlayer @ 0x1040c6000] FFmpeg : ff3.4--ijk0.8.7--20180103--001 [FFPlayer @ 0x1040c6000] libavutil : 55.78.100 [FFPlayer @ 0x1040c6000] libavcodec : 57.107.100 [FFPlayer @ 0x1040c6000] libavformat : 57.83.100 [FFPlayer @ 0x1040c6000] libswscale : 4.8.100 [FFPlayer @ 0x1040c6000] libswresample: 2.9.100 ===== options ===== [FFPlayer @ 0x1040c6000] player-opts : video-pictq-size = 3 [FFPlayer @ 0x1040c6000] player-opts : overlay-format = fcc-_es2 [FFPlayer @ 0x1040c6000] player-opts : max-fps = 30 [FFPlayer @ 0x1040c6000] player-opts : framedrop = 0 [FFPlayer @ 0x1040c6000] player-opts : videotoolbox-max-frame-width = 960 [FFPlayer @ 0x1040c6000] player-opts : videotoolbox = 0 [FFPlayer @ 0x1040c6000] player-opts : start-on-prepared = 1 [FFPlayer @ 0x1040c6000] format-opts : ijkapplication = 4350940304 [FFPlayer @ 0x1040c6000] format-opts : ijkiomanager = 4351291328 [FFPlayer @ 0x1040c6000] format-opts : user-agent = ijkplayer [FFPlayer @ 0x1040c6000] format-opts : auto_convert = 0 [FFPlayer @ 0x1040c6000] format-opts : timeout = 30000000 [FFPlayer @ 0x1040c6000] format-opts : reconnect = 1 [FFPlayer @ 0x1040c6000] format-opts : safe = 0
ijkmp_prepare_async()=0 2019-06-04 17:44:29.198838+0800 MyTV[7444:1566780] invalidateRenderBuffer 2019-06-04 17:44:29.199032+0800 MyTV[7444:1569462] IJKSDLGLView: setupDisplay not ready [NULL @ 0x1040a6e00] Opening '/ftp:/192.168.0.154/sda1/20190520205833.mp4' for reading [file @ 0x103520b40] Setting default whitelist 'file,crypto' /ftp:/192.168.0.154/sda1/20190520205833.mp4: No such file or directory 2019-06-04 17:44:29.243437+0800 MyTV[7444:1566780] FFP_MSG_ERROR: 0 2019-06-04 17:44:29.244299+0800 MyTV[7444:1566780] IJKMPMoviePlayBackStateDidChange 2: paused 2019-06-04 17:44:29.244499+0800 MyTV[7444:1566780] playbackStateDidChange: IJKMPMovieFinishReasonPlaybackError: 1