小编TK3*_*TK3的帖子

可观察的网络IO解析

我正在尝试使用Rx从TCPClient接收流中读取并将数据解析为字符串的IObservable,由换行符"\ r \n"分隔.以下是我从套接字流接收的内容...

var messages = new Subject<string>();

var functionReceiveSocketData =
            Observable.FromAsyncPattern<byte[], int, int, SocketFlags, int>
            (client.Client.BeginReceive, client.Client.EndReceive);

Func<byte[], int, byte[]> copy = (bs, n) =>
        {
            var rs = new byte[buffer.Length];
            bs.CopyTo(rs, 0);
            return rs;
        };

Observable
    .Defer(() =>
            {
                var buffer = new byte[50];
                return
                    from n in functionReceiveSocketData(buffer, 0, buffer.Length, SocketFlags.None)
                select copy(buffer, n);
            }).Repeat().Subscribe(x => messages.OnNext(System.Text.Encoding.UTF8.GetString(x)));
Run Code Online (Sandbox Code Playgroud)

这是我想出来解析字符串的内容.这目前不起作用......

obsStrings = messages.Buffer<string,string>(() =>  
                messages.Scan((a, c) => a + c).SkipWhile(a => !a.Contains("\r\n"))
            );
Run Code Online (Sandbox Code Playgroud)

消息主题以块的形式接收消息,因此我尝试连接它们并测试连接的字符串是否包含换行符,从而发信号通知缓冲区关闭并输出缓冲的块.不知道为什么它不起作用.似乎我只从obsStrings中获得了第一块.

所以我正在寻找两件事.我想简化io流的阅读并消除邮件主题的使用.其次,我想让我的字符串解析工作.我一直在讨论这个问题,无法提出一个有效的解决方案.我是Rx的初学者.

编辑:这是问题解决后的成品....

var receivedStrings = …
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

7
推荐指数
1
解决办法
703
查看次数

ffmpeg - 如果源没有音频或音频短于源视频,则输出静音音轨

我需要一个视频文件,其音频和视频轨道持续时间始终相同.即使源音频没有音轨,该文件也必须包含音轨.当源没有音频跟踪时,如何告诉ffmpeg添加静音音轨.此外,如果源的音频轨道与视频的持续时间不同,我需要ffmpeg附加静音,以使输出音频和视频的持续时间相同.这可能与ffmpeg在一行吗?

ffmpeg

2
推荐指数
1
解决办法
2197
查看次数

标签 统计

c# ×1

ffmpeg ×1

system.reactive ×1