Git Product home page Git Product logo

tsingsee / easyplayer Goto Github PK

View Code? Open in Web Editor NEW
584.0 584.0 220.0 88.83 MB

An free, elegant, simple, fast RTSP/RTMP/HLS/HTTP Player.EasyPlayer support RTSP(RTP over TCP/UDP)version& RTMP version & Pro version,cover all kinds of streaming media!EasyPlayer是一款免费、精炼、高效、稳定的流媒体播放器,分为RTSP版、RTMP版和Pro版本,支持各种各样的流媒体音视频播放!

Home Page: http://www.pvale.com/

android-player easydarwin easyplayer hls-player ios-player media-player rtmp-player rtsp-player

easyplayer's People

Contributors

babosa avatar jinlong0813 avatar kidloserme avatar swordtwelve 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

easyplayer's Issues

有群晖插件吗?

如果做成群晖插件,远程随时录制直播视频到家里的NAS就方便了。

Android版本不能播放MPEG4视频流

@jiaozebo 安卓版本不能播放MPEG4的视频流,如果不能播,能够在上层给出提示:视频格式不支持,示例播放url:rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp

4K视频流异常

4K视频流,无论软解还是硬解,解码很慢。使用硬解,跑一小会儿提示“超出缓冲区大小”,进而会有段错误。

硬解会卡顿

用硬解的方式调用open_stream 方法后,摄像机转动的时候,会卡顿,卡顿的时候,回调参数中的 的 type(视频帧类型) 值为1 ,
请问这个卡顿问题应该如何处理 ?
用软解的时候不存在这个问题,

硬解码怎么回调出yuv数据呢?

您好,请教一下,使用安卓api硬解码怎么回调出yuv 数据呢?

` do {
if (frameInfo != null) {
byte[] pBuf = frameInfo.buffer;
index = mCodec.dequeueInputBuffer(10);
if (index >= 0) {
ByteBuffer buffer = mCodec.getInputBuffers()[index];
buffer.clear();
if (pBuf.length > buffer.remaining()) {
mCodec.queueInputBuffer(index, 0, 0, frameInfo.stamp, 0);
} else {
buffer.put(pBuf, frameInfo.offset, frameInfo.length);
mCodec.queueInputBuffer(index, 0, buffer.position(), frameInfo.stamp + differ, 0);
}
frameInfo = null;
}
}
index = mCodec.dequeueOutputBuffer(info, 10); //
/* //此处回调数据出去
if (index > 0) {
Image image = mCodec.getOutputImage(index);
if (image != null) {
byte[] dataFromImage = getDataFromImage(image, COLOR_FormatNV21);
if (i420callback != null) {
i420callback.onI420Data(dataFromImage, frameInfo);
}
}

                            }*/


                            switch (index) {
                                case MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED:
                                    Log.i(TAG, "INFO_OUTPUT_BUFFERS_CHANGED");
                                    outputBuffers = mCodec.getOutputBuffers();

                                    break;
                                case MediaCodec.INFO_OUTPUT_FORMAT_CHANGED:
                                    MediaFormat mf = mCodec.getOutputFormat();
                                    mCodec.getCodecInfo();
                                    Log.i(TAG, "INFO_OUTPUT_FORMAT_CHANGED :" + mf);
                                    break;
                                case MediaCodec.INFO_TRY_AGAIN_LATER:
                                    // 输出为空
                                    break;
                                default:
                                    // 后补
                                    if(outputBuffers!=null){
                                        ByteBuffer outputBuffer = outputBuffers[index];
                                        byte[] arr = new byte[outputBuffer.remaining()];
                                        outputBuffer.get(arr);
                                        //i420callback.onI420Data(arr,frameInfo);
                                        Log.d("aaa",arr.length+"");
                                    }
                                    // -1表示为第一帧数据
                                    long newSleepUs = -1;
                                    boolean firstTime = previewStampUs == 0l;
                                    if (!firstTime) {
                                        long sleepUs = (info.presentationTimeUs - previewStampUs);
                                        if (sleepUs > 50000) {
                                            // 时间戳异常,可能服务器丢帧了。
                                            Log.w(TAG, "sleep time.too long:" + sleepUs);
                                            sleepUs = 50000;
                                        }
                                        {
                                            long cache = mNewestStample - previewStampUs;
                                            newSleepUs = fixSleepTime(sleepUs, cache, 0);
                                        }
                                    }
                                    previewStampUs = info.presentationTimeUs;

                                    if (false && Build.VERSION.SDK_INT >= 21) {

                                        Log.d(TAG, String.format("releaseoutputbuffer:%d,stampUs:%d", index, previewStampUs));
                                        mCodec.releaseOutputBuffer(index, previewStampUs);
                                    } else {
                                        if (newSleepUs < 0) {
                                            newSleepUs = 0;
                                        }

// Log.i(TAG,String.format("sleep:%d", newSleepUs/1000));
Thread.sleep(newSleepUs / 1000);
mCodec.releaseOutputBuffer(index, true);
}
if (firstTime) {
Log.i(TAG, String.format("POST VIDEO_DISPLAYED!!!"));
ResultReceiver rr = mRR;
if (rr != null) rr.send(RESULT_VIDEO_DISPLAYED, null);
}
}
} while (frameInfo != null || index < MediaCodec.INFO_TRY_AGAIN_LATER);`

关于easyplayer的recording功能

我在利用Android的easypusher进行直播推流,然后利用windows版本的easyplayer进行播放,可以成功播放,但是利用recording功能保存下来的视频只有画面没有声音,不知道这是什么原因造成的。

急:请问 .m3u8流视频,在ios浏览器端,播放时报错e._msectl.appendInitSegment,是什么原因?怎么解决?

报错详细信息

"Uncaught (in promise) " {name: "TypeError", message: "null is not an object (evaluating 'e._msectl.appendInitSegment')", stack: "@http://localhost:8080/static/EasyPlayer/EasyPlayer-element.min.js:1:1402407\n@http://localhost:8080/static/EasyPlayer/EasyPlayer-element.min.js:1:500182\n@http://localhost:8080/static/EasyPlayer/EasyPlayer-element.min.js:1:1377196\npromiseReactionJob@[native code]"}

不能播放?

Error: rtsp://本机IP:554/stream0.sdp: EasyRTSP_GetErrCode:-10057 :Failed to get RTSP OPTIONS: URL is not of the form "rtsp://"

这个库怎么播放本地mp4文件啊!!!?

我已经会用他来播放rtsp流媒体了,但不知道怎么播放本地mp4文件,难道还要下vlc库来播放吗,这样好麻烦,还有,播放rtsp的时候本地目录会生成很多text0.h264的大文件,空间已经撑爆了,怎么不让他生成啊

报错

b5541470-573a-42fe-9adb-1155138af4aa:1 Uncaught TypeError: u is not a function
at b5541470-573a-42fe-9adb-1155138af4aa:1

能出一个英文版吗

只有很少的文字,能不能出个语言选择,这样英文版也可以用在其他国家。我测试了不少RTSP的播放工具,感觉这个不错,就是没有英文版本。

需求:停止播放时不清屏

先播放第一路流,
再播放第二路流,
希望是平滑切换,就像电影场景一样。目前是必须先stop,再openstream,这样会在中间黑屏,很难看。如何解决这个问题?

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.