1、首先到它的主页下载一个源码包:
/liveMedia/public/
我下载的是latest的,具体什么版本还真不清楚
2、放到linux目录下解压:
root@kubuntu:/home/franktarzxvflive555-latest.tar.gz
root@kubuntu:/home/frank#cdlive
root@kubuntu:/home/frank/live#
3、首先尝试在PC的Linux上编译:
区别于传统的源码包,不是传统的配置方式,而是通过genMakefiles配对目录下的config.*文件生成Makefile
root@kubuntu:/home/frank/live#./genMakefileslinux
root@kubuntu:/home/frank/live#make
编译很顺利,然后上网找一个*.264文件放在当前目录下
执行mediaServer目录下的live555MediaServer服务器原型
root@kubuntu:/home/frank/live#./mediaServer/live555MediaServer
LIVE555MediaServer
version0.75(LIVE555StreamingMedialibraryversion.11.08).
PlaystreamsfromthisserverusingtheURL
rtsp://192.168.1.41:8554/
whereisafilepresentinthecurrentdirectory.
Eachfile'stypeisinferredfromitsnamesuffix:
".264"=>aH.264VideoElementaryStreamfile
".aac"=>anAACAudio(ADTSformat)file
".ac3"=>anAC-3Audiofile
".amr"=>anAMRAudiofile
".dv"=>aDVVideofile
".m4e"=>aMPEG-4VideoElementaryStreamfile
".mkv"=>aMatroskaaudio+video+(optional)subtitlesfile
".mp3"=>aMPEG-1or2Audiofile
".mpg"=>aMPEG-1or2ProgramStream(audio+video)file
".ts"=>aMPEGTransportStreamfile
(a".tsx"indexfile-ifpresent-providesserver'trickplay'support)
".wav"=>aWAVAudiofile
".webm"=>aWebMaudio(Vorbis)+video(VP8)file
See/mediaServer/foradditionaldocumentation.
(Weuseport8080foroptionalRTSP-over-HTTPtunneling,orforHTTPlivestreaming(forindexedTransportStreamfilesonly).)
通过VLC可以点播rtsp://192.168.1.41:8554/test.264视频,
(注意:test.264所在的目录要和live555MediaServer执行目录相一致,若test.264放在live目录下,则需要在live目录下执行./mediaServer/live555MediaServer)
4、交叉编译
编译器arm-hisiv100nptl-linux-g++
同理如果通过genMakefiles生成交叉编译的Makefile,我们需要一个对应的config.*
因此我们复制一个config.hi3518,命令:cp config.armlinux config.hi3518
CROSS_COMPILE?=arm-hisiv100nptl-linux-
COMPILE_OPTS =$(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64
C =c
C_COMPILER =$(CROSS_COMPILE)gcc
C_FLAGS =$(COMPILE_OPTS)
CPP =cpp
CPLUSPLUS_COMPILER =$(CROSS_COMPILE)g++
CPLUSPLUS_FLAGS =$(COMPILE_OPTS) -Wall -DBSD=1 -DLOCALE_NOT_USED
OBJ =o
LINK =$(CROSS_COMPILE)g++ -o
LINK_OPTS =
CONSOLE_LINK_OPTS =$(LINK_OPTS)
LIBRARY_LINK =$(CROSS_COMPILE)ar cr
LIBRARY_LINK_OPTS =$(LINK_OPTS)
LIB_SUFFIX =a
LIBS_FOR_CONSOLE_APPLICATION =
LIBS_FOR_GUI_APPLICATION =
EXE =
然后与在PC上编译一样,进行编译。
root@kubuntu:/home/frank/live#./genMakefileshi3518
root@kubuntu:/home/frank/live#makeclean;make
这里要记得先make clean,否则因为之前在PC上编译的目标文件没清楚会导致链接失败。
编译时会产生一个错误
InfileincludedfromMPEG4GenericRTPSink.cpp:22:
include/Locale.hh:47:123:xlocale.h:Nosuchfileordirectory
InfileincludedfromMPEG4GenericRTPSink.cpp:22:
include/Locale.hh:62:error:`locale_t'doesnotnameatype
make[1]:***[MPEG4GenericRTPSink.o]Error1
make[1]:Leavingdirectory`/home/frank/live/liveMedia'
make:***[all]Error2
这个是由于海思使用的是uClinux,并没有xlocale.h这个头文件,
而live555内部的一个locale模块调用了(见liveMeida/locale.hh),因此通过编译选项把他去掉。
修改config.hi3507,在编译选项上加入-DLOCALE_NOT_USED把此模块去掉。上面那段是已经去掉的
再次生成Makefile并编译
root@kubuntu:/home/frank/live#./genMakefileshi3518
root@kubuntu:/home/frank/live#make
编译成功!
5 移植到海思开发板上
将mediaServer的live555MediaServer(你可以试一下,在linux系统中打开这个是出错误的),通过nfs挂载到开发板上执行。运行后会出现
LIVE555 Media Server-Test frank
version 0.84 (LIVE555 Streaming Media library version .10.07).
Play streams from this server using the URL
rtsp://0.0.0.0/
where is a file present in the current directory.
Each file's type is inferred from its name suffix:
".264" => a H.264 Video Elementary Stream file
".265" => a H.265 Video Elementary Stream file
".aac" => an AAC Audio (ADTS format) file
".ac3" => an AC-3 Audio file
".amr" => an AMR Audio file
".dv" => a DV Video file
".m4e" => a MPEG-4 Video Elementary Stream file
".mkv" => a Matroska audio+video+(optional)subtitles file
".mp3" => a MPEG-1 or 2 Audio file
".mpg" => a MPEG-1 or 2 Program Stream (audio+video) file
".ogg" or ".ogv" or ".opus" => an Ogg audio and/or video file
".ts" => a MPEG Transport Stream file
(a ".tsx" index file - if present - provides server 'trick play)
".vob" => a VOB (MPEG-2 video with AC-3 audio) file
".wav" => a WAV Audio file
".webm" => a WebM audio(Vorbis)+video(VP8) file
See /mediaServer/ for additional documentation.
(We use port 80 for optional RTSP-over-HTTP tunneling, or for HT
测试的时候会发现RTSP的地址是0.0.0.0;
在nfs挂载的时候,已经用ifconfig eth0 192.168.0.166 将板子的IP地址设为了192.168.0.166 ,为什么还是0 呢
需要用到route add default gw 192.168.0.1,这个192.168.0.1是网关的IP地址,也就是你的路由器的IP地址,命令意思的是添加一条默认网关命令,将所有的数据包都转发到192.168.0.1;注意开发板上是运行./live555MediaServer,发现时没有端口号的,直接rtsp://192.168.0.166 就可以看到想要的结果,预祝成功。