using JT1078.Protocol;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Xunit;
using JT1078.Protocol.Extensions;
using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities;
using System.Net.Sockets;
using System.Threading;
namespace JT1078.Hls.Test
{
public class M3U8_Test
{
///
/// 模拟发送视频数据
///
[Fact]
public void Test1()
{
try
{
var lines = File.ReadAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "H264", "jt1078_5.txt"));
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect("127.0.0.1",1078);
long lasttime = 0;
foreach (var line in lines)
{
var temp = line.Split(',');
if (lasttime == 0)
{
lasttime = long.Parse(temp[0]);
}
else {
var ts = long.Parse(temp[0]) - lasttime;
if (ts > 3) ts = 3;
Thread.Sleep(TimeSpan.FromSeconds(ts));
lasttime = long.Parse(temp[0]);
}
var data= temp[1].ToHexBytes();
clientSocket.Send(data);
}
}
catch (Exception ex)
{
//Assert.Throws(() => { });
}
}
///
/// 生成m3u8索引文件
///
[Fact]
public void Test4()
{
try
{
var hls_file_directory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "H264", "terminalno");
if (!File.Exists(hls_file_directory)) Directory.CreateDirectory(hls_file_directory);
var m3u8_filename = Path.Combine(hls_file_directory, "live.m3u8");
TSEncoder tSEncoder = new TSEncoder();
var m3u8Manage = new M3U8FileManage(new Options.M3U8Option { HlsFileDirectory = hls_file_directory, M3U8FileName = m3u8_filename }, tSEncoder);
var lines = File.ReadAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "H264", "JT1078_3.txt"));
foreach (var line in lines)
{
var data = line.Split(',');
var bytes = data[6].ToHexBytes();
JT1078Package package = JT1078Serializer.Deserialize(bytes);
JT1078Package fullpackage = JT1078Serializer.Merge(package);
if (fullpackage != null)
{
m3u8Manage.CreateTsData(fullpackage);
}
}
}
catch (Exception ex)
{
//Assert.Throws(() => { });
}
}
}
}