Skip to main content

MistAnalyserRTMP

MistAnalyserRTMP

This analyser is made to work with RTMP and E-RTMP captures. These are usually obtained through applications such as wireshark or tcpdump. Capture the side sending the data and save it as a file, pass that file to this analyser.

Usage

MistAnalyserRTMP [options] [filename]

Analysing an RTMP capture

By default The analyser returns the messaging that happened during the capture. This usually means the handshake and AMF data. This is often already enough to judge what might be the problem if an RTMp stream is rejected by MistServer when ingesting, or by the other side when pushing.

Higher detail levels will show more such as detail level 3 adding chunk data and 4 chunk information. At 10 you get the full chunk data which might be a bit too much.

If you're interested in seeing if the stream is valid you might want to try reconstructing it instead.

For example:

 message:
DDVTech Container returned
String connect
Number 1
Object
String app live
String type nonprivate
String flashVer FMLE/3.0 (compatible; MistServer)
String tcUrl rtmp://localhost/live
Number capsEx 15
Strict Array fourCcList
String arrVal av01
String arrVal avc1
String arrVal hvc1
String arrVal vp08
String arrVal vp09
String arrVal ac-3
String arrVal ec-3
String arrVal Opus
String arrVal .mp3
String arrVal fLaC
String arrVal mp4a
Object audioFourCcInfoMap
Number ac-3 7
Number ec-3 7
Number Opus 7
Number .mp3 7
Number fLaC 7
Number mp4a 7
Object videoFourCcInfoMap
Number av01 7
Number avc1 7
Number hvc1 7
Number vp08 7
Number vp09 7

CTRL: Set chunk size: 65536
Received AFM0 command message:
DDVTech Container returned
String releaseStream
Number 2
Null
String live%2bertmp

Received AFM0 command message:
DDVTech Container returned
String FCPublish
Number 3
Null
String live%2bertmp

Received AFM0 command message:
DDVTech Container returned
String createStream
Number 4
Null

Received AFM0 command message:
DDVTech Container returned
String publish
Number 5
Null
String live%2bertmp
String live

CTRL: Acknowledgement: 3670
CTRL: Window size: 2500000
Received AFM0 data message (metadata):
DDVTech Container returned
String @setDataFrame
String onMetaData
ECMA Array
Bool hasVideo 1
Number videocodecid 7
Number width 1280
Number height 720
Number videoframerate 50
Number videodatarate 2008.9
Bool hasAudio 1
Number audiodelay 0
Number audiochannels 2
Number audiosamplerate 48000
Number audiosamplesize 32
Number audiodatarate 3000

Reconstructing a playlist

Example:

MistAnalyserRTMP capture.raw -R example.flv

This would take the stream out of a raw capture and convert it to a playable FLV file. Which is the same container as RTMP uses internally and can then in turn be used to analyse as well. Working with a FLV file can sometimes be easier than working with a raw capture or live rtmp stream.

Options

OptionshorthandValueDefaultDescription
--debug-g1-10Set at compilation, 3 in most casesSets the debug level at which messages are printed
--detail-D0-102Sets the detail level for analyses
--help-hBinaryfalseIf set, display usage and version information then exit
--reconstruct-RstringReconstruct a FLV file from the HLS stream to the given filename.
--timeout-TNumeralTime in Seconds to run the analyses task
--validate-VBinaryfalseIf set activate validation mode for load testing
--version-vBinaryfalseIf set display the library and application version, then exit