OK6410下的wiif的视频小车——vlc移植部分
开始移植vlc2.1.5到ok6410开发板中搭建简单的视频流媒体服务器,读取h264原始数据,ts流封包,rtp协议传输。
电脑: vmware ubuntu12.04
gcc4.3.2
vlc配置如下:
CC=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc
CXX=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-g++
ARCH=arm
CFLAGS='-g -O2'
LDFLAGS=-Wl,--as-needed
CPPFLAGS=
CXXFLAGS='-g -O2'
./configure \
--enable-run-as-root \
--prefix=/home/per/workbench/install_ex \
--disable-debug \
--host=arm-none-linux-gnueabi \
--disable-mtp \
--disable-dbus \
--disable-mmx \
--disable-sse \
--disable-lua \
--disable-notify \
--disable-chromaprint \
--disable-taglib \
--disable-live555 \
--disable-dc1394 \
--disable-dvdnav \
--disable-smbclient \
--enable-dvbpsi \
--disable-v4l2 \
--disable-libcddb \
--disable-vcd \
--disable-ogg \
--disable-mkv \
--disable-mod \
--disable-mpc \
--disable-gme \
--disable-mad \
--disable-avcodec \
--disable-avformat \
--disable-swscale \
--disable-postproc \
--disable-libtar \
--disable-a52 \
--disable-dca \
--disable-zvbi \
--disable-xvideo \
--disable-glx \
--disable-xcb \
--disable-sdl \
--disable-sdl-image \
--disable-freetype \
--disable-fribidi \
--disable-fontconfig \
--disable-libxml2 \
--disable-skins2 \
--disable-qt \
--disable-atmo \
\
--disable-vlm \
--disable-screen \
--disable-wma-fixed \
--disable-oss \
--disable-pulse \
--disable-alsa \
--disable-upnp \
--disable-ncurses \
--disable-libgcrypt \
--enable-vlc \
\
--disable-gnutls \
--disable-libmpeg2 \
--disable-vorbis \
--disable-speex \
--disable-schroedinger \
--disable-png \
--enable-x264 \
--disable-fluidsynth \
--disable-kate \
--disable-tiger \
--disable-bonjour \
\
--disable-jack \
--disable-dv1394 \
--disable-dvdread \
--disable-bluray \
--disable-linsys \
--disable-samplerate \
--disable-dirac \
--disable-libass \
--disable-theora \
--disable-twolame \
--disable-udev \
--disable-svg \
--disable-opencv \
--disable-caca \
--disable-gnomevfs \
--disable-shout \
--enable-static \
编译过程中发现缺少各种库,需要自己进行交叉编译后使用,将编译后prefix指定路径下的库文件和头文件拷贝到交叉编译器相应的库文件和头文件里面(这样做可能不是很标准吧?,下面的库之间也有依赖关系需要编译后马上拷贝生成的库文件和头文件到交叉编译器)
交叉编译各种库如下:
Cross-Compiling libogg
./configure --host=arm-none-linux-gnueabi ARCH=arm --prefix=/home/per/workbench/install_ex/libogg
make
make install
Cross-Compiling libiconv
./configure --host=arm-none-linux-gnueabi ARCH=arm --prefix=/home/per/workbench/install_ex/libiconvmake
make install
Cross-Compiling FLAC
./configure --host=arm-none-linux-gnueabi ARCH=arm --prefix=/home/per/workbench/install_ex/FLAC --with-mpeg4ip --enable-static --with-ogg=/home/per/workbench/install_ex/libogg --with-ogg-libraries=/home/per/workbench/install_ex/libogg/lib --with-libiconv-prefix=/home/per/workbench/install_ex/libiconv --with-ogg-includes=/home/per/workbench/install_ex/libogg/include --disable-cpplibsmake
make install
Cross-Compiling x264
./configure --host=arm-none-linux-gnueabi --cross-prefix=/usr/local/arm/4.3.2/bin --prefix=/home/per/workbench/install_ex/x264 --disable-opencl --disable-asm --disable-threadmake
make install
Cross-Compiling libav
./configure --cc=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc --enable-shared --enable-avx --enable-gpl --enable-pthreads --prefix=/home/per/workbench/install_ex/libav --enable-cross-compile --host-cc=gcc --arch=arm --target-os=linux
make
make install
Cross-Compiling DIRAC
./configure --host=arm-none-linux-gnueabi ARCH=arm --prefix=/home/per/workbench/install_ex/diracmake
make install
Cross-Compiling libdvbpsi
./configure -host=arm-none-linux-gnueabi -prefix=/home/per/workbench/install_ex/libdvbpsimake
make install
然后配置并编译vlc,make install 生成lib bin include share文件夹,将其和以上编译过的lib拷入开发板。
开发板运行:
./vlc -vvv /sdcard/wanted.H264 --sout "#rtp{dst=192.168.1.108,port=5004,mux=ts,ttl=10}"
发现--enable-static加入后也无法编译出无需动态库的可执行文件。
运行结果:
参考博客http://m.blog.csdn.net/blog/chenee543216/4348124