这两天研究了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)" 涉及的关键技术是网络编程、视频处理和流媒体服务,下面将详细介绍这些领域的相关知识。 【Netty】 Netty 是一个高性能、异步事件驱动的网络...
主要展示了使用ffmpeg实现0延时rtsp,rtmp推流功能,以及flv视频流文件的存储 支持windows usb摄像机推流和linux嵌入式系统真实开发板的推流 深圳市好游科技同时提供超低延时(100-200毫秒)的rtsp,rtmp播放器 支持...
支持RTSP、RTMP、HTTP、HLS、UDP、RTP、File等多种流媒体协议播放、支持本地文件播放,支持本地抓拍、本地录像、播放旋转、多屏播放、倍数播放等多种功能特性,核心基于ffmpeg,稳定、高效、可靠、可控,支持Windows...
Java RTP(Real-time Transport Protocol)是Java编程语言中用于实现实时数据传输,特别是音频和视频流的一种协议。RTP通常与RTCP(Real-time Transport Control Protocol)一起使用,为实时多媒体通信提供服务质量...
- **音视频传输协议**:RTSP、RTP、TCP、UDP等,在音视频流媒体传输中有各自的应用场景和优势。 ### 技术细节和实践 - **编码压缩原理**:为什么原始视频能被压缩,涉及到的压缩技术包括H264、H265等。 - **直播秒...
9. **网络协议支持**:FFmpeg 支持多种网络协议,如 HTTP, RTMP, RTP, UDP 等,使得从网络源获取和发送多媒体数据变得简单。 10. **自定义编码设置**:FFmpeg 允许高级用户自定义编码器参数,以实现特定的质量和...
以上就是关于"ffmpeg编码通过网络发送到ffplay解码播放"的核心知识点,这个过程涵盖了音视频处理的多个方面,从编码、网络传输到解码播放,都是构建现代流媒体系统的关键技术。通过理解和掌握这些知识,开发者可以...
- 这个示例项目可能是为了帮助开发者理解RTSP协议的工作原理,展示如何建立连接、发送控制命令、接收和播放媒体流。 - 项目可能包含服务器端和客户端代码,分别演示了如何设置和响应RTSP请求。 - 可能包含一些...
- **程序**:开发实时流媒体应用时,可能需要用到的工具包括FFmpeg、GStreamer等。 - **库**:常见的库有libavcodec、libavformat等,它们提供了对RTP、RTSP的支持。 综上所述,RTSP与RTP是实现流媒体传输的关键...
支持RTSP、RTMP、HTTP、HLS、UDP、RTP、File等多种流媒体协议播放、支持本地文件播放,支持本地抓拍、本地录像、播放旋转、多屏播放、倍数播放等多种功能特性,核心基于ffmpeg,稳定、高效、可靠、可控,支持Windows...
服务器随后通过UDP使用RTP协议将媒体流发送到客户端。 6. **RECORD**:在推流过程中,客户端可能使用RECORD请求传输数据。 7. **TEARDOWN**:最后,客户端发送TEARDOWN请求,关闭会话。 与HTTP协议相比,RTSP增加...
在IT领域,尤其是在音视频传输和处理中,RTP(Real-time Transport Protocol)是一种广泛使用的协议,用于在不可靠的网络环境下高效传输实时数据,如音频和视频流。H264作为高效的视频编码标准,其编码后的数据需要...
4. **RTSP/RTMP协议**:流媒体服务器通常使用这些协议接收推流。RTSP用于控制媒体传输,RTMP常用于Flash平台,现在多被HLS和WebRTC替代。 5. **网络编程**:理解TCP/IP和UDP协议,以及如何创建可靠的网络连接和数据...
Live555可以作为RTP/UDP的发送端和接收端。 3. **H.264码流解析**:在接收端,Live555需要解析RTP包中的H.264 NAL单元(Network Abstraction Layer Units),并重组成完整的视频帧。 4. **解码和播放**:Live555并...
3、各种流媒体网络协议支持,如rtmp,rtmp,rtp,udp,tcp,hls,http,srt等 4、超时断开重连机制 5、dxva2硬解码+软解码D3D显示,超低CPU占有率 6、支持4K视频,10bit视频,支持各种视频格式,如mp4,mkv,wmv,mov,ts...
支持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" 图像...
服务器端则可能使用FFmpeg、Nginx RTMP模块或者专为流媒体设计的服务,如Wowza或Adobe Flash Media Server。 5. **实时传输协议(RTP)**:RTP常用于互联网上的音频和视频传输,因为它能保证数据的实时性和顺序性。在...
直播功能则可能涉及到流媒体服务器,如Wowza、Nginx RTMP等,它们负责接收客户端发送的视频流,并分发给其他客户端。服务器端的实现可能需要了解HTTP Live Streaming (HLS) 或 Dynamic Adaptive Streaming over ...
开源库如FFmpeg可用来实现编码和封装成RTMP、HLS或其他流媒体协议,然后推送到服务器。 3. 后端处理:服务器接收并分发直播流,可能包括转码、录制、CDN分发等功能。这需要了解流媒体服务器如Nginx-RTMP或Wowza的...
FFMPEG是一款强大的多媒体框架,可以处理包括音频、视频在内的多种媒体文件格式。它支持多种编码、解码方式,并能进行复杂的流媒体传输任务。FFMPEG广泛应用于视频转码、音视频剪辑等领域。 #### 二、描述...