github.com/cnotch/ipchub@v1.1.0/av/format/flv/scriptdata.go (about) 1 // Copyright (c) 2019,CAOHONGJU All rights reserved. 2 // Use of this source code is governed by a MIT-style 3 // license that can be found in the LICENSE file. 4 5 package flv 6 7 import ( 8 "bytes" 9 10 "github.com/cnotch/ipchub/av/format/amf" 11 ) 12 13 // 数据名称常量,如元数据 14 const ( 15 ScriptOnMetaData = "onMetaData" 16 ) 17 18 // MetaData 常见属性名 19 const ( 20 MetaDataAudioCodecID = "audiocodecid" // Number 音频编解码器 ID 21 MetaDataAudioDateRate = "audiodatarate" // Number 音频码率,单位 kbps 22 MetaDataAudioDelay = "audiodelay" // Number 由音频编解码器引入的延时,单位秒 23 MetaDataAudioSampleRate = "audiosamplerate" // Number 音频采样率 24 MetaDataAudioSampleSize = "audiosamplesize" // Number 音频采样点尺寸 25 MetaDataStereo = "stereo" // Boolean 音频立体声标志 26 MetaDataCanSeekToEnd = "canSeekToEnd" // Boolean 指示最后一个视频帧是否是关键帧 27 MetaDataCreationDate = "creationdate" // String 创建日期与时间 28 MetaDataDuration = "duration" // Number 文件总时长,单位秒 29 MetaDataFileSize = "filesize" // Number 文件总长度,单位字节 30 MetaDataFrameRate = "framerate" // Number 视频帧率 31 MetaDataHeight = "height" // Number 视频高度,单位像素 32 MetaDataVideoCodecID = "videocodecid" // Number 视频编解码器 ID 33 MetaDataVideoDataRate = "videodatarate" // Number 视频码率,单位 kbps 34 MetaDataWidth = "width" // Number 视频宽度,单位像素 35 ) 36 37 // ScriptData . 38 type ScriptData struct { 39 Name string 40 Value interface{} 41 } 42 43 var _ TagData = &ScriptData{} 44 45 // Unmarshal . 46 func (scriptData *ScriptData) Unmarshal(data []byte) (err error) { 47 buff := bytes.NewBuffer(data) 48 49 if scriptData.Name, err = amf.ReadString(buff); err != nil { 50 return 51 } 52 53 scriptData.Value, err = amf.ReadAny(buff) 54 return 55 } 56 57 // Marshal . 58 func (scriptData *ScriptData) Marshal() ([]byte, error) { 59 buff := bytes.NewBuffer(make([]byte, 0, 1024)) 60 61 if err := amf.WriteString(buff, scriptData.Name); err != nil { 62 return nil, err 63 } 64 65 if err := amf.WriteAny(buff, scriptData.Value); err != nil { 66 return nil, err 67 } 68 69 return buff.Bytes(), nil 70 }