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;
}
相关推荐
苏三福16 小时前
摄像头推流、拉流
ffmpeg
ACP广源盛1392462567318 小时前
GSV2125D@ACP#GSV6125#HDMI 2.0 转 DisplayPort 1.4 转换器(带嵌入式 MCU)
嵌入式硬件·计算机外设·音视频
赖small强19 小时前
【音视频开发】 ISP核心技术解析:3A算法(AE/AWB/AF)原理与实现
音视频·ae·af·awb·3a算法
ACP广源盛1392462567321 小时前
GSV2202D@ACP#DisplayPort 1.4 到 HDMI 2.0 转换器(带嵌入式 MCU)
单片机·嵌入式硬件·计算机外设·音视频
你好音视频21 小时前
RTSP拉流:RTP包解析流程详解
ffmpeg·音视频
大熊背1 天前
PotPlay视频播放器YUV色彩空间不一致所导致的图像发蒙问题及优化方案
ffmpeg·色彩空间·通透度
赖small强1 天前
【音视频开发】视频中运动模糊与拖影现象深度解析技术文档
音视频·快门·运动模糊·拖影
Dev7z1 天前
基于MATLAB小波变换的音频水印算法研究与实现
开发语言·matlab·音视频
hjjdebug1 天前
标注 avcodec_send_packet 和 avcodec_receive_frame 函数
ffmpeg·send_packet·receive_frame
Black蜡笔小新1 天前
视频汇聚平台EasyCVR接入设备后发现分辨率与设备端配置不同步的原因排查
音视频