開發(fā)環(huán)境
Ubuntu 16 64位+Windows10
開發(fā)過(guò)程
1.登錄Ubuntu切換到root用戶(減少權(quán)限問(wèn)題)躁锡,執(zhí)行以下命令
apt update
它的作用是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引稽鞭,這樣才能獲取到最新的軟件包壤圃。它只是更新了apt的資源列表哥艇,沒(méi)有真正的對(duì)系統(tǒng)執(zhí)行更新。如果需要溉潭,要使用apt-get upgrade來(lái)更新
2.源更新之后弄兜,開始下載crtmpserver
wget https://codeload.github.com/j0sh/crtmpserver/zip/centosinit
下載完成后,在目錄下可以看到如下
root@ubuntu:~# ls
centosinit
3.我們需要openssh網(wǎng)絡(luò)協(xié)議的支持雅倒,執(zhí)行以下命令下載libssl-dev
apt install libssl-dev
libssl-dev是OpenSSL通用庫(kù)璃诀。SSL是Secure Sockets Layer(安全套接層協(xié)議)的縮寫,可以在Internet上提供秘密性傳輸蔑匣。
4.然后我們需要解壓crtspserver劣欢,解壓需要使用unzip,如果沒(méi)有安裝裁良,就先安裝
apt install unzip
unzip crtmpserver
5.解壓成功之后進(jìn)入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
執(zhí)行命令
cmake .
命令執(zhí)行成功的前提是g++已經(jīng)被安裝凿将,如果沒(méi)有,則會(huì)提示錯(cuò)誤价脾,通過(guò)以下命令安裝
apt install g++
6.cmake .命令執(zhí)行完之后牧抵,在同樣的目錄下執(zhí)行make命令
make
make的執(zhí)行基于CMakeLists文件的存在,所以侨把,這也是需要在這個(gè)目錄下執(zhí)行的原因
7.make編譯完成之后犀变,我們就可以開啟crtmpserver服務(wù)器了,執(zhí)行下邊的命令
./crtmpserver/crtmpserver ./crtmpserver/crtmpserver.lua
執(zhí)行后可以看到服務(wù)器已經(jīng)開啟的畫面
此時(shí)服務(wù)器已經(jīng)進(jìn)入了接收推流的狀態(tài)
8.接下來(lái)秋柄,我們使用ffmpeg命令行推流試試
ffmpeg -i path(視頻文件地址) -f flv rtmp://192.168.1.1:1932/live/test
-i 指定視頻路徑
-f 執(zhí)行格式获枝,推流使用flv,及時(shí)你的是mp4骇笔,你也不能使用-f mp4
192.168.1.1是你Ubuntu的ip地址省店,1932是crtmpserver的端口號(hào),可以從上邊的圖上看到
執(zhí)行后笨触,我們打開vlc播放器將這個(gè)地址輸入到這里懦傍,點(diǎn)擊媒體->打開網(wǎng)絡(luò)串流
輸入這個(gè)地址,可以看到視頻正常播放了
9.可能存在的幾個(gè)問(wèn)題
a.視頻非常模糊
因?yàn)閒fmepg對(duì)視頻編碼進(jìn)行了處理芦劣,我們將推流的命令改為
ffmpeg -i 文件 -f flv -c copy rtmp:.....
可以看到清晰了很多粗俱,這是因?yàn)樽隽酥苯觕opy處理
b.你的視頻地址輸入vlc中,沒(méi)有播放
如果此時(shí)服務(wù)器正常虚吟,推流也正常的情況下源梭,這種情況娱俺,可能是推流已經(jīng)結(jié)束了,所以要看到視頻需要保證你接收推流的時(shí)間一定要在推流沒(méi)有結(jié)束之前進(jìn)行废麻,也就是看你手速了,短視頻很快就推完了