ffmpeg推流rtmp指定udp传输

简介: ffmpeg推流rtmp指定udp传输

RTMP (Real-Time Messaging Protocol) 是一个用于音频、视频和数据的传输协议。RTMP 协议本身可以支持 TCP 或 UDP 作为其底层传输协议。


在 RTMP 中,TCP 是默认的传输协议,它的稳定性和可靠性比 UDP 更好。但是,TCP 的延迟较高,对于实时性要求较高的音视频应用来说可能不太适合。


相比之下,UDP 具有低延迟和高实时性的优势,但是 UDP 的可靠性不如 TCP。因此,当需要实时传输音视频时,RTMP 也可以选择 UDP 作为其底层传输协议。这种方式被称为 RTMFP (Real-Time Messaging Flow Protocol),它基于 UDP 协议,支持多播和点对点通信,可以用于实现低延迟、高带宽的音视频传输。

在ffmpeg中,如果您想将视频通过RTMP协议推流,可以使用以下命令:

ffmpeg -i input.mp4 -c:v libx264 -preset veryfast -b:v 2000k -maxrate 2000k -bufsize 1000k -rtmp_protocol tcp -f flv rtmp://example.com/app/stream


让我们逐个解释这个命令:


-i input.mp4 表示输入视频的文件名和路径。

-c:v libx264 表示使用x264编码器进行视频编码。

-preset veryfast 表示x264编码器使用较快的预设进行编码。

-b:v 2000k 表示目标视频的目标比特率为2Mbps。

-maxrate 2000k 表示最大比特率也为2Mbps。这将限制编码器在视频中使用的最大比特率。

-bufsize 1000k 表示使用1MB的缓冲区大小。这是编码器使用的缓冲区的最大大小。

-rtmp_protocol tcp 表示使用TCP协议进行RTMP推流。默认情况下,ffmpeg使用RTMP协议进行推流,但是在某些情况下,TCP协议可能更适合您的需求。

-f flv 表示输出文件格式为FLV。 rtmp://example.com/app/stream 表示RTMP服务器的地址和流名称。


如果您想使用UDP协议进行RTMP推流,可以在命令中添加 -rtmp_protocol udp 参数,像这样:

ffmpeg -i input.mp4 -c:v libx264 -preset veryfast -b:v 2000k -maxrate 2000k -bufsize 1000k -rtmp_protocol udp -f flv rtmp://example.com/app/stream


thxchtb3wcn3k_d11fc1ff3db9431d8ad7575e9297ae48.png

相关文章
|
1月前
|
应用服务中间件 Linux nginx
FFmpeg学习笔记(一):实现rtsp推流rtmp以及ffplay完成拉流操作
这篇博客介绍了如何使用FFmpeg实现RTSP推流到RTMP服务器,并使用ffplay进行拉流操作,包括在Windows和Linux系统下的命令示例,以及如何通过HTML页面显示视频流。
408 0
|
1月前
|
网络协议 应用服务中间件 nginx
FFmpeg错误笔记(一):nginx-rtmp-module推流出现 Server error: Already publishing
这篇文章讨论了在使用nginx-rtmp-module进行RTMP推流时遇到的“Server error: Already publishing”错误,分析了错误原因,并提供了详细的解决办法,包括修改nginx配置文件和终止异常的TCP连接。
125 0
FFmpeg错误笔记(一):nginx-rtmp-module推流出现 Server error: Already publishing
|
2月前
|
编解码 移动开发 安全
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
自互联网普及以来,流媒体技术特别是视频直播技术不断进步,出现了多种传输协议。早期的MMS由微软主导,但随WMV格式衰落而减少使用。RTSP由网景和RealNetworks联合提出,支持多种格式,但在某些现代应用中不再受支持。RTMP由Adobe开发,曾广泛用于网络直播,但因HTML5不支持Flash而受影响。HLS由苹果开发,基于HTTP,适用于点播。SRT和RIST均为较新协议,强调安全与可靠性,尤其SRT在电视直播中应用增多。尽管RTMP仍占一定市场,但SRT等新协议正逐渐兴起。
99 8
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
|
1月前
FFmpeg学习笔记(二):多线程rtsp推流和ffplay拉流操作,并储存为多路avi格式的视频
这篇博客主要介绍了如何使用FFmpeg进行多线程RTSP推流和ffplay拉流操作,以及如何将视频流保存为多路AVI格式的视频文件。
171 0
|
3月前
|
编解码 Java Android开发
FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流
​SRT Streamer是一个安卓手机端的开源SRT协议直播推流框架,可用于RTMP直播和SRT直播。SRT Streamer支持的视频编码包括H264、H265等等,支持的音频编码包括AAC、OPUS等等,可谓功能强大的APP直播框架。另一款APP直播框架RTMP Streamer支持RTMP直播和RTSP直播,不支持SRT协议的直播。而本文讲述的SRT Streamer支持RTMP直播和SRT直播,不支持RTSP协议的直播。有关RTMP Streamer的说明参见之前的文章《使用RTMP Streamer开启APP直播推流》,下面介绍如何使用SRT Streamer开启手机直播。
76 4
FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流
|
2月前
|
网络协议 网络安全 Python
Python 通过UDP传输超过64k的信息
Python 通过UDP传输超过64k的信息
|
2月前
|
网络协议 网络安全 Python
Python 通过UDP传输超过64k的信息
Python 通过UDP传输超过64k的信息 原创
|
4月前
|
视频直播 Windows
FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流
《FFmpeg开发实战》书中介绍了直播中的RTSP、RTMP和SRT协议,SRT提供更低延迟和稳定性。FFmpeg从4.0版起支持SRT,OBS Studio和MediaMTX等工具也已支持。在Windows环境下,通过集成libsrt的FFmpeg,可以建立SRT直播系统。MediaMTX日志显示SRT服务监听8890端口,OBS Studio设置SRT推流至"publish:live"。ffplay和VLC通过"read:live"拉流成功,验证了SRT推拉流功能。更多详情见《FFmpeg开发实战:从零基础到短视频上线》。
167 2
FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流
|
4月前
|
Web App开发 缓存 编解码
FFmpeg开发笔记(三十八)APP如何访问SRS推流的RTMP直播地址
《FFmpeg开发实战》书中介绍了轻量级流媒体服务器MediaMTX,适合测试RTSP/RTMP协议,但不适用于复杂直播场景。SRS是一款强大的开源流媒体服务器,支持多种协议,起初为RTMP,现扩展至HLS、SRT等。在FFmpeg 6.1之前,推送给SRS的HEVC流不受支持。要播放RTMP流,Android应用可使用ExoPlayer,需在`build.gradle`导入ExoPlayer及RTMP扩展,并根据URL类型创建MediaSource。若SRS播放黑屏,需在配置文件中开启`gop_cache`以缓存关键帧。
149 2
FFmpeg开发笔记(三十八)APP如何访问SRS推流的RTMP直播地址
|
4月前
|
Web App开发 缓存 Linux
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
《FFmpeg开发实战》书中第10章提及轻量级流媒体服务器MediaMTX,适合测试RTSP/RTMP协议,但不适合生产环境。推荐使用SRS或ZLMediaKit,其中SRS是国产开源实时视频服务器,支持多种流媒体协议。本文简述在华为欧拉系统上编译安装SRS和FFmpeg的步骤,包括安装依赖、下载源码、配置、编译以及启动SRS服务。此外,还展示了如何通过FFmpeg进行RTMP推流,并使用VLC播放器测试拉流。更多FFmpeg开发内容可参考相关书籍。
106 2
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流