CameraRtmpSDK
⚡CameraRtmpSDK is an audio and video based on ffmpeg SDK, is committed to creating a cross-platform audio and video sampling, encoding, mixing, protocol upload program.
Install / Use
/learn @Abson/CameraRtmpSDKREADME
Which is CameraRtmpSDK
CameraRtmpSDK is an audio and video based on ffmpeg SDK, is committed to creating a cross-platform audio and video sampling, encoding, mixing, protocol upload program. But all current creation is based on the iOS platform and CameraRtmpSDK was coded by c++.
Blog to Introduction
利用FFmpeg 开发音视频流(三)——将视频 YUV 格式编码成 H264
i did write a blog to introduce this project , hope it can help you to comprehend it.
How to Use
If you want to test Vido (H.264编码)
self.session = [[ABSSimpleSession alloc] initWithVideoSize:CGSizeMake(640, 480)
fps:30
bitrate:1000000
useInterfaceOrientation:true
cameraState:ABSCameraStateFront previewFrame:self.view.bounds];
self.session.delegate = self;
[self.view addSubview:self.session.previewView];
[self.session startVideoRecord];
// close it
[self.session endVidoeRecord];
if you want to test audio for AAC (AAC编码)
self.session = [[ABSSimpleSession alloc] initWithAudioSampleRate:16000 bitRate:16000
channelCount:2 encode:ABSEncodeTypeAAC];
self.session.delegate = self;
[self.session startAudioRecord];
// close it
[self.session endAudioRecord];
if you want to test audio for Opus (Opus编码)
self.session = [[ABSSimpleSession alloc] initWithAudioSampleRate:16000 bitRate:16000
channelCount:2 encode:ABSEncodeTypeOpus];
self.session.delegate = self;
[self.session startAudioRecord];
// close it
[self.session endAudioRecord];
if you want to test amix(混音) of ffmpeg
NSString* path1 = [[NSBundle mainBundle] pathForResource:@"audio1.wav" ofType:nil];
NSString* path2 = [[NSBundle mainBundle] pathForResource:@"audio2.wav" ofType:nil];
NSString* outputPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true).lastObject
stringByAppendingPathComponent:@"audio127.wav"];
const char* input1 = [path1 cStringUsingEncoding:NSUTF8StringEncoding];
const char* input2 = [path2 cStringUsingEncoding:NSUTF8StringEncoding];
const char* output = [outputPath cStringUsingEncoding:NSUTF8StringEncoding];
std::vector<std::string> inputs{std::string(input1), std::string(input2)};
PushSDK::ffmpeg::audio_mixer mixer(inputs, output);
mixer.StartMixAudio();
Update
2017.11.1 Update project to runnable and and modify test API, enjoy it.
2018.1.2 Fix audio encode bug, make it encode correctly,enjoy it.
Feature
As far as this moment, This project looks very confusing,i will take more time make it more usable. hope you can supports me, leaving you stars, Thanks.
Related Skills
qqbot-channel
347.0kQQ 频道管理技能。查询频道列表、子频道、成员、发帖、公告、日程等操作。使用 qqbot_channel_api 工具代理 QQ 开放平台 HTTP 接口,自动处理 Token 鉴权。当用户需要查看频道、管理子频道、查询成员、发布帖子/公告/日程时使用。
docs-writer
100.1k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
347.0kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
Design
Campus Second-Hand Trading Platform \- General Design Document (v5.0 \- React Architecture \- Complete Final Version)1\. System Overall Design 1.1. Project Overview This project aims t
