FFMPEG “Server error: Not Found” with Short URLs

Just a quick post about a problem I helped a buddy of mine resolve. He was setting up a Helix media streaming server, and was trying to capture the stream data to a file with the following command:

ffmpeg -i “rtmp://10.132.245.4:1935/flash/meet.flv” out.flv

The result was this error in the output:

[rtmp @ 0x28e1dc0] Server error: Not Found

Oddly enough, the connection information shown on the Helix console showed that a strange URL was being requested. Upon further investigation with Wireshark, I found that this was the request being made.

play(‘\360xw0meet’)

Note that “\360” is a hex character. For some odd reason, it would appear that ffmpeg improperly handles short URLs, inserting a string of “\360xw0”. If you pad the URL with the current directory “./”, then the request succeeds:

ffmpeg -i “rtmp://10.132.245.4:1935/flash/./././././meet.flv” out.flv

This results in a request of

play(‘././././meet’)

Which worked fine in our environment.

For future reference, I was running this ffmpeg version (on CentOS 6.4 x86_64):

ffmpeg version N-53616-g7a2edcf Copyright (c) 2000-2013 the FFmpeg developers
built on May 29 2013 00:19:54 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3)

So if you’re running into the “Server error: Not Found” error on a known good URL, try padding the path of the stream with “./” and see if that fixes it for you. I’m guessing this is an ffmpeg bug, but don’t really have the access to a streaming server to troubleshoot and submit a bug report. From the time that I did have, it appears that it’s related to the .flv extension in the rtmp URL. If you drop the extension, the URL can be of any size.