C#中如何处理流媒体的数据发送接收?
我现在做个远程播放音乐的功能,说白了就是本地选个mp3放给对方听,但是需要边传边放。
我把文件以4K大小发送,接收端在每接到24K的数据后就播放,现在的问题是,有时某块数据能放,但是大部分是不能放的,很明显,不是每个24K的数据在播放器看起来都像是一个可以放的mp3,这部分不知道该怎么处理?
另外,我对mp3文件格式也不熟,求大师点化!
经过测试发现,应该是发送方有问题,我把文件分两次发,只有第一次的能放...是不是每块发送的数据都应该设置个文件头之类的东西?但是我不会...
呼如林
浏览 817回答 10
10回答
-
萧十郎
另一头不能是mp3格式的,换成wma格式,然后文件是边传边转格式,那头 等接收完了再转成mp3
-
森栏
4K 太小了吧,改成大一点的试下。先找出问题的所在是大小的问题,还是数据的问题。
-
慕娘9325324
发送是4K,但是接收端是至少接到24K才播放的。不过我也觉得应该先试试,到底是解析不了被分块的数据还是分的太小了。
-
吃鸡游戏
@凹出来: 为什么你要设计成 接到24K才播放。
-
ITMISS
@geass..: 当然要缓冲一点再放啊
-
冉冉说
这跟速度关系非常大
-
胡说叔叔
本地测试的
-
慕姐4208626
给每块数据一个编号。按照编号可以拿传输进度。
检查最后那个没收到,等待收到了之后就播放。
当然这个只是思路,感觉上没什么问题。不过有点空谈,还是需要LZ多实验。
-
蝴蝶刀刀
如果采用udp发送接收,需要自己处理接收顺序问题,(如果音质要求严格,还需要处理重发的问题),也就是在数据头上增加一个编号,然后接收后按顺序组合播放;播放时可以使用directsound来处理,可以通过两个线程,一个播放,一个将接收到的数据循环放到缓存区内(网上有很多directsound的例子)。
如果tcp协议,则只需要处理接收后的播放问题。
4k足够大了。
打开App,查看更多内容