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

相关文章
|
4月前
FFmpeg学习笔记(二):多线程rtsp推流和ffplay拉流操作,并储存为多路avi格式的视频
这篇博客主要介绍了如何使用FFmpeg进行多线程RTSP推流和ffplay拉流操作,以及如何将视频流保存为多路AVI格式的视频文件。
529 0
|
4月前
|
网络协议 应用服务中间件 nginx
FFmpeg错误笔记(一):nginx-rtmp-module推流出现 Server error: Already publishing
这篇文章讨论了在使用nginx-rtmp-module进行RTMP推流时遇到的“Server error: Already publishing”错误,分析了错误原因,并提供了详细的解决办法,包括修改nginx配置文件和终止异常的TCP连接。
301 0
FFmpeg错误笔记(一):nginx-rtmp-module推流出现 Server error: Already publishing
|
4月前
|
应用服务中间件 Linux nginx
FFmpeg学习笔记(一):实现rtsp推流rtmp以及ffplay完成拉流操作
这篇博客介绍了如何使用FFmpeg实现RTSP推流到RTMP服务器,并使用ffplay进行拉流操作,包括在Windows和Linux系统下的命令示例,以及如何通过HTML页面显示视频流。
735 0
|
5月前
|
网络协议 网络安全 Python
Python 通过UDP传输超过64k的信息
Python 通过UDP传输超过64k的信息
63 0
|
5月前
|
网络协议 网络安全 Python
Python 通过UDP传输超过64k的信息
Python 通过UDP传输超过64k的信息 原创
103 0
|
5月前
|
编解码 移动开发 安全
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
自互联网普及以来,流媒体技术特别是视频直播技术不断进步,出现了多种传输协议。早期的MMS由微软主导,但随WMV格式衰落而减少使用。RTSP由网景和RealNetworks联合提出,支持多种格式,但在某些现代应用中不再受支持。RTMP由Adobe开发,曾广泛用于网络直播,但因HTML5不支持Flash而受影响。HLS由苹果开发,基于HTTP,适用于点播。SRT和RIST均为较新协议,强调安全与可靠性,尤其SRT在电视直播中应用增多。尽管RTMP仍占一定市场,但SRT等新协议正逐渐兴起。
150 8
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
|
6月前
|
编解码 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开启手机直播。
117 4
FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流
|
7月前
|
网络协议 网络性能优化
用udp协议传输文件
【7月更文挑战第18天】使用 UDP 协议传输文件 UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输协议。尽管它不像 TCP 那样提供可靠的传输和拥塞控制,但在某些特定场景下,例如对实时性要求较高、能容忍一定数据丢失的情况,也可以用于文件传输。
106 0
|
7月前
|
视频直播 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开发实战:从零基础到短视频上线》。
233 2
FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流
|
7月前
|
应用服务中间件 Linux nginx
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
《FFmpeg开发实战》书中介绍了如何使用FFmpeg向网络推流,简单流媒体服务器MediaMTX不适用于复杂业务。nginx-rtmp是Nginx的RTMP模块,提供基本流媒体服务。要在Linux上集成rtmp,需从官方下载nginx和nginx-rtmp-module源码,解压后在nginx目录配置并添加rtmp模块,编译安装。配置nginx.conf启用RTMP服务,监听1935端口。使用ffmpeg推流测试,如能通过VLC播放,表明nginx-rtmp运行正常。更多详情见书本。
190 0
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流