Coder Social home page Coder Social logo

pili-engineering / pldroidplayer Goto Github PK

View Code? Open in Web Editor NEW
4.6K 206.0 960.0 109.84 MB

PLDroidPlayer 是七牛推出的一款免费的适用于 Android 平台的播放器 SDK,采用全自研的跨平台播放内核,拥有丰富的功能和优异的性能,可高度定制化和二次开发。

Home Page: https://developer.qiniu.com/pili/sdk/1210/the-android-client-sdk

pldroidplayer's Introduction

pldroidplayer's People

Contributors

astatus avatar boleliu avatar chenqian-dev avatar geeklok avatar jhuster avatar jpxiong avatar kevinhuo avatar lawder avatar longbai avatar reikyz avatar tanhx2008 avatar why404 avatar zshbleaker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pldroidplayer's Issues

c包太大

3.4M 3.6M 2.6M 4.6M
app大小直接翻倍了

Doesn't work on Android 6

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/us.inevent.apps.demo-2/base.apk"],nativeLibraryDirectories=[/data/app/us.inevent.apps.demo-2/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libpldroidplayer.so"

请教

请问像那种网络抓取的视频怎样获取播放时间?总时间和当前播放的时间?因为我们的项目是分两种视频,一种是七牛的直播流,一种是网上抓取的视频。我看了里边的API好像没有获取时间的API啊?想请教您一下,谢谢!

Requesting armeabi .so files

We are using PLDroidPlayer along with PLDroidCameraStreaming. For the same reason as mentioned in PLDroidCameraStreaming, could you please also provide armeabi .so files for PLDroidPlayer.

[rtmp]some video no sound only picture

是RTMP点播视频MP4格式,大部正常播放,一部分视频只有画面没有声音。
如果把options.setInteger(AVOptions.KEY_LIVE_STREAMING, 1)设置上去,都可以有声音,但是视频前3秒都会丢失。
options.setInteger(AVOptions.KEY_MEDIACODEC, 0)也没有效果
最新版本1.1.4

[Issue] rtmp stream video not playing in 1.1.3/1.1.4

In 1.1.3, only audio is playing for live rtmp streams, video stream is not available. Working fine in 1.1.2

Logs for Not working (1.1.3)

D/IJKMEDIA: java.nio.ByteBuffer class loaded
I/IJKMEDIA: MediaCodec: API-21
D/IJKMEDIA: android.media.MediaCodec$BufferInfo class loaded
D/IJKMEDIA: android.media.MediaCodec class loaded
D/IJKMEDIA: IjkMediaPlayer_native_init
D/IJKMEDIA: IjkMediaPlayer_native_setup
D/IJKMEDIA: ffpipeline_create_from_android()
D/IJKMEDIA: ijkmp_set_format_callback(0xa0cffbd9, 0x3f6)
D/IJKMEDIA: ijkmp_set_format_callback()=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: ijkmp_set_option_int(overlay-format, 842225234)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: ijkmp_set_option_int(framedrop, 12)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: ijkmp_set_option_int(http-detect-range-support, 0)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setOption
D/IJKMEDIA: ijkmp_set_option(mediacodec, 1)
D/IJKMEDIA: ijkmp_set_option()=void
D/IJKMEDIA: IjkMediaPlayer_setOption
D/IJKMEDIA: ijkmp_set_option(rtmp_buffer, 1000)
D/IJKMEDIA: ijkmp_set_option()=void
D/IJKMEDIA: IjkMediaPlayer_setOption
D/IJKMEDIA: ijkmp_set_option(fflags, nobuffer)
D/IJKMEDIA: ijkmp_set_option()=void
D/IJKMEDIA: IjkMediaPlayer_setOption
D/IJKMEDIA: ijkmp_set_option(get-av-frame-timeout, 2000)
D/IJKMEDIA: ijkmp_set_option()=void
D/IJKMEDIA: IjkMediaPlayer_setOption
D/IJKMEDIA: ijkmp_set_option(fflags, nobuffer)
D/IJKMEDIA: ijkmp_set_option()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: ijkmp_set_option_int(analyzeduration, 1000)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: ijkmp_set_option_int(probesize, 4096)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: ijkmp_set_option_int(rtmp_live, 1)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: ijkmp_set_option_int(rtmp_buffer, 1000)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: ijkmp_set_option_int(live-streaming, 0)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: ijkmp_set_option_int(get-av-frame-timeout, 2000000)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: ijkmp_set_option_int(mediacodec, 1)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: ijkmp_set_option_int(skip_loop_filter, 48)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setOptionLong
D/IJKMEDIA: ijkmp_set_option_int(start-on-prepared, 1)
D/IJKMEDIA: ijkmp_set_option_int()=void
D/IJKMEDIA: IjkMediaPlayer_setDataSourceAndHeaders
D/IJKMEDIA: ijkmp_set_data_source(url="rtmp://xxxxxxxxxxxxx/xxxxxxx/rKyLgqyIw7_Ql9c95uu75_20150929_050500")
D/IJKMEDIA: ijkmp_set_data_source(url="rtmp://xxxxxxxxxxxxx/xxxxxxx/rKyLgqyIw7_Ql9c95uu75_20150929_050500")=0
D/IJKMEDIA: IjkMediaPlayer_setVideoSurface
D/IJKMEDIA: ijkmp_set_android_surface(surface=0xbecaf080)
D/IJKMEDIA: ffpipeline_set_surface()
D/IJKMEDIA: ijkmp_set_android_surface(surface=0xbecaf080)=void
D/IJKMEDIA: IjkMediaPlayer_prepareAsync
D/IJKMEDIA: ijkmp_prepare_async()
I/IJKMEDIA: ===== options =====
I/IJKMEDIA: player-opts : overlay-format = 842225234
I/IJKMEDIA: player-opts : framedrop = 12
I/IJKMEDIA: player-opts : live-streaming = 0
I/IJKMEDIA: player-opts : get-av-frame-timeout = 2000000
I/IJKMEDIA: player-opts : mediacodec = 1
I/IJKMEDIA: player-opts : start-on-prepared = 1
I/IJKMEDIA: format-opts : http-detect-range-support = 0
I/IJKMEDIA: format-opts : mediacodec = 1
I/IJKMEDIA: format-opts : rtmp_live = 1
I/IJKMEDIA: format-opts : get-av-frame-timeout = 2000
I/IJKMEDIA: format-opts : fflags = nobuffer
I/IJKMEDIA: format-opts : analyzeduration = 1000
I/IJKMEDIA: format-opts : probesize = 4096
I/IJKMEDIA: format-opts : rtmp_buffer = 1000
I/IJKMEDIA: codec-opts : skip_loop_filter = 48
I/IJKMEDIA: ===================
I/IJKMEDIA: SDL_RunThread: [17463] ff_msg_loop
D/IJKMEDIA: message_loop
D/IJKMEDIA: FFP_MSG_FLUSH:
I/IJKMEDIA: SDL_RunThread: [17464] ff_vout
D/IJKMEDIA: ijkmp_prepare_async()=0
D/IJKMEDIA: ffpipenode_create_video_output_from_android_mediacodec()
I/IJKMEDIA: SDL_RunThread: [17465] ff_read
W/IJKMEDIA: remove 'timeout' option for rtmp.
E/IJKMEDIA: Option http-detect-range-support not found.
I/IJKMEDIA: max_frame_duration: 3600.000
I/IJKMEDIA: Input #0, flv, from 'rtmp://xxxxxxxxxxxxxx/xxxxxxx/rKyLgqyIw7_Ql9c95uu75_20150929_050500':
I/IJKMEDIA: Metadata:
I/IJKMEDIA: Server :
I/IJKMEDIA: NGINX RTMP (github.com/arut/nginx-rtmp-module)
I/IJKMEDIA: displayWidth :
I/IJKMEDIA: 272
I/IJKMEDIA: displayHeight :
I/IJKMEDIA: 480
I/IJKMEDIA: fps :
I/IJKMEDIA: 30
I/IJKMEDIA: profile :
I/IJKMEDIA: level :
I/IJKMEDIA: Duration:
I/IJKMEDIA: 00:00:00.00
I/IJKMEDIA: , start:
I/IJKMEDIA: 24.278000
I/IJKMEDIA: , bitrate:
I/IJKMEDIA: N/A
I/IJKMEDIA: Stream #0:0
I/IJKMEDIA: : Audio: aac (LC), 44100 Hz, mono, fltp, 32 kb/s
I/IJKMEDIA: SDL_Android_AudioTrack: CHANNEL_OUT_MONO
I/IJKMEDIA: SDL_Android_AudioTrack: ENCODING_PCM_16BIT
I/IJKMEDIA: SDL_Android_AudioTrack_new: init volume as 1.000000/(0.000000,1.000000)
I/IJKMEDIA: AudioCodec: avcodec, aac
D/IJKMEDIA: ijkmp_get_msg: FFP_MSG_PREPARED
D/IJKMEDIA: FFP_MSG_PREPARED:
D/IJKMEDIA: IjkMediaPlayer_start
D/IJKMEDIA: ijkmp_start()
D/IJKMEDIA: ijkmp_get_msg: FFP_REQ_START
D/IJKMEDIA: ijkmp_start()=0
D/IJKMEDIA: ijkmp_get_msg: FFP_REQ_START
I/IJKMEDIA: SDL_RunThread: [17515] ff_audio_dec
I/IJKMEDIA: SDL_RunThread: [17514] ff_aout_android
W/IJKMEDIA: Stream discovered after head already parsed
E/IJKMEDIA: av_read_frame error: fffffffb(?,?,?,?): unknown
I/IJKMEDIA: ffp_toggle_buffering: completed: OK; msg:=End of file
I/IJKMEDIA: ffp_toggle_buffering: error: -5
E/IJKMEDIA: av_read_frame error: fffffffb(?,?,?,?): unknown
I/IJKMEDIA: ffp_toggle_buffering: completed: OK; msg:=End of file
D/IJKMEDIA: FFP_MSG_ERROR: -5
E/tv.danmaku.ijk.media.player.IjkMediaPlayer: Error (-10000,-5)
I/IJKMEDIA: ffp_toggle_buffering: eof
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
E/IJKMEDIA: av_read_frame error: fffffffb(?,?,?,?): unknown
I/IJKMEDIA: ffp_toggle_buffering: completed: OK; msg:=End of file
D/IJKMEDIA: ijkmp_shutdown_l()=void
D/IJKMEDIA: IjkMediaPlayer_native_setup
D/IJKMEDIA: ffpipeline_create_from_android()
D/IJKMEDIA: ijkmp_set_format_callback(0xa0cffbd9, 0x2004ce)
D/IJKMEDIA: ijkmp_set_format_callback()=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_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: ijkmp_dec_ref(): ref=0
D/IJKMEDIA: ijkmp_shutdown_l()
D/IJKMEDIA: ijkmp_shutdown_l()=void

How to handle orientation changes

Hello, I'm trying to figure out how to handle orientation changes. Ideally, when the user moves from portrait mode to landscape mode, the VideoView should stretch to the entire screen. I'm already using both match_parent on width and height, but when I move to landscape mode, it wont stretch (the container expands, but not the video).

Do you guys have any idea how to accomplish that?

Thank you!

getDuration, getCurrentPosition returns invalid value when playing mp4 files

When I call method getDuration or getCurrentPostion in the code like this:

videoPlayView.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(IMediaPlayer mp) {
                long duration = videoPlayView.getDuration();
               .....
            }
        });

It returns values like 10099684316035853.

花屏

刚开始 播放时 会有短暂的 花屏现象

rtmp link does not work

hello in version 1.14 does not work rtmp links
Here is the log
om.pili.android.playerdemo I/VideoView: mUri.getPath:rtmp://93.174.95.87/
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/VideoView: setOptions
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: IjkMediaPlayer_setOptionLong
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int(analyzeduration, 2000000)
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int()=void
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: IjkMediaPlayer_setOptionLong
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int(probesize, 4096)
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int()=void
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: IjkMediaPlayer_setOptionLong
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int(live-streaming, 0)
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int()=void
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: IjkMediaPlayer_setOptionLong
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int(get-av-frame-timeout, 10000000)
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int()=void
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: IjkMediaPlayer_setOptionLong
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int(mediacodec, 0)
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int()=void
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: IjkMediaPlayer_setOptionLong
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int(skip_loop_filter, 48)
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int()=void
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: IjkMediaPlayer_setOptionLong
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int(start-on-prepared, 1)
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_option_int()=void
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: IjkMediaPlayer_setDataSourceAndHeaders
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo V/IJKMEDIA: setDataSource: path rtmp://93.174.95.87/
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_data_source(url="rtmp://93.174.95.87/")
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_data_source(url="rtmp://93.174.95.87/")=0
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: IjkMediaPlayer_setVideoSurface
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_android_surface(surface=0xbef699a0)
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ffpipeline_set_surface()
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_set_android_surface(surface=0xbef699a0)=void
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: IjkMediaPlayer_prepareAsync
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_prepare_async()
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: ===== options =====
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: player-opts : overlay-format = 842225234
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: player-opts : framedrop = 12
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: player-opts : live-streaming = 0
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: player-opts : get-av-frame-timeout = 10000000
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: player-opts : mediacodec = 0
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: player-opts : start-on-prepared = 1
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: format-opts : http-detect-range-support = 0
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: format-opts : analyzeduration = 2000000
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: format-opts : probesize = 4096
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: codec-opts : skip_loop_filter = 48
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo I/IJKMEDIA: ===================
12-10 00:03:36.829 22688-22806/com.pili.android.playerdemo I/IJKMEDIA: SDL_RunThread: [22806] ff_msg_loop
12-10 00:03:36.829 22688-22806/com.pili.android.playerdemo D/IJKMEDIA: message_loop
12-10 00:03:36.829 22688-22806/com.pili.android.playerdemo D/IJKMEDIA: FFP_MSG_FLUSH:
12-10 00:03:36.829 22688-22807/com.pili.android.playerdemo I/IJKMEDIA: SDL_RunThread: [22807] ff_vout
12-10 00:03:36.829 22688-22807/com.pili.android.playerdemo D/IJKMEDIA: ffpipenode_create_video_output_from_android_mediacodec()
12-10 00:03:36.829 22688-22688/com.pili.android.playerdemo D/IJKMEDIA: ijkmp_prepare_async()=0
12-10 00:03:36.829 22688-22808/com.pili.android.playerdemo I/IJKMEDIA: SDL_RunThread: [22808] ff_read
12-10 00:03:36.829 22688-22808/com.pili.android.playerdemo W/IJKMEDIA: remove 'timeout' option for rtmp.
12-10 00:03:36.909 22688-22713/com.pili.android.playerdemo D/OpenGLRenderer: endAllStagingAnimators on 0xb4ff8e00 (ListView) with handle 0xa0417bf0
12-10 00:03:36.929 22688-22688/com.pili.android.playerdemo I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@16ad2fdf time:2408363
12-10 00:03:37.099 22688-22808/com.pili.android.playerdemo E/IJKMEDIA: rtmp://93.174.95.87/: I/O error
12-10 00:03:37.099 22688-22806/com.pili.android.playerdemo D/IJKMEDIA: FFP_MSG_ERROR: -5
12-10 00:03:37.099 22688-22688/com.pili.android.playerdemo E/tv.danmaku.ijk.media.player.IjkMediaPlayer: Error (-10000,-5)

Here is the code
options.setInteger(AVOptions.KEY_MEDIACODEC,1); // 1 -> enable, 0 -> disable
options.setString("rtmp_app","privatestreamplus");
options.setString("rtmp_playpath","axn732?keys=iPPr48LljJQipvLFnx9FAw&keyt=1448278187");
options.setString("rtmp_pageurl","http://privatestream.tv");
options.setString("rtmp_swfurl", "http://privatestream.tv/js/jwplayer.flash.swf");
thanks

有一定几率会闪退

错误信息如下

com.pili.android.playerdemo I/ACodec﹕ can't find wfdsink-exynos-enable
12-02 14:08:45.321 8773-11329/com.pili.android.playerdemo A/ACodec﹕ frameworks/av/media/libstagefright/ACodec.cpp:4334 CHECK_LE( rect.nLeft + rect.nWidth - 1,videoDef->nFrameWidth) failed: 4294967295 vs. 0
12-02 14:08:45.321 8773-11329/com.pili.android.playerdemo A/libc﹕ Fatal signal 5 (SIGTRAP), code 1 in tid 11329 (CodecLooper)

Rotate Video while playing in PLDroidPlayer

The videos captured using MediaRecorder have metadata Rotate=90 or 270. In the Android Video player the videos are properly oriented as per the metadata, but in PLDroidPlayer, they are not.

How can we rotate the video while playing in PLDroidPlayer?

RTMP play without audio

I try play rtmp but just video only, no audio. I use this stream: rtmp://89.248.174.38/live/dskys5 with my Nexus 5, android 6

pcm_s16le Codec

Good day.
First of all, thank you for your project.
I would ask if you could add support for audio codec pcm_s16le.
I know the ffmpeg library supports it but is not compiled by default.
Thank you very much for your time and help.

com.pili.pldroid.player.common.Util#isLiveStreaming

I see that on com.pili.pldroid.player.common.Util#isLiveStreaming we have:

return url.startsWith("rtmp://") || url.endsWith(".m3u8");

i think endsWith(".m3u8") is not alway true. am i wrong?

should we change to "contain"?

protocol not found

Protocol not found
/com.pili.android.playerdemo I/IJKMEDIA﹕ SDL_RunThread: [19156] ff_vout
/com.pili.android.playerdemo E/tv.danmaku.ijk.media.player.IjkMediaPlayer﹕ Error (-10000,-1330794744)

error android studio import demo

Information:Gradle tasks [:app:assembleDebug]
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72200Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42200Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:compileDebugJava
:app:preDexDebug UP-TO-DATE
:app:dexDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/pili/pldroid/player/IMediaController$MediaPlayerControl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
Error:Execution failed for task ':app:dexDebug'.

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_51\bin\java.exe'' finished with non-zero exit value 2
Information:BUILD FAILED
Information:Total time: 3.45 secs
Information:1 error
Information:0 warnings
Information:See complete output in console

播放本地mkv格式视频出错,mp4格式没有问题

以下是能找到的log:
Format aac detected only with low score of 1, misdetection possible!
Option http-detect-range-support not found.
More than one AAC RDB per ADTS frame
is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
Sample rate index in program config element does not match the sample rate index configured by the container.
Inconsistent channel configuration.
get_buffer() failed
Sample rate index in program config element does not match the sample rate index configured by the container.
decode_pce: Input buffer exhausted before END element found
channel element 3.5 is not allocated
channel element 3.5 is not allocated
channel element 3.6 is not allocated
Reserved bit set.

播放.m3u8视频时,拖动进度条,一直处于加载状态,而且视频的长度变为0

版本v1.1.3

 D/IJKMEDIA: ijkmp_get_msg: FFP_MSG_COMPLETED
D/IJKMEDIA: FFP_MSG_COMPLETED:
D/Video: onCompletion:
D/IJKMEDIA: FFP_MSG_BUFFERING_START:
I/tv.danmaku.ijk.media.player.IjkMediaPlayer: Info (701,0)
D/Video: onInfo: 701, extra
D/LiveVideoStateMachine: changeTo: PlayingState --> BufferingState
D/IJKMEDIA: IjkMediaPlayer_getDuration retval=123092
D/IJKMEDIA: ijkmp_get_msg: FFP_MSG_SEEK_COMPLETE
D/IJKMEDIA: FFP_MSG_SEEK_COMPLETE:
D/Video: onSeekComplete:
D/IJKMEDIA: IjkMediaPlayer_getDuration retval=123092
D/IJKMEDIA: IjkMediaPlayer_getDuration retval=123092
 D/IJKMEDIA: IjkMediaPlayer_getDuration retval=123092
D/IJKMEDIA: IjkMediaPlayer_getDuration retval=123092
D/IJKMEDIA: IjkMediaPlayer_getDuration retval=123092
 D/IJKMEDIA: IjkMediaPlayer_getDuration retval=123092
 I/IJKMEDIA: decode_interrupt_cb timeout
 W/IJKMEDIA: Failed to open segment of playlist 0
 W/IJKMEDIA: Failed to open segment of playlist 0
W/IJKMEDIA: Failed to open segment of playlist 0
 W/IJKMEDIA: PES packet size mismatch
 W/art: Native thread exiting without having called DetachCurrentThread (maybe it's going to use a pthread_key_create destructor?): Thread[22,tid=496,Native,Thread*=0x9aedff00,peer=0x137f1760,"Thread-14577"]
W/art: Native thread exiting without having called DetachCurrentThread (maybe it's going to use a pthread_key_create destructor?): Thread[36,tid=514,Native,Thread*=0x90ebc300,peer=0x1382d1c0,"Thread-14573"]
 D/IJKMEDIA: SDL_AMediaCodecJava_stop
I/IJKMEDIA: MediaCodec: enqueue_thread_func: exit: -1
W/art: Native thread exiting without having called DetachCurrentThread (maybe it's going to use a pthread_key_create destructor?): Thread[57,tid=548,Native,Thread*=0x91d05700,peer=0x138875e0,"Thread-14576"]
I/IJKMEDIA: MediaCodec: func_run_sync: exit: 0
 W/art: Native thread exiting without having called DetachCurrentThread (maybe it's going to use a pthread_key_create destructor?): Thread[56,tid=546,Native,Thread*=0x90ebeb00,peer=0x1387f0a0,"Thread-14575"]
W/art: Native thread exiting without having called DetachCurrentThread (maybe it's going to use a pthread_key_create destructor?): Thread[33,tid=497,Native,Thread*=0x91d02f00,peer=0x138080a0,"Thread-14571"]
D/IJKMEDIA: IjkMediaPlayer_getDuration retval=0
D/IJKMEDIA: IjkMediaPlayer_getDuration retval=0
D/IJKMEDIA: IjkMediaPlayer_getDuration retval=0

Can't play Audio format "nellymoser"

I played a rtmp path, and the stream info as below. The picture is normal but no sound.
-----log begin-----
09-07 16:47:33.317: I/IJKMEDIA(14778): Input #0, flv, from 'rtmp://testRtmp.com//1012039365-1103-55ed4be455959':
09-07 16:47:33.317: I/IJKMEDIA(14778): Duration:
09-07 16:47:33.317: I/IJKMEDIA(14778): N/A
09-07 16:47:33.317: I/IJKMEDIA(14778): , start:
09-07 16:47:33.317: I/IJKMEDIA(14778): 0.000000
09-07 16:47:33.317: I/IJKMEDIA(14778): , bitrate:
09-07 16:47:33.317: I/IJKMEDIA(14778): N/A
09-07 16:47:33.322: I/IJKMEDIA(14778): Stream #0:0
09-07 16:47:33.322: I/IJKMEDIA(14778): : Video: h264 (Main), yuv420p(tv), 320x240 [SAR 1:1 DAR 4:3]
09-07 16:47:33.322: I/IJKMEDIA(14778): ,
09-07 16:47:33.322: I/IJKMEDIA(14778): 15.17 fps,
09-07 16:47:33.322: I/IJKMEDIA(14778): 15 tbr,
09-07 16:47:33.322: I/IJKMEDIA(14778): 1k tbn,
09-07 16:47:33.322: I/IJKMEDIA(14778): 30 tbc
09-07 16:47:33.322: I/IJKMEDIA(14778): Stream #0:1
09-07 16:47:33.322: I/IJKMEDIA(14778): : Audio: nellymoser, 22050 Hz, mono
09-07 16:47:33.322: W/IJKMEDIA(14778): No codec could be found with id 86050
-----log end-----

RTMP 直播断流回调问题

当推流方暂停或者网络不好时,播放器会回调onCompletion。 对于开发者可能需要不断尝试创建和重连。
在ijkplayer是已知bug。既然PLDroidPlayer特色是支持RTMP/HLS,希望能对这个问题进行优化处理。

相关问题:
bilibili/ijkplayer#653
bilibili/ijkplayer#193

另外,基于 ijkplayer 的版本似乎有些旧。

Source Code

Hi,

PLDroidPlayer is great. I would like to help you improve your app. Is there anyway I can get access to source code?

Thanks for your work,

有对应的接口文档么?

我想实现播放器基本的快进,快退,音量等功能。不知道这些七牛是否已经提供,还是说都需要完全自己实现。这些部分有对应的文档么?

rtmp is supported?

08-17 15:09:48.580 30581-4191/com.pili.android.playerdemo W/IJKMEDIA﹕ remove 'timeout' option for rtmp.
08-17 15:09:48.580 30581-4191/com.pili.android.playerdemo W/IJKMEDIA﹕ Detected librtmp style URL parameters, these aren't supported by the libavformat internal RTMP handler currently enabled. See the documentation for the correct way to pass parameters.
08-17 15:09:48.650 30581-30581/com.pili.android.playerdemo I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@1803e8eb time:80199841
08-17 15:09:48.670 30581-30581/com.pili.android.playerdemo V/ActivityThread﹕ updateVisibility : ActivityRecord{c6cf643 token=android.os.BinderProxy@253103fc {com.pili.android.playerdemo/com.pili.pldroid.playerdemo.MainActivity}} show : false
08-17 15:09:48.700 30581-30581/com.pili.android.playerdemo W/IInputConnectionWrapper﹕ getTextBeforeCursor on inactive InputConnection
08-17 15:09:48.700 30581-30581/com.pili.android.playerdemo W/IInputConnectionWrapper﹕ getExtractedText on inactive InputConnection
08-17 15:09:48.870 30581-30581/com.pili.android.playerdemo W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection
08-17 15:09:48.940 30581-4191/com.pili.android.playerdemo E/IJKMEDIA﹕ rtmp://31.220.0.155/privatestream/ playpath=launo1?keys=g5tlrvVt3J87f6Rb9u5bGw&keyt=1438923315 swfUrl=http://privatestream.tv/js/jwplayer.flash.swf live=1 pageUrl=http://privatestream.tv/player?streamname=launo1&width=800&height=600: I/O error
08-17 15:09:48.940 30581-4188/com.pili.android.playerdemo D/IJKMEDIA﹕ FFP_MSG_ERROR: -5
08-17 15:09:48.940 30581-30581/com.pili.android.playerdemo E/tv.danmaku.ijk.media.player.IjkMediaPlayer﹕ Error (-10000,-5)
08-17 15:09:48.940 30581-30581/com.pili.android.playerdemo D/VideoView﹕ Error: -10000,-5
08-17 15:09:48.940 30581-30581/com.pili.android.playerdemo D/VideoPlayerActivity﹕ onError what=-10000, extra=-5

集成到项目里面报错了,帮忙看下

Failed to register native method tv.danmaku.ijk.media.player.IjkMediaPlayer._setDataSource(Ltv/danmaku/ijk/media/player/misc/IMediaDataSource;)V in /data/app/com.xlingmao.maomeng-1/base.apk:classes2.dex
04-14 11:18:32.957 16092-16092/? A/art: art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: JNI FindClass called with pending exception 'java.lang.NoSuchMethodError' thrown in java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String):-2
in call to FindClass from java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.