MCPcopy Index your code
hub / github.com/nareix/joy4

github.com/nareix/joy4 @main sqlite

repository ↗ · DeepWiki ↗
943 symbols 2,046 edges 59 files 62 documented · 7%
README

PLEASE USE joy5 INSTEAD

joy5

  • High performance Copy-on-write gop cache code
  • Better av.Packet design code

JOY4

Golang audio/video library and streaming server

JOY4 is powerful library written in golang, well-designed interface makes a few lines of code can do a lot of things such as reading, writing, transcoding among variety media formats, or setting up high-performance live streaming server.

Features

Well-designed and easy-to-use interfaces:

Support container formats:

  • MP4
  • MPEG-TS
  • FLV
  • AAC (ADTS)

RTSP Client - High level camera bug tolerance - Support STAP-A

RTMP Client - Support publishing to nginx-rtmp-server - Support playing

RTMP / HTTP-FLV Server - Support publishing clients: OBS / ffmpeg / Flash Player (>8) - Support playing clients: Flash Player 11 / VLC / ffplay / mpv - High performance

Publisher-subscriber packet buffer queue (doc)

  • Customize publisher buffer time and subscriber read position

  • Multiple channels live streaming (example)

Packet filters (doc)

  • Wait first keyframe
  • Fix timestamp
  • Make A/V sync
  • Customize (example)

FFMPEG Golang-style binding (doc) - Audio Encoder / Decoder - Video Decoder - Audio Resampler

Support codec and container parsers:

  • H264 SPS/PPS/AVCDecoderConfigure parser (doc)
  • AAC ADTSHeader/MPEG4AudioConfig parser (doc)
  • MP4 Atoms parser (doc)
  • FLV AMF0 object parser (doc)

Requirements

Go version >= 1.6

ffmpeg version >= 3.0 (optional)

TODO

HLS / MPEG-DASH Server

ffmpeg.VideoEncoder / ffmpeg.SWScale

License

MIT

Extension points exported contracts — how you extend this code

Muxer (Interface)
Muxer describes the steps of writing compressed audio/video packets into container formats like MP4/FLV/MPEG-TS. Contai [7 …
av/av.go
Filter (Interface)
(no doc) [5 implementers]
av/pktque/filters.go
Atom (Interface)
(no doc)
format/mp4/mp4io/mp4io.go
MuxCloser (Interface)
Muxer with Close() method [13 implementers]
av/av.go
Demuxer (Interface)
Demuxer can read compressed audio/video packets from container formats like MP4/FLV/MPEG-TS. [10 implementers]
av/av.go
DemuxCloser (Interface)
Demuxer with Close() method [13 implementers]
av/av.go
CodecData (Interface)
CodecData is some important bytes for initializing audio/video decoder, can be converted to VideoCodecData or AudioCodec [5 …
av/av.go

Core symbols most depended-on inside this repo

parseErr
called by 177
format/mp4/mp4io/mp4io.go
Type
called by 43
av/av.go
Marshal
called by 42
format/mp4/mp4io/mp4io.go
Len
called by 42
format/mp4/mp4io/mp4io.go
setPos
called by 35
format/mp4/mp4io/mp4io.go
Unmarshal
called by 34
format/mp4/mp4io/mp4io.go
Duration
called by 28
av/av.go
Write
called by 28
format/rtmp/rtmp.go

Shape

Method 552
Function 247
Struct 118
Interface 16
TypeAlias 10

Languages

Go100%

Modules by API surface

format/mp4/mp4io/atoms.go237 symbols
format/rtmp/rtmp.go65 symbols
format/mp4/mp4io/mp4io.go65 symbols
av/av.go57 symbols
cgo/ffmpeg/audio.go41 symbols
format/rtsp/client.go40 symbols
format/mp4/mp4io/gen/pattern.go36 symbols
format/ts/tsio/tsio.go25 symbols
format/flv/flv.go24 symbols
format/mp4/mp4io/gen/gen.go21 symbols
codec/h264parser/parser.go21 symbols
codec/aacparser/parser.go20 symbols

For agents

$ claude mcp add joy4 \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact