PLDroidPlayer 将不再更新,如需继续使用七牛的播放器产品,请移步QPlayer2, QPlayer2将带来全新的播放体验
IOS:https://github.com/pili-engineering/QPlayer2-IOS
Android:https://github.com/pili-engineering/QPlayer2-Android
PLDroidPlayer 是七牛推出的一款免费的适用于 Android 平台的播放器 SDK,采用全自研的跨平台播放内核,拥有丰富的功能和优异的性能,可高度定制化和二次开发。
Home Page: https://developer.qiniu.com/pili/sdk/1210/the-android-client-sdk
PLDroidPlayer 将不再更新,如需继续使用七牛的播放器产品,请移步QPlayer2, QPlayer2将带来全新的播放体验
IOS:https://github.com/pili-engineering/QPlayer2-IOS
Android:https://github.com/pili-engineering/QPlayer2-Android
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.
是RTMP点播视频MP4格式,大部正常播放,一部分视频只有画面没有声音。
如果把options.setInteger(AVOptions.KEY_LIVE_STREAMING, 1)设置上去,都可以有声音,但是视频前3秒都会丢失。
options.setInteger(AVOptions.KEY_MEDIACODEC, 0)也没有效果
最新版本1.1.4
开始播放视频前一两秒,视频会花掉,背景变黑,人物看不清。
播放一两秒后正常。
测试Url:http://imgtest.chengweiapp.com/febc5e4474384d568a9300d9ae32bfe7.mp4
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
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
Please include the following in next release in PlayerCode()
EXTRA_CODE_CONNECTION_TIMEOUT = -110
表示也遇到了rtmp播放时无声音
发现如果是h264编码M4V封包的就会有这个问题
看到有好几个人提类似,还没人解决,又没有源码……
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.
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!
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
.
我想实现播放器基本的快进,快退,音量等功能。不知道这些七牛是否已经提供,还是说都需要完全自己实现。这些部分有对应的文档么?
如题
以下是能找到的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.
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)
刚开始 播放时 会有短暂的 花屏现象
播放本地视频有声音有图像,但是播放rtmp直播流就只有图像没有声音啊,咋弄的?
使用的1.14版本
直播流用的是red5,
用其他flash播放同一个 从red5出来直播流,是有声音的,但用PLDroidPlayer在手机里播放 就只有图像没有声音。
手机是note5,
版本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
demo无法播放这个,我用暴风影音是可以打开的。这是链接 http://7xpa0v.media1.z0.glb.clouddn.com/0b0a4552f28eb98ba577f71f6e0724eb.mp4
视频截屏
录制的时候16:9,播放屏幕为16:10会有白边
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-----
请问像那种网络抓取的视频怎样获取播放时间?总时间和当前播放的时间?因为我们的项目是分两种视频,一种是七牛的直播流,一种是网上抓取的视频。我看了里边的API好像没有获取时间的API啊?想请教您一下,谢谢!
3.4M 3.6M 2.6M 4.6M
app大小直接翻倍了
当推流方暂停或者网络不好时,播放器会回调onCompletion。 对于开发者可能需要不断尝试创建和重连。
在ijkplayer是已知bug。既然PLDroidPlayer特色是支持RTMP/HLS,希望能对这个问题进行优化处理。
相关问题:
bilibili/ijkplayer#653
bilibili/ijkplayer#193
另外,基于 ijkplayer 的版本似乎有些旧。
E/IJKMEDIA: http://127.0.0.1:80/34406.mkv: Invalid data found when processing input
I/IJKMEDIA: SDL_JNI_DetachThreadEnv: [24396]
E/tv.danmaku.ijk.media.player.IjkMediaPlayer: Error (-10000,-1094995529)
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?
Hi, as title mentioned, can you share with the x86 .so file?
您好,我成功编译了PLDroidPlayerDemo,但视频播放时好像放大了,只能显示部分,请问这是什么原因?
该播放器是否支付字幕?
KEY_MEDIACODEC
KEY_BUFFER_TIME
KEY_GET_AV_FRAME_TIMEOUT
KEY_FFLAGS
KEY_LIVE_STREAMING 为什么此参数不设置。打开的速度明显提升
The file link
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
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)
错误信息如下
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)
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
Even if metadata rotate=90 the video is not rotated
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"
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"?
如果用这个框架播放本地视频怎样获得视频的播放进度?
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
播放时出现 I/O error
thanks for your project,
Is it possible support arm64 and x86 device?
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,
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.