2016-07-30 14:36:56 +08:00
# 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://godoc.org/github.com/nareix/joy4/av#Demuxer ) [example ](https://github.com/nareix/joy4/blob/master/examples/open_probe_file/main.go ))
- Audio Decoder ([doc ](https://godoc.org/github.com/nareix/joy4/av#AudioDecoder ) [example ](https://github.com/nareix/joy4/blob/master/examples/audio_decode/main.go ))
- Transcoding ([doc ](https://godoc.org/github.com/nareix/joy4/av/transcode ) [example ](https://github.com/nareix/joy4/blob/master/examples/transcode/main.go ))
- Streaming server ([example ](https://github.com/nareix/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://godoc.org/github.com/nareix/joy4/av/pubsub ))
- Customize publisher buffer time and subscriber read position
- Multiple channels live streaming ([example ](https://github.com/nareix/joy4/blob/master/examples/rtmp_server_channels/main.go ))
Packet filters ([doc ](https://godoc.org/github.com/nareix/joy4/av/pktque ))
- Wait first keyframe
- Fix timestamp
- Make A/V sync
2016-07-30 14:42:41 +08:00
- Customize ([example ](https://github.com/nareix/joy4/blob/master/examples/rtmp_server_channels/main.go#L19 ))
2016-07-30 14:36:56 +08:00
FFMPEG Golang-style binding ([doc ](https://godoc.org/github.com/nareix/joy4/cgo/ffmpeg ))
- Audio Encoder / Decoder
- Video Decoder
- Audio Resampler
Support codec and container parsers:
- H264 SPS/PPS/AVCDecoderConfigure parser ([doc ](https://godoc.org/github.com/nareix/joy4/codec/h264parser ))
- AAC ADTSHeader/MPEG4AudioConfig parser ([doc ](https://godoc.org/github.com/nareix/joy4/codec/aacparser ))
- MP4 Atoms parser ([doc ](https://godoc.org/github.com/nareix/joy4/format/mp4/mp4io ))
- FLV AMF0 object parser ([doc ](https://godoc.org/github.com/nareix/joy4/format/flv/flvio ))
2016-07-30 14:45:22 +08:00
# Requirements
2016-08-03 16:49:30 +08:00
Go version >= 1.6
2016-07-30 14:45:22 +08:00
ffmpeg version >= 3.0 (optional)
2016-07-30 14:36:56 +08:00
# TODO
HLS / MPEG-DASH Server
2016-07-30 15:04:28 +08:00
ffmpeg.VideoEncoder / ffmpeg.SWScale
2016-07-30 14:36:56 +08:00
# License
2016-08-03 16:49:30 +08:00
MIT