文章目錄
- 1.說明
- 2.Live555移植
-
- 2.1.源碼擷取
- 2.2.修改配置檔案
-
- 2.2.1.LOCALE_NOT_USED宏說明
- 2.3.編譯
-
- 2.3.1.生成Makefile
- 2.3.2.編譯
- 2.4.測試
-
- 2.4.1.裝置端運作
- 2.4.2.Vlc配置
1.說明
本文章記錄在hi3518e上移植live555,以實作将之前生成的h264裸流檔案的點播操作
2.Live555移植
2.1.源碼擷取
官方連結:http://www.live555.com/liveMedia/public/
wget http://www.live555.com/liveMedia/public/live.2019.06.28.tar.gz
tar -zxvf live.2019.06.28.tar.gz
2.2.修改配置檔案
修改配置檔案(config.armlinux),修改項主要有兩個,
- 交叉編譯工具鍊路徑修改:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/arm-hisiv300-linux-uclibcgnueabi-
- 增加一個宏: -DLOCALE_NOT_USED
CROSS_COMPILE?= /opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/arm-hisiv300-linux-uclibcgnueabi-
COMPILE_OPTS = $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DLOCALE_NOT_USED
2.2.1.LOCALE_NOT_USED宏說明
由于在開發闆上使用的uclibc交叉編譯工具鍊編譯,工具鍊中缺少xlocale.h這個頭檔案,而live555中liveMeida/locale.hh中調用
該頭檔案,編譯時會導緻如下錯誤:
arm-openwrt-linux-uclibcgnueabi-g++.bin: warning: environment variable 'STAGING_DIR' not defined
In file included from MPEG4GenericRTPSink.cpp:22:0:
include/Locale.hh:67:3: error: 'locale_t' does not name a type
locale_t fLocale, fPrevLocale;
^
Makefile:33: recipe for target 'MPEG4GenericRTPSink.o' failed
make[1]: *** [MPEG4GenericRTPSink.o] Error 1
make[1]: Leaving directory '/home/chengqy/workspace/live555/live/liveMedia'
Makefile:34: recipe for target 'all' failed
make: *** [all] Error 2
通過添加宏:LOCALE_NOT_USED,可以關閉locale這個子產品,防止編譯報錯
2.3.編譯
2.3.1.生成Makefile
./genMakefiles armlinux
2.3.2.編譯
make
2.4.測試
2.4.1.裝置端運作
将生成測試程式:
live/mediaServer/live555MediaServer
拷貝到裝置上,然後運作,運作結果如下所示:
需要注意的是,測試程式通過檔案的字尾名來識别格式
2.4.2.Vlc配置
在vlc中使用打開網絡串流的方式,url格式為:rtsp://開發闆IP/視屏檔案名稱
配置完成後,點選播放,可以在vlc中看到之前錄取的視訊檔案