開發環境
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中,沒有播放
如果此時服務器正常,推流也正常的情況下,這種情況,可能是推流已經結束了,所以要看到視頻需要保證你接收推流的時間一定要在推流沒有結束之前進行,也就是看你手速了,短視頻很快就推完了