diff --git a/rtmp/flv/writer.go b/rtmp/flv/writer.go index e70d842..492f601 100644 --- a/rtmp/flv/writer.go +++ b/rtmp/flv/writer.go @@ -35,13 +35,21 @@ func (writer *FLVWriter) WriteMetadataTag(data *[]byte) (err error) { binary.BigEndian.PutUint32(uint24_buf, uint32(len((*data)[16:]))) copy(tag_header[1:4], uint24_buf[1:]) - _, err = writer.w.Write(tag_header) - if err == nil { - _, err = writer.w.Write((*data)[16:]) + if _, err = writer.w.Write(tag_header); err != nil { + return } - return + if _, err = writer.w.Write((*data)[16:]); err != nil { + return + } + + + tag_len_buf := make([]byte, 4) + binary.BigEndian.PutUint32(tag_len_buf, uint32(len((*data)[16:]) + 11)) + _, err = writer.w.Write(tag_len_buf) + return } + func (writer *FLVWriter) write_flv_header() (err error) { header := make([]byte, 13) copy(header[:3], "FLV")