为了账号安全,请及时绑定邮箱和手机立即绑定

C#中如何处理流媒体的数据发送接收?

C#中如何处理流媒体的数据发送接收?

呼如林 2018-12-07 03:03:44
我现在做个远程播放音乐的功能,说白了就是本地选个mp3放给对方听,但是需要边传边放。 我把文件以4K大小发送,接收端在每接到24K的数据后就播放,现在的问题是,有时某块数据能放,但是大部分是不能放的,很明显,不是每个24K的数据在播放器看起来都像是一个可以放的mp3,这部分不知道该怎么处理? 另外,我对mp3文件格式也不熟,求大师点化!   经过测试发现,应该是发送方有问题,我把文件分两次发,只有第一次的能放...是不是每块发送的数据都应该设置个文件头之类的东西?但是我不会...
查看完整描述

10 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

另一头不能是mp3格式的,换成wma格式,然后文件是边传边转格式,那头 等接收完了再转成mp3
查看完整回答
反对 回复 2018-12-09
?
森栏

TA贡献1810条经验 获得超5个赞

4K 太小了吧,改成大一点的试下。先找出问题的所在是大小的问题,还是数据的问题。
查看完整回答
反对 回复 2018-12-09
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

发送是4K,但是接收端是至少接到24K才播放的。不过我也觉得应该先试试,到底是解析不了被分块的数据还是分的太小了。
查看完整回答
反对 回复 2018-12-09
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

@凹出来: 为什么你要设计成 接到24K才播放。
查看完整回答
反对 回复 2018-12-09
?
ITMISS

TA贡献1871条经验 获得超8个赞

@geass..: 当然要缓冲一点再放啊
查看完整回答
反对 回复 2018-12-09
?
冉冉说

TA贡献1877条经验 获得超1个赞

这跟速度关系非常大
查看完整回答
反对 回复 2018-12-09
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

本地测试的
查看完整回答
反对 回复 2018-12-09
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

给每块数据一个编号。按照编号可以拿传输进度。 检查最后那个没收到,等待收到了之后就播放。 当然这个只是思路,感觉上没什么问题。不过有点空谈,还是需要LZ多实验。
查看完整回答
反对 回复 2018-12-09
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

如果采用udp发送接收,需要自己处理接收顺序问题,(如果音质要求严格,还需要处理重发的问题),也就是在数据头上增加一个编号,然后接收后按顺序组合播放;播放时可以使用directsound来处理,可以通过两个线程,一个播放,一个将接收到的数据循环放到缓存区内(网上有很多directsound的例子)。 如果tcp协议,则只需要处理接收后的播放问题。 4k足够大了。
查看完整回答
反对 回复 2018-12-09
  • 10 回答
  • 0 关注
  • 816 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信