开发环境
Ubuntu 16 64位+Windows10
开发过程
1.登录Ubuntu切换到root用户(减少权限问题),执行以下命令
apt update
它的作用是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。它只是更新了apt的资源列表,没有真正的对系统执行更新。如果需要,要使用apt-get upgrade来更新
2.源更新之后,开始下载crtmpserver
wget https://codeload.github.com/j0sh/crtmpserver/zip/centosinit
下载完成后,在目录下可以看到如下
root@ubuntu:~# ls
centosinit
3.我们需要openssh网络协议的支持,执行以下命令下载libssl-dev
apt install libssl-dev
libssl-dev是OpenSSL通用库。SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。
4.然后我们需要解压crtspserver,解压需要使用unzip,如果没有安装,就先安装
apt install unzip
unzip crtmpserver
5.解压成功之后进入crtmpserver的以下目录中
root@ubuntu:~/crtmpserver-centosinit/builders/cmake# ls
androidapplestreaming CMakeFiles common lua run toolchain-sourcery_g++_lite.cmake vmtests
applications cmake_find_modules crtmpserver Makefile tests trafficdissector
cleanup.sh cmake_install.cmake debianpackage.patch package.sh thelib vg.sh
CMakeCache.txt CMakeLists.txt ltib precompiled.gch tinyxml vm
执行命令
cmake .
命令执行成功的前提是g++已经被安装,如果没有,则会提示错误,通过以下命令安装
apt install g++
6.cmake .命令执行完之后,在同样的目录下执行make命令
make
make的执行基于CMakeLists文件的存在,所以,这也是需要在这个目录下执行的原因
7.make编译完成之后,我们就可以开启crtmpserver服务器了,执行下边的命令
./crtmpserver/crtmpserver ./crtmpserver/crtmpserver.lua
执行后可以看到服务器已经开启的画面
此时服务器已经进入了接收推流的状态
8.接下来,我们使用ffmpeg命令行推流试试
ffmpeg -i path(视频文件地址) -f flv rtmp://192.168.1.1:1932/live/test
-i 指定视频路径
-f 执行格式,推流使用flv,及时你的是mp4,你也不能使用-f mp4
192.168.1.1是你Ubuntu的ip地址,1932是crtmpserver的端口号,可以从上边的图上看到
执行后,我们打开vlc播放器将这个地址输入到这里,点击媒体->打开网络串流
输入这个地址,可以看到视频正常播放了
9.可能存在的几个问题
a.视频非常模糊
因为ffmepg对视频编码进行了处理,我们将推流的命令改为
ffmpeg -i 文件 -f flv -c copy rtmp:.....
可以看到清晰了很多,这是因为做了直接copy处理
b.你的视频地址输入vlc中,没有播放
如果此时服务器正常,推流也正常的情况下,这种情况,可能是推流已经结束了,所以要看到视频需要保证你接收推流的时间一定要在推流没有结束之前进行,也就是看你手速了,短视频很快就推完了