diff --git a/src/JT1078.Flv.Test/Audio/AudioTest.cs b/src/JT1078.Flv.Test/Audio/AudioTest.cs
new file mode 100644
index 0000000..0548dc8
--- /dev/null
+++ b/src/JT1078.Flv.Test/Audio/AudioTest.cs
@@ -0,0 +1,62 @@
+using JT1078.Flv.Audio;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Text;
+using Xunit;
+using Xunit.Abstractions;
+
+namespace JT1078.Flv.Test.Audio
+{
+ public class AudioTest
+ {
+ readonly ITestOutputHelper output;
+
+ public AudioTest(ITestOutputHelper output)
+ {
+ this.output = output;
+ }
+
+ ///
+ /// 8000采样,单通道,16位pcm->aac
+ /// 8k-1ch-16bit
+ ///
+ [Fact(DisplayName = "pcm编码aac")]
+ public void Test1()
+ {
+ ReadOnlySpan fileData = File.ReadAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Audio/Files/testpacket.pcm"));
+ //注意 这里为了可以判断音频是否可用,因此使用adts,当网络传输的时候不应该使用adts
+ var faac = new FaacEncoder(8000, 1, 16, true);
+ var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Audio\Files\testpacket.aac");
+ if (File.Exists(path)) File.Delete(path);
+ output.WriteLine(path);
+ var offset = 0;
+ var step = faac.frameSize;
+ var totalBytes = 0;
+ var stopwatch = new Stopwatch();
+ while (offset + step < fileData.Length)
+ {
+ stopwatch.Start();
+ var aacBuff = faac.Encode(fileData.Slice(offset, step).ToArray());
+ stopwatch.Stop();
+ if (aacBuff.Any())
+ aacBuff.AppendBytesToFile(path);
+ offset += step;
+ totalBytes += aacBuff.Length;
+ }
+ faac.Dispose();
+ output.WriteLine($"已编码字节数:{offset},剩余未编码字节数:{fileData.Length - offset},编码后字节数:{totalBytes},耗时:{stopwatch.Elapsed.Milliseconds}毫秒");
+ }
+ }
+ static class Ex
+ {
+ public static void AppendBytesToFile(this byte[] fileBytes, string fileName)
+ {
+ FileStream fileStream = new FileStream(fileName, FileMode.Append);
+ fileStream.Write(fileBytes, 0, fileBytes.Length);
+ fileStream.Close();
+ }
+ }
+}
diff --git a/src/JT1078.Flv.Test/Audio/Files/testpacket.pcm b/src/JT1078.Flv.Test/Audio/Files/testpacket.pcm
new file mode 100644
index 0000000..69c24b1
Binary files /dev/null and b/src/JT1078.Flv.Test/Audio/Files/testpacket.pcm differ
diff --git a/src/JT1078.Flv.Test/JT1078.Flv.Test.csproj b/src/JT1078.Flv.Test/JT1078.Flv.Test.csproj
index 508f4dc..938f334 100644
--- a/src/JT1078.Flv.Test/JT1078.Flv.Test.csproj
+++ b/src/JT1078.Flv.Test/JT1078.Flv.Test.csproj
@@ -33,6 +33,9 @@
+
+ Always
+
Always
@@ -48,6 +51,9 @@
Always
+
+ Always
+
diff --git a/src/JT1078.Flv.Test/Libs/libfaac.dll b/src/JT1078.Flv.Test/Libs/libfaac.dll
new file mode 100644
index 0000000..a67c71f
Binary files /dev/null and b/src/JT1078.Flv.Test/Libs/libfaac.dll differ
diff --git a/src/JT1078.Flv/JT1078.Flv.csproj b/src/JT1078.Flv/JT1078.Flv.csproj
index 1cfddf8..c5ef381 100644
--- a/src/JT1078.Flv/JT1078.Flv.csproj
+++ b/src/JT1078.Flv/JT1078.Flv.csproj
@@ -46,7 +46,7 @@
- Always
+ PreserveNewest
diff --git a/src/JT1078.Flv/Libs/libfaac.dll b/src/JT1078.Flv/Libs/libfaac.dll
index c9f2e45..a67c71f 100644
Binary files a/src/JT1078.Flv/Libs/libfaac.dll and b/src/JT1078.Flv/Libs/libfaac.dll differ