-
Notifications
You must be signed in to change notification settings - Fork 707
Viper
VIPER is an MPEG-DASH video player that supports video retrieval using TCP or CICN from an HTTP video server using several video qualities. VIPER implements a variety of adaptive controllers such as PANDA, AdapTech, and BOLA. It supports video qualities up to UHD but best tablets can render up to FHD such as iPad Pro or Google Pixel. The video player does not support audio streams as it is mainly used as a prototype for demonstrations. This feature will be available later on.
- ffmpeg
- libparc
- libxml2
- libcurl4
- libdash (see inside libdash folder of viper project)
- Qt5.7 or higher
- QtAV
If ICN
- libccnx-common
- libccnx-transport-rta
- long-bow
- libicnet
If hICN
- llibhicntransport
Android 7 (to appear on Google Play)
Download apps from the following link
https://jenkins.fd.io/view/cicn/job/cicn-android-sdk-merge-master-ubuntu1604/
Ubuntu 16.04
$ sudo apt-get install software-properties-common
$ echo "deb [trusted=yes] https://nexus.fd.io/content/repositories/fd.io.master.ubuntu.$(lsb_release -sc).main/ ./" \
| sudo tee -a /etc/apt/sources.list.d/99fd.io.list
$ sudo add-apt-repository --yes ppa:beineri/opt-qt571-xenial
$ wget -q -O - http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add -
$ echo "deb [trusted=yes] http://archive.getdeb.net/ubuntu xenial-getdeb apps" | sudo tee -a /etc/apt/sources.list.d/getdeb.list
$ sudo apt-get update
$ sudo apt-get install viper
Build the dependencies
- QtAV For building and install the library, from the root folder of the projet:
$ git clone https://github.com/wang-bin/QtAV
$ cd QtAV
$ mkdir build && cd build
$ qmake ../QtAV.pro
$ make
$ sh sdk_install.sh
- libdash For building the player, from the root folder of the project:
$ git clone -b viper/master https://gerrit.fd.io/r/cicn viper
$ cd viper/libdash
$ mkdir build && cd build
$ cmake ../
$ make
$ make install
Build the player
For building the player, from the root folder of the project:
$ TRANSPORT=ICN #or HICN
$ cd viper
$ mkdir build && cd build
$ if [ "${TRANSPORT}" == "ICN" ]; then
qmake ../viper.pro
else
qmake ../viper.pro "TRANSPORT_LIBRARY = HICNET"
fi
$ make
$ ./viper
Download the Qt environment from https://www.qt.io/download and install MacOs and QtChart modules.
$ TRANSPORT=ICN #or HICN
$ QT_DIR=<qt_base_folder>/<version>
$ BASE_DIR=`pwd`
$ SRC_PATH=${BASE_DIR}/src
$ mkdir -p $SRC_PATH
$ BUILD_PATH=${BASE_DIR}/build
$ mkdir -p $BUILD_PATH
$ if which brew >/dev/null; then
if brew ls --versions openssl > /dev/null; then
echo "openssl installed"
else \
brew install openssl
brew link openssl
fi
if brew ls --versions libevent > /dev/null; then
echo "libevent installed"
else
brew install libevent
brew link libevent
fi
if brew ls --versions asio > /dev/null; then
echo "asio installed"
else
brew install asio
brew link asio
fi
if brew ls --versions curl > /dev/null; then
echo "curl installed"
else
brew install curl
brew link curl
fi
else
echo brew does not exist
exit 1
fi
$ if brew ls --versions ffmpeg > /dev/null; then
echo "ffmpeg installed"
else
brew install ffmpeg
brew link ffmpeg
fi
$ cd ${SRC_PATH}
$ if [ ! -d ${SRC_PATH}/QtAV ]; then
git clone https://github.com/wang-bin/QtAV.git
fi
$ export CPATH=/usr/local/include:$CPATH
$ export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
$ mkdir -p ${BUILD_PATH}/QtAV
$ cd ${BUILD_PATH}/QtAV
$ $QT_DIR/clang_64/bin/qmake ${SRC_PATH}/QtAV/
$ make
$ bash sdk_install.sh
$ cd ${SRC_PATH}
$ if [ ! -d ${SRC_PATH}/viper ]; then
git clone -b viper/master https://gerrit.fd.io/r/cicn viper
fi
$ mkdir -p ${BUILD_PATH}/libdash
$ cd ${BUILD_PATH}/libdash
$ cmake ${SRC_PATH}/viper/libdash
$ make
$ make install
$ mkdir -p ${BUILD_PATH}/viper
$ cd ${BUILD_PATH}/viper
$ if [ "${TRANSPORT}" == "ICN" ]; then
$QT_DIR/clang_64/bin/qmake ${SRC_PATH}/viper/
else
$QT_DIR/clang_64/bin/qmake ${SRC_PATH}/viper/ "TRANSPORT_LIBRARY = HICNET"
fi
$ make
Viper has been tested in:
- Ubuntu 16.04 (x86_64)
- MacOSX 10.13
- Android 7
- iOS 10