• Stars
    star
    197
  • Rank 197,722 (Top 4 %)
  • Language
  • Created almost 7 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Pure JavaScrip HTML5 live stream player

NodePlayer.js

Pure JavaScrip live stream player, 100% written in c/c++. 😂

商用优化版

https://www.nodemedia.cn/product/nodeplayer-js

  • 商用版现已支持http-flv
  • 商用版现已支持wasm版本,性能提升一倍
  • 商用版现已支持SIMD版本,性能进一步提升
  • 商用版现已支持WebWorker多画面多核解码
  • 商用版现已支持WebCodecs硬解码

特性

  • 仅支持WebSocket的传输协议
  • 仅支持Flv封装
  • 首屏启动低于500毫秒,延迟低于2秒
  • 支持H.264/H.265 视频软解码
  • 支持AAC/MP3/NellyMoser 音频软解码
  • 支持iOS/Android原生浏览器或WebView控件
  • 支持微信、QQ内部打开
  • 视频渲染 WebGL
  • 音频播放 WebAudio
  • 全解码版js小于3M
  • 支持平铺,等比缩放,拉伸填充的视频缩放模式

问题

解码性能低下,如何开启ffmpeg的SIMD
优化思路:Emscripten不能编译.S文件,也不支持inline SIMD assembly。但是支持C API的 SSE1, SSE2, SSE3, SSSE3指令集。对h264addpx_template.c,h264chroma_template.c, h264dsp_template.c, h264idct_template.c, h264pred_template.c, h264qpel_template.c 进行SIMD移植。AAC,HEVC解码器也是相同原理。   官方文档说编译ARM NEON指令集(#include <arm_neon.h>)代码还不支持,但也可能行。   Intel有一个项目ARM_NEON_2_x86_SSE 是否可以考虑使用NEON的API进行移植开发,后期如果Emscripte开始支持NEON则可自动支持。
emscripten/vector.h 中直接映射了SIMD.js的API,根据这篇介绍 ,应该是同时支持X86平台的SSE和ARM平台的NEON指令集。那直接使用这个api来优化应该更好一点。

支持的服务端

Node-Media-Server

开发历程

  • WebSocket网络传输
  • FLV解析
  • 音频解码与播放
  • 视频解码与渲染
  • 兼容性测试
  • 性能优化

与flv.js比较

img

微信内打开

img

More Repositories

1

Node-Media-Server

A Node.js implementation of RTMP/HTTP-FLV/WS-FLV/HLS/DASH/MP4 Media Server
JavaScript
5,956
star
2

nginx-rtmp-win32

Nginx-rtmp-module Windows builds.
XSLT
982
star
3

libyuv-android

Build Google libyuv with NDK for Android
C++
234
star
4

Node-Media-Server-Admin

JavaScript
111
star
5

SayHi

Native audio recording/playing (OpenSL ES) and speex encoding/decoding,transport by rtmp.
C
76
star
6

NodeMediaDevClient

Flex开发的RTMP视频推流播放测试工具
HTML
53
star
7

SayHey

iOS rtmp speex
C
48
star
8

VoAACEncoder

Android aac encoder using voaac
C
32
star
9

NodeMediaClient-Web

NodeMedia RTMP Publisher/Player for web (OpenSource)
JavaScript
18
star
10

libaec-android

echo cancellation module port from webrtc
C
16
star
11

libsrs_rtmp-android

Build libsrs_rtmp for android
C++
15
star
12

libyuv-iOS

Build Google libyuv with xcodebuild for iOS
C++
15
star
13

pro-fiv.js

Professional HTML5 FLV Player
JavaScript
13
star
14

tsdebugger

12
star
15

NodeMediaDevice

C
8
star
16

libspeex-Android

Build libspeex with Android NDK
C
6
star
17

xcgo

CGO Cross Compiler
Dockerfile
6
star
18

icedemo-android

icedemo for Android
C
5
star
19

librtmp-android

C
5
star
20

Red5-Publisher

Red5 RTMP 发布播放工具,更新为Flex4.6 SDK,支持了H.264视频编码,Speex音频编码
ActionScript
4
star
21

node-ffmpeg-pro

Nodejs ffmpeg process caller
JavaScript
4
star
22

webrtc-audio-processing

C
3
star
23

nodeplayer-uniapp

uni-app 集成NodePlayer.js 开发直播app的Demo
Vue
3
star
24

LiveVideoGameLaya

JavaScript
2
star
25

rtmp-bench

JavaScript
2
star
26

rtmploader

2
star
27

state-threads-win32

WIN32 API state threads
C
2
star
28

libilbc-Android

Build libilbc with Android NDK
C
1
star
29

bitop.js

bit operation for nodejs
JavaScript
1
star
30

nginx-rtmp-embedded-linux

nginx-rtmp-module embedded linux builds
1
star
31

LiveVideoGame

使用白鹭引擎集成NodePlayer.js-wasm版开发视频直播游戏Demo
JavaScript
1
star