利用ffmpeg实现rtmp推流直播

这篇具有很好参考价值的文章主要介绍了利用ffmpeg实现rtmp推流直播。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们这次利用ffmpeg实现rtmp推流(最终推流地址统一为rtmp://127.0.0.1:1935/live/123)

1.首先下载ffmpeg和ffplay

利用ffmpeg实现rtmp推流直播

官方下载链接为:FFmpeg

下载后开始配置环境变量:

系统属性-环境变量-path-添加ffmpeg/bin的路径;

打开命令窗口,输入ffmpeg,检测是否配置成功

利用ffmpeg实现rtmp推流直播

 以上代表正常安装配置(这一步很简单,很容易)

2、ffmpeg查看电脑设备

输入下面的语句即可列出电脑的设备

ffmpeg -list_devices true -f dshow -i dummy

利用ffmpeg实现rtmp推流直播

 可以看到我电脑里面有一个名为 VGA USB Camera  摄像头,没有麦克风

如果设备名称有中文,会出现乱码,想看设备原名,可以去设备管理器中查看

利用ffmpeg实现rtmp推流直播

 最后一行可看到设备的名字;

3、测试摄像头是否可用

cmd中输入下面语句并回车(VGA USB Camera为摄像头名称)

ffplay -f dshow -i video="VGA USB Camera"  

或者

ffplay -f vfwcap -i 0

如果成功弹出播放窗口,则代表设备可用,否则可能是设备不可用或者设备被占用

4、查看摄像头和麦克风信息

cmd中输入下面语句即可查询摄像头信息

ffmpeg -list_options true -f dshow -i video="VGA USB Camera"  

麦克风的信息:

ffmpeg -list_options true -f dshow -i audio="麦克风名字"  

5、Windows搭建RTMP推流服务器

搭建服务器

  • 服务器我们选用高稳定性、高并发的web服务器nginx,利用nginx中的rtmp模块进行推流,使得nginx成为rtmp流媒体服务器
  • 下载地址http://nginx-win.ecsds.eu/download/

利用ffmpeg实现rtmp推流直播

 可选择nginx 1.7.11.3 Gryphon

解压后,在nginx 1.7.11.3 Gryphon目录下新建三个文件夹:

  • m3u8File
  • rec
  • vod

利用ffmpeg实现rtmp推流直播

 在conf目录下,新建一个文件“nginx.conf”

worker_processes  1;   #Nginx进程数,建议设置为等于CPU总核数
 
events {
    worker_connections  1024;  #工作模式与连接数上限
}
 
rtmp_auto_push on;
 
#RTMP服务
rtmp{
    server{
	    listen 1935;        #服务端口
		chunk_size 4096;    #数据传输块的大小
		
		application vod{
		    play ./vod;   #视频文件存放位置
		}
		application live{
		    live on;                     #   
			
			
			hls on;                      #开启hls直播。这个参数把直播服务器改造成实时回放服务器
			#wait_key on;                #对视频切片进行保护,这样就不会产生马赛克了
			hls_path ./html/hls;         #切片视频文件存放位置(HLS,m3u8文件存放位置)
			hls_fragment 2s;             #每个视频切片的时长
			hls_playlist_length 16s;
			recorder myRecord{
			    record all manual;
				record_suffix _.flv;
				record_path ./rec;
			}
			#hls_continuous on;          #连续模式
			#hls_cleanup on;             #对多余的切片进行删除
			#hls_nested on;              #嵌套模式
		}
	}
}
 
#HTTP服务
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
 
    server {
        listen       80;
        server_name  localhost;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
 
        location /live_hls{
		    types{
			    #m3u8 type设置
				application/vnd.apple.mpegurl m3u8;
				#ts分片文件设置
				video/mp2t ts;
			}
			#指向访问m3u8文件目录
			alias ./html/hls;
			    add_header Cache-Control no-cache; #禁止缓存
		}
 
        location /control{
		    rtmp_control all;
		}
		
		location /stat{
		    rtmp_stat all;
			rtmp_stat_stylesheet stat.xsl;
		}
		
		location /stat.xsl{
		    root ./nginx-rtmp-module-master;
		}
 
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

cmd在nginx.exe所在的目录启动nginx,输入命令: start nginx
在浏览器输入127.0.0.1或者localhost

利用ffmpeg实现rtmp推流直播

 6、本地视频的推流

先进行简单的本地视频推流模拟,我们在ffmpeg的目录下放置一个视频,然后cmd进入该目录,把视频推流至rtmp://127.0.0.1:1935/live/123(127.0.0.1:1935为rtmp服务器地址、live为nginx配置节点、123当做密钥,推流拉流地址一样即可播放),语句如下

ffmpeg -re -i test1.mp4 -f flv rtmp://127.0.0.1:1935/live/123

此时ffmpeg源源不断的把视频推流至服务器,如果地址没错,可以利用vlc或其他手段实现拉流,这里就先不解释如何拉流

7、摄像头推流

接下来正式把对摄像头进行推流,从前面我们知道摄像头名称为VGA USB Camera,而且推流服务器ip为127.0.0.1:1935,关键字为live,所以cmd中输入以下语句:

ffmpeg -f dshow -i video="VGA USB Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123

利用ffmpeg实现rtmp推流直播

 和本地视频推流一样,摄像头拍到的画面会实时推流出去(当然会有延迟而且现在是没有声音的),当地址正确时,可以实现拉流

8、麦克风推流

前面介绍了摄像头画面推流,可是没有声音,这次我们把麦克风声音推流出去,cmd中输入下面语句

ffmpeg  -f dshow -i audio="麦克风" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123

和前面差不多,声音被推流出去了,通过vlc拉流可以听到录制的声音,但很明显不会有画面

9、摄像头&麦克风推流

要实现同时推流摄像头画面与声音,此时我们的语句应该如下

ffmpeg -f dshow -i video="VGA USB Camera" -f dshow -i audio="麦克风name" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123

或者

ffmpeg -f dshow -i video="VGA USB Camera":audio="麦克风 name" -vcodec libx264  -r 25  -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123

10、拉流

将推送的服务器的视频流拉下来播放,我们使用vlc播放器。

利用ffmpeg实现rtmp推流直播

 利用ffmpeg实现rtmp推流直播

 OK,到此,我们简单的推流服务器就搭起来了,拉流也可以用其他方式,比如web端的开发等,这个不熟,所以暂时使用VLC可检测文章来源地址https://www.toymoban.com/news/detail-402700.html

到了这里,关于利用ffmpeg实现rtmp推流直播的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RTMP直播推流(一)视频推流

    关于cmakeList的配置,这里就直接给出代码:  在视频推流中,java层主要实现初始化、设置画布、转摄像头、开始直播和停止直播操作: MainActivity: LivePush代码: VideoChannel: 可以使用debug看一看操作的流程 下面进行jni层的开发: 首先要初始化设置: 初始化编码器: setVideo

    2024年02月02日
    浏览(27)
  • 用EasyAVFilter(ffmpeg.dll)实现RTSP流转RTMP推流的demo示例Linux版

    ffmpeg.exe做拉流转推流不靠谱,不能产品化;avcodec、avfilter做拉流转推流门槛又太高;用EasyAVFilter将ffmpeg.c改成ffmpeg.dll,用起来刚刚好,直接上示例代码: Demo下载地址:https://www.easydarwin.org/tools/153.html

    2024年02月21日
    浏览(35)
  • FFmpeg/opencv + C++ 实现直播拉流和直播推流(对视频帧进行处理)

    本文主要使用C++ ffmpeg库实现对除去webrtc的视频流进行拉流,而后经过自身的处理,而后通过将处理后的视频帧进行编码,最后进行推流处理。详情请看代码 参考链接: https://blog.csdn.net/weixin_45807901/article/details/129086344 https://blog.csdn.net/T__zxt/article/details/126827167

    2024年02月16日
    浏览(41)
  • RTSP 和 RTMP通过ffmpeg实现将本地摄像头推流到RTSP服务器

    一、流媒体:RTSP 和RTMP 1、RTSP 和 RTMP的工作原理 1)RTSP工作原理 用户设备向视频流平台发送 RTSP 请求 视频流平台返回可以操作的请求列表,比如播放、暂停等 用户设备向视频流平台发送具体的请求,比如播放 视频流平台解析请求并调用指定机制启动视频流处理 由于 RTSP 依

    2024年02月05日
    浏览(29)
  • 树莓派3B+ /+ CSI摄像头 + FFmpeg + SRS 实现直播推流

    手头有一个树莓派3B+ 和一块CSI摄像头,想要实现一个推拉流直播的效果。 所需材料: 开发板(我用的是树莓派3B+)、CIS摄像头、云服务器(用来搭建SRS服务器) 使用树莓派+CSI摄像头来做画面采集,然后使用FFmpeg推流到SRS云服务器上,然后用户可以拉取SRS服务器上的视频流

    2024年01月22日
    浏览(37)
  • RTSP 和 RTMP原理 & 通过ffmpeg实现将本地摄像头推流到RTSP服务器

    0、参考资料 秒懂流媒体协议 RTMP 与 RTSP 什么是RTMP 和 RTSP?它们之间有什么区别? RTSP和RTMP的区别是什么? 1、RTSP 和 RTMP的工作原理 1)RTSP工作原理 用户设备向视频流平台发送 RTSP 请求 视频流平台返回可以操作的请求列表,比如 播放、暂停 等 用户设备向视频流平台发送具

    2024年02月08日
    浏览(43)
  • 大疆无人机基于RTMP服务推流直播

    流程:配置nginx服务器---打开服务器----配置无人机rtmp地址,将无人机画面推流到服务器上----运行vlc从服务器上拉取视频流播放。 学习视频链接(可借鉴):https://www.youtube.com/watch?v=QNEjTGQL7wc 一、在linux服务器中(ubuntu18.04)下载安装docker容器,docker分为docker engine 和 docker desktop 我

    2024年02月05日
    浏览(56)
  • nginx rtmp http_flv直播推流

    安装配置nginx 配置 [root@localhost conf]# cat nginx.conf|grep -ivE ‘ #| $| #’ [root@localhost conf]# cat flv.conf |grep -vE ‘^$’ 启动 注册服务 测试 - 推流 -----------------end

    2024年02月14日
    浏览(33)
  • 音视频开发---ffmpeg rtmp推流

    推流是将输入视频数据推送至流媒体服务器, 输入视频数据可以是本地视频文件(avi,mp4,flv......),也可以是内存视频数据,或者摄像头等系统设备,也可以是网络流URL。本篇介绍将本地视频文件通过FFmpeg编程以RTMP直播流的形式推送至RTMP流媒体服务器的方法。 推流的网络拓扑

    2024年02月16日
    浏览(57)
  • ffmpeg推流rtmp指定udp传输

    RTMP (Real-Time Messaging Protocol) 是一个用于音频、视频和数据的传输协议。RTMP 协议本身可以支持 TCP 或 UDP 作为其底层传输协议。 在 RTMP 中,TCP 是默认的传输协议,它的稳定性和可靠性比 UDP 更好。但是,TCP 的延迟较高,对于实时性要求较高的音视频应用来说可能不太适合。 相

    2024年02月15日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包