I implemented RTMP recently. It's not a file transfer protocol like HTTP/FTP/Gopher. It's a pile of hacks designed for transferring a live stream between Adobe Flash Player and a compatible server (in either direction). The newest supported codec is H264 and AAC. The message framing doesn't make sense and there's no well-specified order of messages to handshake. The codec initialization data is sent as the first frame, and every frame has a one-byte boolean flag to indicate whether it's an initialization fragment or an actual frame. There's no way to know what codec is used until you start getting frames. There's a fixed set of codecs available, H264 being the only remotely modern one; a separate group of people wrote "extended RTMP" where a certain codec ID indicates an extended header with a 4-character codec ID (in every frame).
I ended up just coding to the OBS source code.
Good riddance to this pile of garbage in as many places as possible, and I don't see what it was doing in curl to start with.
> This is the first time in modern days we remove support for a URL scheme and we do this without bumping the SONAME. We do not consider this an incompatibility primarily because no one will notice. It is only a break if it actually breaks something.
The ecosystem around RTMP is bonkers.
RTMP has SO many users for video (Twitch, YouTube etc...) yet you have librtmp which has so many forks. OBS has its own version in-tree....
Then at the same time you have people trying to add extensions to RTMP still!
RTMP has held back the use cases I have cared about since ~2015 so I am excited to see people embrace other options.
I implemented RTMP recently. It's not a file transfer protocol like HTTP/FTP/Gopher. It's a pile of hacks designed for transferring a live stream between Adobe Flash Player and a compatible server (in either direction). The newest supported codec is H264 and AAC. The message framing doesn't make sense and there's no well-specified order of messages to handshake. The codec initialization data is sent as the first frame, and every frame has a one-byte boolean flag to indicate whether it's an initialization fragment or an actual frame. There's no way to know what codec is used until you start getting frames. There's a fixed set of codecs available, H264 being the only remotely modern one; a separate group of people wrote "extended RTMP" where a certain codec ID indicates an extended header with a 4-character codec ID (in every frame).
I ended up just coding to the OBS source code.
Good riddance to this pile of garbage in as many places as possible, and I don't see what it was doing in curl to start with.
I'm not sure I understand the logic behind not bumping the major version.
> This is the first time in modern days we remove support for a URL scheme and we do this without bumping the SONAME. We do not consider this an incompatibility primarily because no one will notice. It is only a break if it actually breaks something.