You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.6 KiB
Markdown
78 lines
2.6 KiB
Markdown
4 years ago
|
# 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:
|
||
|
|
||
|
- Muxer / Demuxer ([doc](https://pkg.go.dev/github.com/Danile71/joy4/av#Demuxer) [example](https://github.com/Danile71/joy4/blob/master/examples/open_probe_file/main.go))
|
||
|
- Audio Decoder ([doc](https://pkg.go.dev/github.com/Danile71/joy4/av#AudioDecoder) [example](https://github.com/Danile71/joy4/blob/master/examples/audio_decode/main.go))
|
||
|
- Transcoding ([doc](https://pkg.go.dev/github.com/Danile71/joy4/av/transcode) [example](https://github.com/Danile71/joy4/blob/master/examples/transcode/main.go))
|
||
|
- Streaming server ([example](https://github.com/Danile71/joy4/blob/master/examples/http_flv_and_rtmp_server/main.go))
|
||
|
|
||
|
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](https://pkg.go.dev/github.com/Danile71/joy4/av/pubsub))
|
||
|
|
||
|
- Customize publisher buffer time and subscriber read position
|
||
|
|
||
|
|
||
|
- Multiple channels live streaming ([example](https://github.com/Danile71/joy4/blob/master/examples/rtmp_server_channels/main.go))
|
||
|
|
||
|
Packet filters ([doc](https://pkg.go.dev/github.com/Danile71/joy4/av/pktque))
|
||
|
|
||
|
- Wait first keyframe
|
||
|
- Fix timestamp
|
||
|
- Make A/V sync
|
||
|
- Customize ([example](https://github.com/Danile71/joy4/blob/master/examples/rtmp_server_channels/main.go#L19))
|
||
|
|
||
|
FFMPEG Golang-style binding ([doc](https://pkg.go.dev/github.com/Danile71/joy4/cgo/ffmpeg))
|
||
|
- Audio Encoder / Decoder
|
||
|
- Video Decoder
|
||
|
- Audio Resampler
|
||
|
|
||
|
Support codec and container parsers:
|
||
|
|
||
|
- H264 SPS/PPS/AVCDecoderConfigure parser ([doc](https://pkg.go.dev/github.com/Danile71/joy4/codec/h264parser))
|
||
|
- AAC ADTSHeader/MPEG4AudioConfig parser ([doc](https://pkg.go.dev/github.com/Danile71/joy4/codec/aacparser))
|
||
|
- MP4 Atoms parser ([doc](https://pkg.go.dev/github.com/Danile71/joy4/format/mp4/mp4io))
|
||
|
- FLV AMF0 object parser ([doc](https://pkg.go.dev/github.com/Danile71/joy4/format/flv/flvio))
|
||
|
|
||
|
# Requirements
|
||
|
|
||
|
Go version >= 1.6
|
||
|
|
||
|
ffmpeg version >= 3.0 (optional)
|
||
|
|
||
|
# TODO
|
||
|
|
||
|
HLS / MPEG-DASH Server
|
||
|
|
||
|
ffmpeg.VideoEncoder / ffmpeg.SWScale
|
||
|
|
||
|
# License
|
||
|
|
||
|
MIT
|