最近公司有个项目想对接腾讯云直播。腾讯云直播的推流链接是在客户端生成的,所以这段代码就别指望调用API获取了。
遗憾的是,腾讯云的网站上,只给了Java和PHP的代码示例,并没有给出C#的代码示例:
而我实在看不懂他Java的代码实例中那个txTime参数是从哪冒出来的。自己试了试各种方案,最后终于猜出来,原来是自1970年到今天的总秒数。
剩下的就是求一下MD5,拼接字符串,转一下十六进制。都是体力活,拿C#写也不算费劲。
折腾一阵后,终于搞定。
using System;
using System.Security.Cryptography;
using System.Text;
namespace TencentCloud
{
public class Program
{
// Any value is fine.
public const string StreamAppName = "live";
// Any value is fine.
public const string StreamName = "mystreamname";
// Get it from Tencent cloud.
public const string Key = "yourkeyaaaaaaaaaaaaaaaaaa";
// Get it from Tencent cloud.
public const string Domain = "74371.livepush.myqcloud.com";
public const string PlayDomain = "play.bopodastaging.top";
public static void Main(string[] args)
{
// Stream
var safeUrl = GetSafeUrl(
key: Key,
streamName: StreamName,
txTime: DateTime.Now + TimeSpan.FromDays(1));
var streamUrl = $"rtmp://{Domain}/{StreamAppName}/";
var streamKey = $"{StreamName}?{safeUrl}";
Console.WriteLine(streamUrl);
Console.WriteLine(streamKey);
// Play
Console.WriteLine($"rtmp://{PlayDomain}/{StreamAppName}/{StreamName}");
Console.WriteLine($"http://{PlayDomain}/{StreamAppName}/{StreamName}.flv");
Console.WriteLine($"http://{PlayDomain}/{StreamAppName}/{StreamName}.m3u8");
}
private static string GetSafeUrl(string key, string streamName, DateTime txTime)
{
var textTime = ConvertToUnixTimestamp(txTime).ToString("X").ToUpper();
var input = $"{key}{streamName}{textTime}";
var txSecret = GetMD5(input);
return $"txSecret={txSecret}&txTime={textTime}";
}
public static string GetMD5(string sourceString)
{
var data = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(sourceString));
var sBuilder = new StringBuilder();
foreach (var c in data)
{
sBuilder.Append(c.ToString("x2"));
}
return sBuilder.ToString();
}
private static int ConvertToUnixTimestamp(DateTime date)
{
var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
var diff = date.ToUniversalTime() - origin;
return (int)Math.Floor(diff.TotalSeconds);
}
}
}
运行效果:
亲爱的博主,
感谢您分享了关于如何使用C#获取腾讯云直播推流地址和观看地址的博客。从您的文章中,我了解到了腾讯云直播的推流链接是在客户端生成的,这对于想要接入腾讯云直播的开发者来说是非常有帮助的信息。
您在文章中提到,腾讯云的官方文档中仅提供了Java和PHP的代码示例,但没有提供C#的示例。尽管如此,您还是成功地自己解决了这个问题,这充分展示了您的编程能力和解决问题的能力。您还详细地介绍了如何计算txTime参数,并提供了C#代码示例,这对于其他需要使用C#进行腾讯云直播开发的开发者来说是非常有价值的。
此外,您还分享了完整的C#代码实现,以及运行效果的截图,这使得其他开发者能够更容易地理解和应用您的解决方案。这是文章的一个很大的亮点。
尽管这篇文章已经非常完整和有价值,但我认为还有一些可以改进的地方。例如,在文章中,您可以更详细地解释一下txTime参数的含义和作用,以帮助读者更好地理解这个参数。此外,您还可以考虑将代码示例中的部分注释翻译成英文,以便能够帮助更多的非中文读者理解您的解决方案。
总的来说,这是一篇非常有价值的博客,对于那些想要使用C#进行腾讯云直播开发的开发者来说,这将是一个非常有用的指南。希望您能继续分享更多关于腾讯云直播和其他技术主题的文章。再次感谢您的分享!