windows下搭建ffmpeg+nginx+rtmp-module搭建实时视频环境

技术这条路上总是路漫漫其修远兮,吾将上下而求索兮~~

下面是一个简述,特别是新手建议仔细读读,知道这个是什么,免得一头雾水,大牛就免了。

一、简述:

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序

它提供了非常强大的功能,可以完成音视频的编码、解码、转码、视频采集、后处理(抓图、水印、封装/解封装、格式转换等),还有流媒体服务等诸多功能,可以说涵盖了音视频开发中绝大多数的领域。原生的FFmpeg是在Linux环境下开发的,但是通过各种方法(比如交叉编译等)可以使它运行在多种平台环境上,具有比较好的可移植性。

FFmpeg项目的官方网址为:https://ffmpeg.org/

 

FFmpeg64位下载地址: https://ffmpeg.zeranoe.com/builds/win64/static/

可以根据你的需求下载不同版本;

构成FFmpeg主要有三个部分,第一部分是四个作用不同的工具软件

  • ffmpeg.exe:音视频转码、转换器 (这个是核心ffmpeg.exe可谓是整个工程的核心所在,它的主要功能是完成音视频各种各样的转换操作)
  • ffplay.exe:简单的音视频播放器
  • ffserver.exe:流媒体服务器 (有的这个没有)
  • ffprobe.exe:简单的多媒体码流分析器

Nginx ("engine x") 是一个高性能的HTTP反向代理服务器,也是一个电子邮件IMAP/POP3/SMTP)代理服务器。能够支持高达 50,000 个并发连接数的响应(支持高并发)。

nginx官网:http://nginx.org/

下载nginx-rtmp-windows版:https://github.com/illuspas/nginx-rtmp-win32

RTMPReal Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP协议

二、安装环境

1.启动nginx

解压好ffmpeg,nginx后,cmd打开黑窗口---进入nginx解压路径---执行如下步骤:

以上步骤运行nginx,如果启动了可以看到:进程中有配置好的端口号;


新开一个黑窗口cmd-------netstat  -ano  看到如下都以说明nginx这个服务已经启动;

 

2.启动ffmpeg

新打开一个黑窗口cmd,进入ffmpeg解压路径,找到并启动ff-prompt.bat(当然也可以直接找到它,双击打开就可以了,是一样的),启动后如下图所示:


3测试一下

在ffmpeg测斌目录下可以看到:ffmpeg.exeffplay.exe,ffprobe.exe三个部分;

3.1】测试ffplay.exe bin目录下执行ffplay.exe


 

 执行后可以观看到视频:(左边黑窗口中可以看到视频的一些数据,格式,分辨率,视频时间,播放时间等等数据)


3.2】测试ffprobe的使用:

ffprobe可以提供简单的音视频文件分析功能。最简单的方法同ffplay类似:

ffprobe.exe -i../video/IMG_0886.MOV


分析完成后,ffprobe会显示音视频文件中包含的每个码流的信息,包括编码格式、像素分辨率、码率、帧率等信息:

执行后可以看到分析的数据;

3.3】测试ffmpeg的使用

ffmpeg.exe可谓是整个工程的核心所在,它的主要功能是完成音视频各种各样的转换操作。

ffmpeg支持的所有编码器格式可以通过以下命令查看:

ffmpeg.exe–encoders

转码操作:

ffmpeg  -i C:\Users\Administrator\Desktop\mp4\video.mp4 -c copy C:\Users\Administrator\Desktop\mp4\video.avi

执行命令后,可以看到在原来文件夹中生成了一个avi格式视频,再次执行ffplay.exe后可以观看本视频。

@REM提取视频流

ffmpeg–i C:\Users\Administrator\Desktop\mp4\video.mp4 -c:v copy –anC:\Users\Administrator\Desktop\mp4\video11.mp4

@REM提取音频流

ffmpeg-i C:\Users\Administrator\Desktop\mp4\video.mp4 -c:a copy -vnC:\Users\Administrator\Desktop\mp4\video1.aac

视频截取:使用ffmpeg命令并指定参数-ss-t,分别表示截取开始时刻和截取时长

@REM视频截取

ffmpeg-ss 5 -t 5 -i "C:\Users\Administrator\Desktop\mp4\video (2).mp4" -ccopy

 "C:\Users\Administrator\Desktop\mp4\videooo.mp4"

 测试视频直播:

以下这条命令,是把本地的视频流,推送到 rtmp://localhost:1935/live/polo,然后用第二条命令ffplay去播放,注意的是一定要边推送,边播放,才能看到效果;

1. ffmpeg.exe -re -i C:\Users\Administrator\Desktop\mp4\video(2).mp4-vcodec libx264 -f flv rtmp://localhost:1935/live/polo

2. ffplay -i rtmp://localhost:1935/live/polo

 

下面这个可以直接监控流:

http://localhost:8082/index.html可以监控流

 

 

 

 

 

 

 

 

命令参考:

pkill -9 nginx  杀死nginx  进程

netstat -tlnp|grep 1935  查询1935端口那个在占用

参考文章:

http://blog.csdn.net/chenyefei/article/details/52289731

http://blog.csdn.net/gold__sun/article/details/50563130

http://lib.csdn.net/article/liveplay/37929

http://blog.chinaunix.net/uid-26000296-id-5747703.html

 

你可能感兴趣的:(视频直播技术)