flvmux: Correct metadata handling in file and stream mode
In file mode, only push one onMetaData at the start of the stream.
In stream mode, always push complete onMetaData. They get replaced, not merged.
Merge request reports
Activity
mentioned in commit heftig/gst-plugins-good@6fdb6ece
mentioned in commit heftig/gst-plugins-good@06600b2c
Some details:
RTMP servers (such as NGINX-RTMP and AWS Elemental) replace their existing metadata when receiving a new
@setDataFrame
onMetaData
; (there is only ever one persistent "data frame"). So sending incomplete metadata is hazardous, and results in at least NGINX losing information about the video and audio.As for files, I can only assume that additional metadata frames would be treated as in RTMP. It simplifies the code quite a bit if we don't have to produce partial metadata frames at all. In addition, the F4V/FLV file spec only ever talks about
onMetaData
as part of the header and fa5c02b2 wanted to avoid pushing full metadata frames multiple times.changed milestone to %1.17.1