ffmpeg推送RTMP到直播服务器

需要将音视频推送到直播服务器,使用ffmpeg较为简单,不用详细了解rtmp推送的细节,网上有一版雷神的代码,使用最新的ffmpeg会发现有些api已经弃用,或者提代为其他调用方式,现列出如下:

1、AVOutputFormat *ofmt = NULL; 前需要加上const ;

2、ifmt_ctx->streams[i]->codec- 调整为 ifmt_ctx->streams[i]->codecpar ;

3、avformat_new_stream(ofmt_ctx, in_stream->codec->codec); 调整为 avformat_new_stream(ofmt_ctx, avcodec_find_decoder(in_stream->codecpar->codec_id)) ;

4、ret = avcodec_copy_context(out_stream->codecpar->codec_type, in_stream->codecpar->codec_type);
        if (ret < 0) {
            printf( "Failed to copy context from input to output stream codec context\n");
            goto end;
        }
        out_stream->codecpar->codec_type->codec_tag = 0;
        if (ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)
            out_stream->codecpar->codec_type->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;

替换为:

AVCodecContext* codec_ctx = avcodec_alloc_context3(avcodec_find_encoder(out_stream->codecpar->codec_id));
        if (avcodec_parameters_to_context(codec_ctx, in_stream->codecpar) < 0) {
            printf("Failed to copy in_stream codecpar to codec context\n");
            goto end;
        }

        codec_ctx->codec_tag = 0;
        if (ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)
            codec_ctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;

        if (avcodec_parameters_from_context(out_stream->codecpar, codec_ctx) < 0) {
            printf("Failed to copy codec context to out_stream codecpar context\n");
            goto end;
        }

5、av_free_packet(&pkt); 替换为 av_packet_unref(&pkt);    

最后附上源代码下载地址:

项目主页 
SourceForge:simplest ffmpeg streamer 
Github:GitHub - leixiaohua1020/simplest_ffmpeg_streamer: Simplest streamer based on FFmpeg 
开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_streamer 
CSDN下载地址:http://download.csdn.net/detail/leixiaohua1020/8005311
————————————————
版权声明:本文为CSDN博主「音视频开发老马」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yinshipin007/article/details/130906369

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值