36.Android Studio下FFmpeg的編譯和使用(搭建crtmpserver服務器並使用ffmepg,vlc測試推流播放)

開發環境

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章