`

FFmpeg发送流媒体的命令(UDP,RTP,RTMP)

 
阅读更多

这两天研究了FFmpeg发送流媒体的命令,在此简单记录一下以作备忘。

1.UDP

1.1. 发送H.264裸流至组播地址

注:组播地址指的范围是224.0.0.0—239.255.255.255

下面命令实现了发送H.264裸流“chunwan.h264”至地址udp://233.233.233.223:6666

 

ffmpeg -re -i chunwan.h264 -vcodec copy -f h264 udp://233.233.233.223:6666

 

注1:-re一定要加,代表按照帧率发送,否则ffmpeg会一股脑地按最高的效率发送数据。

注2:-vcodec copy要加,否则ffmpeg会重新编码输入的H.264裸流。

1.2. 播放承载H.264裸流的UDP

 

ffplay -f h264 udp://233.233.233.223:6666

 

注:需要使用-f说明数据类型是H.264

播放的时候可以加一些参数,比如-max_delay,下面命令将-max_delay设置为100ms:

 

ffplay -max_delay 100000 -f h264 udp://233.233.233.223:6666

 

1.3. 发送MPEG2裸流至组播地址

下面的命令实现了读取本地摄像头的数据,编码为MPEG2,发送至地址udp://233.233.233.223:6666。

 

ffmpeg -re -i chunwan.h264 -vcodec mpeg2video -f mpeg2video udp://233.233.233.223:6666

 

1.4. 播放MPEG2裸流

指定-vcodec为mpeg2video即可。

 

ffplay -vcodec mpeg2video udp://233.233.233.223:6666

 

2.RTP

2.1. 发送H.264裸流至组播地址。

下面命令实现了发送H.264裸流“chunwan.h264”至地址rtp://233.233.233.223:6666

 

ffmpeg -re -i chunwan.h264 -vcodec copy -f rtp rtp://233.233.233.223:6666>test.sdp

 

注1:-re一定要加,代表按照帧率发送,否则ffmpeg会一股脑地按最高的效率发送数据。

注2:-vcodec copy要加,否则ffmpeg会重新编码输入的H.264裸流。

注3:最右边的“>test.sdp”用于将ffmpeg的输出信息存储下来形成一个sdp文件。该文件用于RTP的接收。当不加“>test.sdp”的时候,ffmpeg会直接把sdp信息输出到控制台。将该信息复制出来保存成一个后缀是.sdp文本文件,也是可以用来接收该RTP流的。加上“>test.sdp”后,可以直接把这些sdp信息保存成文本。

2.2. 播放承载H.264裸流的RTP。

 

ffplay test.sdp

 

3.RTMP

3.1. 发送H.264裸流至RTMP服务器(FlashMedia Server,Red5等)

面命令实现了发送H.264裸流“chunwan.h264”至主机为localhost,Application为oflaDemo,Path为livestream的RTMP URL。

 

ffmpeg -re -i chunwan.h264 -vcodec copy -f flv rtmp://localhost/oflaDemo/livestream

 

3.2. 播放RTMP

 

ffplay “rtmp://localhost/oflaDemo/livestream live=1”

 

注:ffplay播放的RTMP URL最好使用双引号括起来,并在后面添加live=1参数,代表实时流。实际上这个参数是传给了ffmpeg的libRTMP的。

有关RTMP的处理,可以参考文章:ffmpeg处理RTMP流媒体的命令大全

 

4.测延时

测延时有一种方式,即一路播放发送端视频,另一路播放流媒体接收下来的流。播放发送端的流有2种方式:FFmpeg和FFplay。

通过FFplay播放是一种众所周知的方法,例如:

 

ffplay -f dshow -i video="Integrated Camera"

 

即可播放本地名称为“Integrated Camera”的摄像头。

此外通过FFmpeg也可以进行播放,通过指定参数“-f sdl”即可。例如:

 

ffmpeg -re -i chunwan.h264 -pix_fmt yuv420p –f sdl xxxx.yuv -vcodec copy -f flv rtmp://localhost/oflaDemo/livestream

 

 

就可以一边通过SDL播放视频,一边发送视频流至RTMP服务器。

注1:sdl后面指定的xxxx.yuv并不会输出出来。

注2:FFmpeg本身是可以指定多个输出的。本命令相当于指定了两个输出。

播放接收端的方法前文已经提及,在此不再详述。

 

分享到:
评论

相关推荐

    1078解析推流源代码(netty+javacv+spring+maven+rtp+rtmp)

    【标题】"1078解析推流源代码(netty+javacv+spring+maven+rtp+rtmp)" 涉及的关键技术是网络编程、视频处理和流媒体服务,下面将详细介绍这些领域的相关知识。 【Netty】 Netty 是一个高性能、异步事件驱动的网络...

    0延时ffmpeg推流程序源码,0延时rtsp推流程序源码和超低延时rtsp,rtmp播放器

    主要展示了使用ffmpeg实现0延时rtsp,rtmp推流功能,以及flv视频流文件的存储 支持windows usb摄像机推流和linux嵌入式系统真实开发板的推流 深圳市好游科技同时提供超低延时(100-200毫秒)的rtsp,rtmp播放器 支持...

    easy-player_ffmpegudp_ffmpeghls_rtmp播放器_ffmpeg_rtmpffmpeg_

    支持RTSP、RTMP、HTTP、HLS、UDP、RTP、File等多种流媒体协议播放、支持本地文件播放,支持本地抓拍、本地录像、播放旋转、多屏播放、倍数播放等多种功能特性,核心基于ffmpeg,稳定、高效、可靠、可控,支持Windows...

    java_rtp 实现视频播放与保存

    Java RTP(Real-time Transport Protocol)是Java编程语言中用于实现实时数据传输,特别是音频和视频流的一种协议。RTP通常与RTCP(Real-time Transport Control Protocol)一起使用,为实时多媒体通信提供服务质量...

    2021年音视频流媒体权威资料整理.pdf

    - **音视频传输协议**:RTSP、RTP、TCP、UDP等,在音视频流媒体传输中有各自的应用场景和优势。 ### 技术细节和实践 - **编码压缩原理**:为什么原始视频能被压缩,涉及到的压缩技术包括H264、H265等。 - **直播秒...

    ffmpeg_直接可用bin.rar

    9. **网络协议支持**:FFmpeg 支持多种网络协议,如 HTTP, RTMP, RTP, UDP 等,使得从网络源获取和发送多媒体数据变得简单。 10. **自定义编码设置**:FFmpeg 允许高级用户自定义编码器参数,以实现特定的质量和...

    ffmpeg ffplay 网络播放代码

    以上就是关于"ffmpeg编码通过网络发送到ffplay解码播放"的核心知识点,这个过程涵盖了音视频处理的多个方面,从编码、网络传输到解码播放,都是构建现代流媒体系统的关键技术。通过理解和掌握这些知识,开发者可以...

    RTSPDemo(流媒体的人都知道)

    - 这个示例项目可能是为了帮助开发者理解RTSP协议的工作原理,展示如何建立连接、发送控制命令、接收和播放媒体流。 - 项目可能包含服务器端和客户端代码,分别演示了如何设置和响应RTSP请求。 - 可能包含一些...

    rtp_over_rtsp精简分析.pdf

    - **程序**:开发实时流媒体应用时,可能需要用到的工具包括FFmpeg、GStreamer等。 - **库**:常见的库有libavcodec、libavformat等,它们提供了对RTP、RTSP的支持。 综上所述,RTSP与RTP是实现流媒体传输的关键...

    EasyPlayerPro源码,一款全功能的流媒体播放器

    支持RTSP、RTMP、HTTP、HLS、UDP、RTP、File等多种流媒体协议播放、支持本地文件播放,支持本地抓拍、本地录像、播放旋转、多屏播放、倍数播放等多种功能特性,核心基于ffmpeg,稳定、高效、可靠、可控,支持Windows...

    6 RTSP协议1

    服务器随后通过UDP使用RTP协议将媒体流发送到客户端。 6. **RECORD**:在推流过程中,客户端可能使用RECORD请求传输数据。 7. **TEARDOWN**:最后,客户端发送TEARDOWN请求,关闭会话。 与HTTP协议相比,RTSP增加...

    4 RTP之H264封包和解包1

    在IT领域,尤其是在音视频传输和处理中,RTP(Real-time Transport Protocol)是一种广泛使用的协议,用于在不可靠的网络环境下高效传输实时数据,如音频和视频流。H264作为高效的视频编码标准,其编码后的数据需要...

    推流器c++

    4. **RTSP/RTMP协议**:流媒体服务器通常使用这些协议接收推流。RTSP用于控制媒体传输,RTMP常用于Flash平台,现在多被HLS和WebRTC替代。 5. **网络编程**:理解TCP/IP和UDP协议,以及如何创建可靠的网络连接和数据...

    h.264 streaming introduction live555

    Live555可以作为RTP/UDP的发送端和接收端。 3. **H.264码流解析**:在接收端,Live555需要解析RTP包中的H.264 NAL单元(Network Abstraction Layer Units),并重组成完整的视频帧。 4. **解码和播放**:Live555并...

    dxva2硬解码超低延迟网络+本地播放器

    3、各种流媒体网络协议支持,如rtmp,rtmp,rtp,udp,tcp,hls,http,srt等 4、超时断开重连机制 5、dxva2硬解码+软解码D3D显示,超低CPU占有率 6、支持4K视频,10bit视频,支持各种视频格式,如mp4,mkv,wmv,mov,ts...

    openrtxp.zip

    支持RTP over TCP/UDP. (2)RTSP/RTMP的URL可配置,缺省URL如下: VOD点播(文件回放):rtsp://192.168.2.62/playback/test.mp4 直播:rtsp://192.168.2.62/stream/0 RTMP的url和RTSP一致,只需要把"rtsp"修改为"rtmp" 图像...

    StreamDemo.rar

    服务器端则可能使用FFmpeg、Nginx RTMP模块或者专为流媒体设计的服务,如Wowza或Adobe Flash Media Server。 5. **实时传输协议(RTP)**:RTP常用于互联网上的音频和视频传输,因为它能保证数据的实时性和顺序性。在...

    Android手机之间的视频传输

    直播功能则可能涉及到流媒体服务器,如Wowza、Nginx RTMP等,它们负责接收客户端发送的视频流,并分发给其他客户端。服务器端的实现可能需要了解HTTP Live Streaming (HLS) 或 Dynamic Adaptive Streaming over ...

    Android移动直播源码.zip

    开源库如FFmpeg可用来实现编码和封装成RTMP、HLS或其他流媒体协议,然后推送到服务器。 3. 后端处理:服务器接收并分发直播流,可能包括转码、录制、CDN分发等功能。这需要了解流媒体服务器如Nginx-RTMP或Wowza的...

    ffmepg帮助文档 (带书签)

    FFMPEG是一款强大的多媒体框架,可以处理包括音频、视频在内的多种媒体文件格式。它支持多种编码、解码方式,并能进行复杂的流媒体传输任务。FFMPEG广泛应用于视频转码、音视频剪辑等领域。 #### 二、描述...

Global site tag (gtag.js) - Google Analytics