浏览代码

Merge pull request #7 from yedajiang44/master

写入AudioTag
tags/v1.1.0
SmallChi(Koike) 5 年前
committed by GitHub
父节点
当前提交
474236055a
找不到此签名对应的密钥 GPG 密钥 ID: 4AEE18F83AFDEB23
共有 1 个文件被更改,包括 14 次插入9 次删除
  1. +14
    -9
      src/JT1078.Flv/MessagePack/FlvMessagePackWriter_Flv.cs

+ 14
- 9
src/JT1078.Flv/MessagePack/FlvMessagePackWriter_Flv.cs 查看文件

@@ -18,6 +18,9 @@ namespace JT1078.Flv.MessagePack
WriteUInt24(tag.StreamId); WriteUInt24(tag.StreamId);
switch (tag.Type) switch (tag.Type)
{ {
case TagType.Audio:
WriteAudioTags(tag.AudioTagsData);
break;
case TagType.Video: case TagType.Video:
//VideoTag //VideoTag
WriteVideoTags(tag.VideoTagsData); WriteVideoTags(tag.VideoTagsData);
@@ -29,11 +32,8 @@ namespace JT1078.Flv.MessagePack
//flv Amf3 //flv Amf3
WriteAmf3(tag.DataTagsData); WriteAmf3(tag.DataTagsData);
break; break;
case TagType.Audio:
//todo:VIDEODATA
break;
} }
tag.DataSize = GetCurrentPosition() - 11;
tag.DataSize = (GetCurrentPosition() - DataSizePosition - 3 - 7);
WriteInt24Return(tag.DataSize, DataSizePosition); WriteInt24Return(tag.DataSize, DataSizePosition);
} }


@@ -57,28 +57,33 @@ namespace JT1078.Flv.MessagePack
public void WriteVideoTags(VideoTags videoTags) public void WriteVideoTags(VideoTags videoTags)
{ {
WriteByte((byte)((byte)videoTags.FrameType | (byte)videoTags.CodecId)); WriteByte((byte)((byte)videoTags.FrameType | (byte)videoTags.CodecId));
if (videoTags.CodecId== CodecId.AvcVideoPacke)
if (videoTags.CodecId == CodecId.AvcVideoPacke)
{ {
WriteAvcVideoPacke(videoTags.VideoData); WriteAvcVideoPacke(videoTags.VideoData);
} }
} }


public void WriteAudioTags(AudioTags audioTags)
{
WriteArray(audioTags.ToArray());
}

public void WriteAvcVideoPacke(AvcVideoPacke videoPacke) public void WriteAvcVideoPacke(AvcVideoPacke videoPacke)
{ {
WriteByte((byte)videoPacke.AvcPacketType); WriteByte((byte)videoPacke.AvcPacketType);
if (videoPacke.AvcPacketType== AvcPacketType.SequenceHeader)
if (videoPacke.AvcPacketType == AvcPacketType.SequenceHeader)
{ {
//videoPacke.CompositionTime = 0; //videoPacke.CompositionTime = 0;
WriteUInt24(0); WriteUInt24(0);
//AVCDecoderConfigurationRecord //AVCDecoderConfigurationRecord
WriteAVCDecoderConfigurationRecord(videoPacke.AVCDecoderConfiguration); WriteAVCDecoderConfigurationRecord(videoPacke.AVCDecoderConfiguration);
} }
else if(videoPacke.AvcPacketType == AvcPacketType.Raw)
else if (videoPacke.AvcPacketType == AvcPacketType.Raw)
{ {
WriteUInt24(videoPacke.CompositionTime); WriteUInt24(videoPacke.CompositionTime);
if (videoPacke.MultiData != null && videoPacke.MultiData.Count>0)
if (videoPacke.MultiData != null && videoPacke.MultiData.Count > 0)
{ {
foreach(var item in videoPacke.MultiData)
foreach (var item in videoPacke.MultiData)
{ {
WriteInt32(item.Length); WriteInt32(item.Length);
WriteArray(item); WriteArray(item);


正在加载...
取消
保存