Linux系统下使用C++推流多路视频流

先看拉取的视频流效果:

image-20240310084051649

代码如下:

一开始打算使用python写多路视频推流,但在ubuntu系统上搞了好久就是搞不定openh264导致的错误,然后改用c++了,代码如下,我这里推了两路视频流,一路是网络摄像头,另一路是MP4视频文件,环境还是之前的,可参考以下两篇博文:

Docker中创建nginx-rtmp流媒体服务器
Docker中使用nginx-rtmp推拉网络摄像头视频流


#include <iostream>
#include <thread>

void executeCommand(const char* command) {
    int result = std::system(command);

    if (result == 0) {
        std::cout << "Command executed successfully." << std::endl;
    } else {
        std::cerr << "Command execution failed." << std::endl;
    }
}

int main() {
    // 构建推流命令
    const char* command1 = "ffmpeg -use_wallclock_as_timestamps 1 -rtsp_transport tcp -i rtsp://admin:admin@网络摄象头ip -c:v h264 -b:v 1000k -c:a aac -ar 44100 -f flv rtmp://流媒体服务器IP:1935/stream/example1";

    // 构建另一个推流命令
    const char* command2 = "ffmpeg -re -stream_loop -1 -i ./5-2.mp4 -vcodec copy -acodec aac -ar 44100 -f flv rtmp://流媒体服务器IP:1935/stream/example2";

    // 使用线程同时执行两个命令
    std::thread thread1(executeCommand, command1);
    std::thread thread2(executeCommand, command2);

    // 等待线程执行完毕
    thread1.join();
    thread2.join();

    return 0;
}


编译命令:

g++ -o multffmpeg-test multffmpeg-test.cpp -pthread

运行:

./multffmpeg-test
  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值