ffmpeg实现H264压缩并且推流至RTSP

------------------------------------------------------------------------------------------------------

ffmpeg rtsp推流、解码   课程教学:

ffmpeg实现H264编、解码,RTSP推流,RTSP解码​​​​​​​

里面提供源码可以直接下载运行!

-----------------------------------------------------------------------------------------------------------------------

一、整体思路

    1 利用ffmpeg读取出视频的一帧图像   存储在pFrame中

    2 利用ffmpeg进行格式转换    sws_scale

    3 利用ffmpeg编码存在pFrame中的图像   H264压缩

    4 利用ffmpeg的 av_interleaved_write_frame( )  写入到rtsp端

    5 辅助部分:解码、编码初始化,QT线程创建

二、编解码初始化

    1 解码初始化

        参考http://blog.csdn.net/yunge812/article/details/79342089

    2 编码初始化           


    fmtctx = avformat_alloc_context();
    
    video_codec = avcodec_find_encoder(AV_CODEC_ID_H264);
    if(video_codec == NULL )
    {
        qDebug() << "video_codec == NULL"<< endl;
    }
    
    

        这里需要根据需要自行设置

    //打开编码器
    avcodec_open2(c, video_codec, NULL);
    /*写入数据流的头部*/
    avformat_write_header(fmtctx, NULL);
    //打印SDP信息, 该信息可用于Rtp流接收解码
    char sdp[2048];
    int tmp = av_sdp_create(&fmtctx,1, sdp, sizeof(sdp));
    qDebug() << sdp <

        打印信息可以打印出当前的RTSP流的信息   用于另一端捕获用。具体用法后文会有介绍

三、读取视频

     3.1 视频读取   

  av_read_frame(pFormatCtx_decode, packet)

    3.2  视频解码

 avcodec_decode_video2(pCodecCtx_decode, pFrame, &got_picture, packet)

    3.3  格式转换

 sws_scale(img_convert_ctx,pFrame->data, pFrame->linesize, 0, pCodecCtx_decode->height,  //源
                          pFrameYUV->data, pFrameYUV->linesize);                                 //目的    

 

    此时 经过解码的视频存储在pFrameYUV中

 

四、编码视频        

 avcodec_encode_video2(c, &pkt, pFrameYUV, &got_output)

五 推流至RTSP

  av_interleaved_write_frame(fmtctx,&pkt);

六 利用VLC播放器接受压缩之后的视频

    6.1 识别打印信息

        第二步留下打印信息很有用   例如我的打印信息是

v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 57.71.100
m=video 5678 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1

        将上述打印信息直接copy到记事本,另存为 test.sdp的文件

    6.2 再次运行程序  同时将 test.sdp文件拖到VLC播放器中进行播放

    6.3 播放效果     

ffmpeg实现H264压缩并且推流至RTSP_第1张图片

参考资料

课程教学视频:https://edu.csdn.net/course/detail/27795

课件里面提供源码

 


参考连接:http://blog.csdn.net/czc1009/article/details/12913759

         http://blog.csdn.net/ytaosky/article/details/72820329

=======================================================================

最近新开的公众号,文章正在一篇篇的更新,

公众号名称:玩转电子世界

各位朋友有什么问题了可以直接在上面提问,我会一一进行解答的。

跟着阳光非宅男,一步步走进电子的世界。

关注之后回复  资料下载 可以获得免费海量视频学习资料下载~~!

已共享的学习视频资料,共享资料正在不断更新中。

共享ffmpeg视频学习资料:

ffmpeg实现H264压缩并且推流至RTSP_第2张图片

=======================================================================

 

你可能感兴趣的:(ffmpeg)