音视频开发---ffmpeg rtmp推流

本文介绍了音视频开发中的RTMP推流概念,包括推流的网络拓扑结构和FFmpeg推流的两种方式。FFmpeg自带的RTMP代码支持原样保存和转码保存文件,以及转码后推送到服务器。使用第三方库librtmp则能支持更多协议。文中还给出了推流器的函数流程图和推流代码示例,并提到了推流速度控制及推流类型的注意事项。
摘要由CSDN通过智能技术生成

1、推流介绍


推流是将输入视频数据推送至流媒体服务器, 输入视频数据可以是本地视频文件(avi,mp4,flv......),也可以是内存视频数据,或者摄像头等系统设备,也可以是网络流URL。本篇介绍将本地视频文件通过FFmpeg编程以RTMP直播流的形式推送至RTMP流媒体服务器的方法。

推流的网络拓扑结构如下:

RTMP流媒体服务器: 采用nginx+rtmp module实现

RTMP拉流器:

RTMP推流器:采用ffmpeg实现

需要注意的是,RTMP采用的封装格式是FLV。在指定输出流媒体格式的时候需要指定其封装格式为“flv”。同理,其他流媒体协议也需要指定其封装格式。例如采用UDP推送流媒体的时候,可以指定其封装格式为“mpegts”。

2、FFmpeg推流


FFMpeg处理RTMP流有两种方式:

  • 一个是使用自带的RTMP代码功能;

  • 一个是使用第三方库librtmp;

这两种方式是有些区别的

1. FFmpeg自带的RTMP代码功能

FFmpeg自带的RTMP代码只支持RTMP协议,不支持rtmpt,rtmpe,rtmpte和rtmps协议;

命令行设置如下:

\1. 将RTMP流原样保存成文件

# ./ffmpeg -i rtmp://192.168.1.11:1935/live/teststream -acodec copy -vcodec copy -f flv -y test.flv

\2. 将RTMP流转码保存成文件

# ./ffmpeg -i rtmp://192.168.1.11:1935/live/teststream -acodec ... -vcodec ... -f mp4 -y test.mp4

\3. 将RTMP流转码后再以RTMP流的方式推送到RTMP流服务器

# ./ffmpeg -i rtmp://192.168.1.11:1935/live/teststream -acodec ... -vcodec ... -f flv rtmp://10.2.11.111/live/newstream

2. 第三方库librtmp

如何让FFMpeg链接该库(后续更新)

FFMpeg可以支持rtmp://, rtmpt://, rtmpe://, rtmpte://,以及 rtmps://协议。

链接了librtmp的FFMpeg接受一个字符串的输入方式,

如:"rtmp://server:port/app/playpath/stream_name live=1 playpath=xxx ..."

NOTE:引号是必须的;

\1. 保存RTMP直播流原样保存成文件:

# ./ffmpeg -i "rtmp://http://pub1.guoshi.com/live/newcetv1 live=1" -vcodec copy -acodec copy -y cetv1.flv

\2. 将RTMP流转码后再以RTMP流的方式推送到RTMP流服务器

# ./ffmpeg -i "rtmp://192.168.1.11:1935/live/app/teststream live=1" -acodec ... -vcodec ... -f flv rtmp://10.2.11.111/live/newstream

\3. 用ffplay播放RTMP直播流:

ffplay "rtmp://http://pub1.guoshi.com/live/newcetv1 live=1"

\4. 在使用FFMPEG类库进行编程的时候,也是一样的,

只需要将字符串传递给avformat_open_input()就行了,形如:

ffplay "rtmp://

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值