# 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