Using ffprobe to verify stream

Jun 2017

Using netstat and ip, we can see what multicasts are present on an interface, we can use iperf to join that multicast, and tcpdump to record it.
Another tool we can use is ffprobe, which is part of ffmpeg. ffprobe allows us to analyse the stream to verify it is what we expect (the correct resolution, codec, audio etc).

Installation

Before we can use ffprobe we will have to install ffmpeg. However, to do this we will have to also add the ATRPMS repository to CentOS.

Adding ATRPMS Repository

ATRPMS is a 3’rd party rpm repository providing up to date packages for Red Hat based systems. We can used it for directly downloading packages or we can use one of the available package manager tools.
To enable atrpms yum repository first login to system using root access. Now import ATrpms signing key for verifying packages using following command.

rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms

Now create repository file with .repo extension under /etc/yum.repos.d/ directory and add following content as per your operating system.
All the users of RHEL, CentOS and Scientific Linux with all other derived distributions. Create a atrpms.repo file in /etc/yum.repos.d directory and add following content.

vi /etc/yum.repos.d/atrpms.repo

[atrpms]
name=Fedora Core $releasever - $basearch - ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
enabled=1
gpgcheck=1

Save the file and exit. (https://tecadmin.net/setup-atrpms-repository-on-centos-redhat-and-fedora/)

Install FFMPEG

ffprobe is part of ffmpeg, so we need to install ffmpeg to get this tool.

yum install ffmpeg

Some basic ffmpeg commands

ffmpeg -version: show version
ffmpeg -formats: show available formats
ffmpeg -codecs: show available codecs
ffmpeg -decoders: show available decoders
ffmpeg -encoders: show available encoders
ffmpeg -bsfs: show available bit stream filters
ffmpeg -protocols: show available protocols
ffmpeg -filters: show available filters
ffmpeg -pix_fmts: show available pixel formats
ffmpeg -layouts: show standard channel layouts
ffmpeg -sample_fmts: show available audio sample formats

Now the installation is done we can do a test (https://tecadmin.net/install-ffmpeg-on-centos/#)

Using FFPROBE

We are going to join a stream to read the stream characteristics, use the following syntax.

ffprobe udp://239.0.200.1:10001

If you successfully join the stream you will get an output similar to the following example.

Input #0, mpegts, from 'udp://239.0.200.1:10001':
Duration: N/A, start: 5793.912200, bitrate: 128 kb/s
Program 1
Metadata:
service_name : VSPP ABR Test
service_provider: Ericsson
Stream #0:0[0x3e9]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 25 tbr, 90k tbn, 180k tbc
Stream #0:1[0x7d1]: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 128 kb/s

When you start ffprobe, you will likely see some errors, I am not sure what this is, but it could be errors that are generated until the first I frame is found.