ffmpeg解封装rtsp并录制视频-(3)完成对rtsp流通过责任链接收解封装AVPacket数据并解码视频再渲染视频

主函数:

cpp 复制代码
//108录制五秒视频
#include <iostream>
#include <thread>
#include "xtools.h"
#include "xdemux_task.h"
#include "xdecodetask.h"
#include "xvideo_view.h"
#include "xmux_task.h"
using namespace std;

//大华
#define CAM1 \
"rtsp://admin:admin@192.168.2.108/cam/realmonitor?channel=1&subtype=0"
//海康
#define CAM2 \
"rtsp://127.0.0.1:8554/test"
int main(int argc, char* argv[])
{
    XDemuxTask demux_task;
    for (;;)
    {
        if (demux_task.Open(CAM2))
        {
            cout << "shexiangtoudakaile!!!!";
            break;
        }
        MSleep(100);
        continue;
    }

    auto vpara = demux_task.CopyVideoPara();
    AVCodecParameters* video_para = nullptr;
    AVCodecParameters* audio_para = nullptr;
    AVRational* video_time_base = nullptr;
    AVRational* audio_time_base = nullptr;
    if (vpara)
    {
        video_para = vpara->para;
        video_time_base = vpara->time_base;
    }
    auto apara = demux_task.CopyAudioPara();
    if (apara)
    {
        audio_para = apara->para;
        audio_time_base = apara->time_base;
    }
    XMuxTask mux_task;
    if (!mux_task.Open("rtsp_out1.mp4", video_para, video_time_base,
        audio_para, audio_time_base
    ))
    {
        LOGERROR("mux_task.Open failed!");
        return -1;
    }
    demux_task.set_next(&mux_task);
    demux_task.Start();
    mux_task.Start();
    MSleep(5000);
    mux_task.Stop();

    if (!mux_task.Open("rtsp_out2.mp4", video_para, video_time_base,
        audio_para, audio_time_base
    ))
    {
        LOGERROR("mux_task.Open failed!");
        return -1;
    }
    mux_task.Start();
    MSleep(5000);
    mux_task.Stop();

    getchar();
    return 0;
}
相关推荐
kaixin_啊啊3 天前
突破限制:Melody远程音频管理新体验
音视频
ai产品老杨3 天前
解锁仓储智能调度、运输路径优化、数据实时追踪,全功能降本提效的智慧物流开源了
javascript·人工智能·开源·音视频·能源
MThinker3 天前
02-Media-8-uvc_with_csc.py 使用硬件解码的USB摄像头(UVC)捕获视频并显示的程序
音视频·智能硬件·micropython·canmv·k230
向阳花开_miemie3 天前
Android音频学习(十八)——混音流程
学习·音视频
清风6666663 天前
基于STM32的APP遥控视频水泵小车设计
stm32·单片机·mongodb·毕业设计·音视频·课程设计
Cary丿Xin3 天前
Luma 视频生成 API 对接说明
音视频
简鹿办公4 天前
FFmpeg vs 去水印软件:哪种方式更适合你?
ffmpeg·怎样去除视频水印·如何去视频logo视频水印
奔跑吧 android4 天前
【车载audio开发】【基础概念1】【音频基础概念通俗讲解】
音视频·channel·audio·aosp·frame·period_size
小狮子安度因4 天前
ffplay数据结构分析
数据结构·ffmpeg
小狮子安度因4 天前
ffplay音频重采样
ffmpeg·音视频