Giter VIP home page Giter VIP logo

tsingsee / easyplayer Goto Github PK

View Code? Open in Web Editor NEW
584.0 58.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/

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

easyplayer's Introduction

EasyPlayer系列播放器项目

EasyPlayer是由TSINGSEE | 开放平台开发和维护的一个流媒体播放器系列项目,随着多年不断的发展和迭代,不断基于成功的实践经验,发展出包括有:

  • EasyPlayer RTSP播放器(Windows / Android / iOS)

  • EasyPlayer RTMP播放器(Windows / Android / iOS)

  • EasyPlayerPro 全功能播放器(Windows / Android / iOS)

  • EasyPlayer.js H5播放器(全平台支持)

EasyPlayer项目集群说明

√ EasyPlayer-RTSP

EasyPlayer-RTSP是一套RTSP播放器项目,目前包括有Windows、Android、iOS多个分支,主要用于RTSP专用播放,比大部分通用播放器更加精炼,而且延时控制方面非常优秀,非常适用于安防行业:

√ EasyPlayer-RTMP

EasyPlayer-RTMP是一套RTMP播放器项目,目前包括有Windows、Android、iOS多个分支,主要用于RTMP专用播放,比大部分ffmpeg封装类型播放器更加精炼,而且延时控制方面非常优秀,自定义扩展RTMP H.265支持:

√ EasyPlayerPro

EasyPlayerPro是一款全功能的流媒体播放器,支持RTSP、RTMP、HTTP、HLS、UDP、RTP、File等多种流媒体协议播放、支持本地文件播放,支持本地抓拍、本地录像、播放旋转、多屏播放、倍数播放等多种功能特性,核心基于ffmpeg,稳定、高效、可靠、可控,支持Windows、Android、iOS三个平台,目前在多家教育、安防、行业型公司,都得到的应用,广受好评!

√ EasyPlayer.js

EasyPlayer.js是EasyPlayer H5版,支持http、rtmp、flv、hls等多种协议,支持全平台、全终端(Windows、Linux、Android、iOS)播放;

有了EasyPlayerPro,为什么我们还要开发EasyPlayer-RTSP和EasyPlayer-RTMP?

EasyPlayerPro虽然支持了几乎所有的流媒体协议,但是在很多场景和需求下面(例如:SDK包大小、自定义协议、数据加密),EasyPlayerPro的定制成本比较高,灵活程度没有EasyPlayer-RTSP和EasyPlayer-RTMP专用播放器的灵活程度高,EasyPlayerPro考虑的是通用性,而且专用播放器考虑的是定制性(例如EasyPlayer-RTMP将要定制H.265,这个是其他RTMP通用播放器都不能支持的),同样,在起播等方面,专用播放器更优!

技术支持


✈ 更多视频解决方案资源汇总

© TSINGSEE Team:http://www.tsingsee.com

青犀TSINGSEE

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

急:请问 .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]"}

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

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

有群晖插件吗?

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

4K视频流异常

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

报错

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

关于easyplayer的recording功能

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

不能播放?

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

能出一个英文版吗

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

硬解码怎么回调出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);`

Android版本不能播放MPEG4视频流

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

需求:停止播放时不清屏

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

硬解会卡顿

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

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.