gpt4 book ai didi

来自不断增长的文件的 C# WCF 视频流?

转载 作者:行者123 更新时间:2023-12-04 23:31:20 26 4
gpt4 key购买 nike

一直在把我的头发拉出来,这本来应该是一项快速而简单的任务。

我有一个自托管的 WCF 服务,我需要在其中实现实时视频转码,转码本身不是问题,使用 FFMpeg 到本地临时文件。

我的代码的快速示例;

public Stream StreamMedia(int a)
{
String input = @"\media\" + a + ".mkv";
String output = @"\temp\transcoded\" + a + DateTime.Now.Ticks.ToString() + ".wmv";

ProcessStartInfo pi = new ProcessStartInfo("ffmpeg.exe");
pi.Arguments = "-i " + input + " -y -ab 64k -vcodec wmv2 -b 800k -mbd 2 -cmp 2 -subcmp 2 -s 320x180 -f asf " + output;
Process p = new Process;
p.StartInfo = pi;
p.Start();

Thread.Sleep(2500);

return new FileStream(output, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
}

我面临的问题是返回的 Stream 只给了我在返回文件时写入文件的内容 - 导致视频文件相当短:)

我在这里玩过显而易见的东西,但无论我做什么,它只会返回那里可用的东西。

我需要做的是返回 Stream 而不考虑输出文件的实际当前长度 - 还涉及其他代码,以确保数据永远不会比 FFMpeg 设法编码的速度更快地发送到客户端,所以基本上我只需要一个开放式的流。

有接盘侠吗?

最佳答案

一种解决方案是创建自定义 Stream 类,该类将环绕磁盘中的文件;但是,还存在并发问题,这意味着您需要一些锁定机制,以便写入过程(视频转码器)与您的 FileStream 正确共享文件。

您的转码器是否可以创建多音量输出?如果是这样,那么您很幸运,这将(几乎)完全没有痛苦,只需进行卷 N 的流式传输,然后转码器写入卷 N + 1,您将不会遇到任何文件访问并发问题。

快乐编码!
- 阿德里安

关于来自不断增长的文件的 C# WCF 视频流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4793957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com