Skip to content

Commit 6cf92b0

Browse files
committed
F Added config file settings
1 parent 23a1872 commit 6cf92b0

6 files changed

Lines changed: 56 additions & 18 deletions

File tree

src/RTSPClientApp/Program.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
using SharpRTSPClient;
1+
using Microsoft.Extensions.Configuration;
2+
using SharpRTSPClient;
23
using System;
34

4-
const string rtspUri = "rtsp://127.0.0.1:8554";
5-
const string userName = "admin";
6-
const string password = "password";
5+
IConfiguration config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
6+
string rtspUri = config["Uri"];
7+
string userName = config["UserName"];
8+
string password = config["Password"];
79

810
using (RTSPClient client = new RTSPClient())
911
{

src/RTSPClientApp/RTSPClientApp.csproj

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@
77
<Nullable>disable</Nullable>
88
</PropertyGroup>
99

10+
<ItemGroup>
11+
<None Remove="appsettings.json" />
12+
</ItemGroup>
13+
14+
<ItemGroup>
15+
<Content Include="appsettings.json">
16+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
17+
</Content>
18+
</ItemGroup>
19+
20+
<ItemGroup>
21+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
22+
</ItemGroup>
23+
1024
<ItemGroup>
1125
<ProjectReference Include="..\SharpRTSPClient\SharpRTSPClient.csproj" />
1226
</ItemGroup>

src/RTSPClientApp/appsettings.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"Uri": "rtsp://127.0.0.1:8554",
3+
"UserName": "admin",
4+
"Password": "password"
5+
}

src/RTSPServerApp/Program.cs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1-
using SharpMp4;
1+
using Microsoft.Extensions.Configuration;
2+
using SharpMp4;
23
using SharpRTSPServer;
34
using System;
45
using System.Collections.Generic;
56
using System.IO;
67
using System.Linq;
78
using System.Timers;
89

9-
// TODO config file
10-
const string hostName = "127.0.0.1";
11-
const ushort port = 8554;
12-
const string fileName = "frag_bunny.mp4";
13-
const string userName = "admin";
14-
const string password = "password";
10+
IConfiguration config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
11+
string hostName = config["HostName"];
12+
ushort port = ushort.Parse(config["Port"]);
13+
string fileName = config["FilePath"];
14+
string userName = config["UserName"];
15+
string password = config["Password"];
1516

1617
using (var server = new RTSPServer(port, userName, password))
1718
{
@@ -20,9 +21,7 @@
2021
uint audioTrackId = 0;
2122
TrakBox audioTrackBox = null;
2223
TrakBox videoTrackBox = null;
23-
AudioSampleEntryBox audioSampleEntry = null;
2424
double videoFrameRate = 0;
25-
int audioSamplingRate = 0;
2625

2726
// frag_bunny.mp4 audio is not playable in VLC on Windows 11 (works on MacOS)
2827
using (Stream fs = new BufferedStream(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)))
@@ -62,15 +61,18 @@
6261
if (audioTrackBox != null)
6362
{
6463
audioTrackId = fmp4.FindAudioTrackID().First();
65-
audioSampleEntry = audioTrackBox.GetAudioSampleEntryBox();
6664

67-
var aac = audioTrackBox.GetMdia().GetMinf().GetStbl().GetStsd().Children.FirstOrDefault(x => x.Type == AudioSampleEntryBox.TYPE3) as AudioSampleEntryBox;
68-
if (aac != null)
65+
var audioSampleEntry = audioTrackBox.GetAudioSampleEntryBox();
66+
if (audioSampleEntry.Type == AudioSampleEntryBox.TYPE3) // AAC
6967
{
7068
var audioConfigDescriptor = audioSampleEntry.GetAudioSpecificConfigDescriptor();
71-
audioSamplingRate = audioConfigDescriptor.GetSamplingFrequency();
69+
int audioSamplingRate = audioConfigDescriptor.GetSamplingFrequency();
7270
server.AudioTrack = new SharpRTSPServer.AACTrack(await audioConfigDescriptor.ToBytes(), audioSamplingRate, audioConfigDescriptor.ChannelConfiguration);
7371
}
72+
else
73+
{
74+
// unsupported audio
75+
}
7476
}
7577
}
7678
}
@@ -114,7 +116,7 @@
114116
{
115117
var audioSampleDuration = SharpMp4.AACTrack.AAC_SAMPLE_SIZE;
116118
var audioTrack = parsedMDAT[audioTrackId];
117-
audioTimer = new Timer(audioSampleDuration * 1000 / audioSamplingRate);
119+
audioTimer = new Timer(audioSampleDuration * 1000 / (server.AudioTrack as SharpRTSPServer.AACTrack).SamplingRate);
118120
audioTimer.Elapsed += (s, e) =>
119121
{
120122
server.FeedInRawAudioSamples((uint)(audioIndex * audioSampleDuration), new List<byte[]>() { audioTrack[0][audioIndex++ % audioTrack[0].Count] });

src/RTSPServerApp/RTSPServerApp.csproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,20 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11+
<None Remove="appsettings.json" />
12+
</ItemGroup>
13+
14+
<ItemGroup>
15+
<Content Include="appsettings.json">
16+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
17+
</Content>
1118
<Content Include="frag_bunny.mp4">
1219
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1320
</Content>
1421
</ItemGroup>
1522

1623
<ItemGroup>
24+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
1725
<PackageReference Include="SharpMp4" Version="0.0.6" />
1826
</ItemGroup>
1927

src/RTSPServerApp/appsettings.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"HostName": "127.0.0.1",
3+
"Port": 8554,
4+
"FilePath": "frag_bunny.mp4",
5+
"UserName": "admin",
6+
"Password": "password"
7+
}

0 commit comments

Comments
 (0)