-
Notifications
You must be signed in to change notification settings - Fork 2
Ubuntu PC Nodes
The code for the Ubuntu PC nodes (sender and receiver) are split among three folders:
-
cfg
- JSVM / Scalable video config files -
scripts
- multiple scripts based on deployment scenario -
src
- SVC layer extraction at source and combination at sink/destination
Pick two Ubuntu x86_64 computers for the source (video recording) and destination nodes (video decoding). Recommended specifications can be found on the Deployment wiki page.
Clone the Vectors folder and navigate to the scripts directory using:
git clone https://github.com/swifiic/Vectors.git
cd server/scripts
On the source computer, run ./setup_sender.sh
and follow the on-screen prompts for installing all the files.
On the destination node, run ./setup_receiver.sh
.
These scripts will create the required folder hierarchy in /var/spool/vectors
. It will also download and compile all the requisite libraries. Once the setup is completed, the corresponding scripts are added to the crontab of the source and destination node.
Checkout the code from SVN:
svn export https://hevc.hhi.fraunhofer.de/svn/svn_SHVCSoftware/tags/SHM-12.4/ SHM-12.4
Build the code:
cd SHM-12.4/build/linux
make
We also use DownConvertStatic binary in JSVM to down scale the recorded sample.
To download and build the JSVM binaries:
git clone https://github.com/floriandejonckheere/jsvm.git
Build the code:
cd jsvm/JSVM/H264Extension/build/linux
make
The source and destination scripts to generate the video bursts and decode the received video chunk files.
Download JSVM and SHM code and unzip to appropriate folder.
Clone the vectors repository in the home directory by running:
git clone https://github.com/swifiic/Vectors.git
First runs setup_asroot.sh
with sudo
:
sudo bash setup_asroot.sh
Then run setup.sh
:
bash setup.sh $HOME/Vectors/server $HOME/Downloads/SHM-12.4 $HOME/Downloads/JSVM-master/JSVM
Add new cron job to crontab
: crontab –e
An example command would be */5 * * * * /path/to/script.sh
. This would mean that the shell script will execute every five minutes.
To save the changes to the crontab
that you just made, hit ESC
key, and
then type :w
followed by :q
to exit.
To list existing cron jobs: crontab –l
To remove an existing cron job: crontab -r
The binaries are copied into /var/spool/vectors/bin
The CFG files are copied into /var/spool/vectors/cfg
The recorded samples are stored in /var/spool/vectors/rec
There is a file named counter which takes care of the sample sequence number. It is located at /var/spool/vectors/counter
setup_asroot.sh - first file to be run for installation with sudo to create the required folders
setup.sh - main file that installs the scripts and config
checkDirs.sh - verifies permissions etc. after installation is done by setup_asroot.sh
data_analysis.sh - for trend analysis - generally not required during setup and run
src_cron_ack_pull.sh - script that is scheduled using cron to pull the acks from the device at Source
src_cron_video.sh - script that pushes the payloads by calling push_at_src.sh
video_record_1L.sh - called by src_cron_video.sh to generate the video with 1 spatial layer
video_record_2L.sh - called by src_cron_video.sh to generate the video with 2 spatial layers
push_at_src.sh - called by src_cron_video.sh to push content to device
rcvr_cron.sh - script scheduled on destination / sink / receiver to pull out the video bundles
txfr_at_dest.sh - called by rcvr_cron.sh to pull files and generate the cumulative ack
video_combiner.sh - at destination to create video using the received payloads and metadata from extraction
Connect a Video4Linux2 compatible webcam to the sender PC. Such webcams will have the device identifier as /dev/video
in Linux. By default, /dev/video0
is used for capturing the video feed. The parameters of the video feed can be set by editing the config
file in the scripts
folder.
Android tablets with ADB enabled should be connected to both the source and destination PC to allow other Android devices to exchange files.