FFmpeg推拉流命令
FFmpeg推拉流命令
命令简介
它可以将本地的视频/音频流推送到服务器,也可以将服务器上的音视频流拉到本地。
推流命令的命令格式
ffmpeg -re -i [输入文件] -c:v [视频编码器] -c:a [音频编码器] -f [输出格式] [推流地址]
参数解析
-re
表示采用实时模式,以原始速度推流;-i [输入文件]
表示输入源,可以是本地文件、摄像头、屏幕录制等;-c:v [视频编码器]
表示视频编码器,可以选择H.264、H.265等编码器(可选);-c:a [音频编码器]
表示音频编码器,可以选择AAC、MP3等编码器(可选);-f [输出格式]
表示推流输出格式,一般为RTMP协议;[推流地址]
表示推流地址,格式为[协议名]://[服务器地址]/[应用名]/[流名]
。
拉流命令的命令格式
ffmpeg -i [拉流地址] [输出参数] [输出文件]
参数解析
-i [拉流地址]
表示拉流地址,格式为[协议名]://[服务器地址]/[应用名]/[流名]
;[输出参数]
表示输出参数,可以指定视频分辨率、帧率、码率等参数;[输出文件]
表示输出文件名,一般为本地文件。
协议
- RTMP:RTMP是一种实时消息传输协议,它通常用于将音频、视频和数据流从推流端传输到支持RTMP协议的流媒体服务器。RTMP在直播、点播和互动应用中得到广泛应用。
- HTTP:HTTP是一种常用的网络协议,用于在Web上传输超文本和其他资源。在流媒体中,HTTP协议可以通过HTTP Live Streaming(HLS)或Dynamic Adaptive Streaming over HTTP(DASH)等协议来进行流媒体的传输和播放。
- UDP:UDP是一种无连接的传输协议,适用于实时传输和实时性要求较高的应用,如实时直播和视频会议。UDP提供了快速传输和较低的延迟,但不保证可靠性。
- RTP:RTP是一种用于实时传输音视频数据的协议,常用于音视频会议、IP电话和流媒体传输。RTP通过提供序列号、时间戳和负载类型等信息,实现了对实时数据的传输和同步。
- RTSP:RTSP是一种用于控制实时流媒体的传输协议,用于控制流媒体的播放、暂停、快进等操作。RTSP常与RTP协议结合使用,实现流媒体的传输和控制。
- SRT: SRT是一种可靠的流媒体传输协议,具有低延迟和高安全性,适用于远程视频传输和点对点直播等场景。
例子
从某个直播流网址拉取直播流
ffmpeg -i rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid output.mp4
注意:当你输入上面的命令后会一直拉流,直到该地址的流被拉完(直播/视频结束),如果想中途截止拉流可以使用ctrl+c终止拉流,这样会终止掉拉流,并且之前拉的流已经存在在你指定的output.mp4中。