https://github.com/runner365/cpp_streamer
cpp streamer work in dynamic modules for media develop. It include flv/mpegts/rtmp/webrtc modules, and go on developing more modules
https://github.com/runner365/cpp_streamer
Last synced: 12 months ago
JSON representation
cpp streamer work in dynamic modules for media develop. It include flv/mpegts/rtmp/webrtc modules, and go on developing more modules
- Host: GitHub
- URL: https://github.com/runner365/cpp_streamer
- Owner: runner365
- Created: 2023-07-08T01:11:27.000Z (almost 3 years ago)
- Default Branch: v1.1
- Last Pushed: 2025-03-28T09:09:27.000Z (about 1 year ago)
- Last Synced: 2025-06-21T09:05:54.910Z (12 months ago)
- Language: C++
- Size: 47.6 MB
- Stars: 64
- Watchers: 3
- Forks: 16
- Open Issues: 3
-
Metadata Files:
- Readme: README-CH.md
Awesome Lists containing this project
README
# cpp_streamer
cpp streamer是基于C++11开发的音视频组件,使用者可以把组件串联起来实现自己的流媒体功能。
支持多种媒体格式,流媒体直播/rtc协议。
当前支持媒体格式与流媒体格式:
* flv mux/demux
* mpegts mux/demux
* rtmp publish/play
* srs whip
* srs whip bench(srs webrtc性能压测)
* mediasoup whip(mediaoup webrtc 性能压测)
网络开发部分,采用高性能,跨平台的libuv网络异步库;
## cpp streamer使用简介
cpp streamer是音视频组件,提供串流方式开发模式。
举例:flv文件转换成mpegts的实现,实现如下图

* 先读取flv文件
* 使用flvdemux组件:source接口导入文件二进制流,解析后,通过sinker接口输出视频+音频的媒体流;
* 使用mpegtsmux组件: source接口导入上游解析后的媒体流后,组件内部进行mpegts的封装,再通过sinker接口输出mpegts格式;
* 通过mpegtsmux组件的sinker接口组件输出,写文件得到mpegts文件;
## cpp streamer应用实例
* [flv转mpegts](doc/flv2mpegts.md)
* [flv转rtmp推流](doc/flv2rtmp.md)
* [mpegts转whip(webrtc http ingest protocol),向srs webrtc服务推流](doc/mpegts2whip_srs.md)
* [srs webrtc推流压测](doc/mpegts2whip_srs_bench.md)
* [srs webrtc拉流压测](doc/whep_srs_bench.md)
* [mediasoup broadcaster推流压测](doc/mpegts2mediasoup_push_bench.md)
* [mediasoup broadcaster拉流压测](doc/mediasoup_pull_bench.md)