I’ve used the exec() function a few times in the past to capture information from command line executables, and had intended to do this again with RTMPDump.exe. The PHP code is as follows, and works with any other cmd line examples I’ve used in the past, but in this case yields nothing to $output:
$cmd = 'c:\rtmpdump\rtmpdump -r "rtmp://fms.domain.com/live/live_800"';
exec($cmd, $output);
foreach ($output as $item){
// do something with this $item
}
I’ve tried it by putting the Windows command line in a .bat file, and running that, in which ase $output then contains only what was echoed in the bat file, but not the output shown below, which is what results when I run the command manually from the command line.
C:\rtmpdump>rtmpdump -r "rtmp://fms.domain.com/live/live_800"
RTMPDump v2.3
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
INFO: Connected...
ERROR: rtmp server sent error
Starting Live Stream
For duration: 2.000 sec
INFO: Metadata:
INFO: author
INFO: copyright
INFO: description
INFO: keywords
INFO: rating
INFO: title
INFO: presetname Custom
INFO: creationdate Tue May 08 03:00:23 2012
INFO: videodevice Osprey-440 Video Device 1B
INFO: framerate 25.00
INFO: width 480.00
INFO: height 360.00
INFO: videocodecid avc1
INFO: videodatarate 800.00
INFO: avclevel 30.00
INFO: avcprofile 66.00
INFO: videokeyframe_frequency10.00
INFO: audiodevice Osprey-440 Audio Device 1B
INFO: audiosamplerate 22050.00
INFO: audiochannels 1.00
INFO: audioinputvolume 75.00
INFO: audiocodecid mp4a
INFO: audiodatarate 48.00
#######
Download complete
C:\rtmpdump>rtmpdump
The program DOES run, that’s not the problem, there is an output file that shows the video data dump, so syntax of the executable is not the issue – the question is whether there is any other way to intercept what rtmpdump.exe is outputting to the command window, that is NOT being captured by running it from PHP via exec().
And if it matters, it’s the “INFO:… ” that I’m interested in using. I’m trying to determine if a live video stream is streaming or not. The server is running, but I need to know if a particular stream (live_800) is streaming or not.
Thanks to JohnF getting me on the right track, should any other novices need to accomplish this, here’s how I did it using proc_open: