200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > live555 交叉编译移植到海思开发板

live555 交叉编译移植到海思开发板

时间:2024-04-23 17:31:01

相关推荐

live555 交叉编译移植到海思开发板

本文章参考了。/lawishere/article/details/8182952,写了hi3518的配置说明。特此感谢

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.*文件生成Makefileroot@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/<filename>

where<filename>isafilepresentinthecurrentdirectory.

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

[plain]view plaincopy

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)arcr

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挂载到开发板上执行。运行后会出现

[objc]view plaincopy

LIVE555MediaServer-Testfrank

version0.84(LIVE555StreamingMedialibraryversion.10.07).

PlaystreamsfromthisserverusingtheURL

rtsp://0.0.0.0/<filename>

where<filename>isafilepresentinthecurrentdirectory.

Eachfile"stypeisinferredfromitsnamesuffix:

".264"=>aH.264VideoElementaryStreamfile

".265"=>aH.265VideoElementaryStreamfile

".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

".ogg"or".ogv"or".opus"=>anOggaudioand/orvideofile

".ts"=>aMPEGTransportStreamfile

(a".tsx"indexfile-ifpresent-providesserver"trickplay)

".vob"=>aVOB(MPEG-2videowithAC-3audio)file

".wav"=>aWAVAudiofile

".webm"=>aWebMaudio(Vorbis)+video(VP8)file

See/mediaServer/foradditionaldocumentation.

(Weuseport80foroptionalRTSP-over-HTTPtunneling,orforHT

[objc]view plaincopy

测试的时候会发现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 就可以看到想要的结果,预祝成功。

如何在hisi编译好的live555版本基础上修改成g++编译?

将所有工程中的CROSS_COMPILE变量设置为空即可。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。