免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: chinesedragon
打印 上一主题 下一主题

[C++] 求局域网级对方播放音乐文件思路[Windows平台] [复制链接]

论坛徽章:
1
射手座
日期:2014-08-04 16:49:43
21 [报告]
发表于 2012-10-29 11:02 |只看该作者
本帖最后由 hanzhenlll 于 2012-10-29 11:03 编辑
chinesedragon 发表于 2012-10-28 20:41
我走得就是你这个思路,现在的问题是发送端每次发送多大的Buffer以及多长时间发送一次,这个我还没有办法确 ...


首先你先本地能播放出来,  至于这个多大的buffer 这取决你用的什么方式,支持文件形式的播放的话,多半是可调节的,如前面同学说的 你可以看看ffmpeg的相关资料,   值得一提的是多长时间发送一次,

这里面说复杂 说简单也简单...   单说音频吧... 你执行的方式应该如下            


解码初始化 ();
....
  while(1)
{
       if (取得数据)
              送入解码接口 ();

        .......
   }

这个时间取决于 硬解码或者软解码后送入声卡的时间, 只要能保证一直连续的得到数据,那么就会获得连续的音频输出。。(视频还要 考虑帧率 码率等问题,一般音视频的这些参数在初始化阶段 全部完成, 自适应码率等除外。。)否则就会出现卡 或者 停止的现象。

在数据处理上 是不是需要一些处理方式 比如队列啊, 异步处理啊等等 这个也是需要考虑的....

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
22 [报告]
发表于 2012-10-29 11:31 |只看该作者
貌似可以很简单,楼主机器上假设一个http服务器,
用户机器上,无数的软件都支持直接播放http文件。这样软件开发的工作量很小,极其容易达成目标。

论坛徽章:
0
23 [报告]
发表于 2012-10-29 12:36 |只看该作者
嗯,谢谢~~~
hanzhenlll 发表于 2012-10-29 11:02
首先你先本地能播放出来,  至于这个多大的buffer 这取决你用的什么方式,支持文件形式的播放的话,多半 ...

论坛徽章:
208
巨蟹座
日期:2013-09-02 09:16:36卯兔
日期:2013-09-02 20:53:59酉鸡
日期:2013-09-05 21:21:45戌狗
日期:2013-10-15 20:51:17寅虎
日期:2013-10-18 21:13:16白羊座
日期:2013-10-23 21:15:19午马
日期:2013-10-25 21:22:48技术图书徽章
日期:2013-11-01 09:11:32双鱼座
日期:2013-11-01 20:29:44丑牛
日期:2013-11-01 20:40:00卯兔
日期:2013-11-11 09:21:32酉鸡
日期:2013-12-04 19:56:39
24 [报告]
发表于 2012-10-29 20:23 |只看该作者
hellioncu 发表于 2012-10-29 09:19
什么技术文章?英文的?

比较切中目的的
百度就头几篇是,其他都不知道乱7八糟是些什么

论坛徽章:
0
25 [报告]
发表于 2012-10-31 04:22 |只看该作者
服务器直接ffserver,客户端就用VLC什么的就可以了。。。

论坛徽章:
0
26 [报告]
发表于 2012-10-31 09:12 |只看该作者
VLC可以在单片机上用吗?
c04n05 发表于 2012-10-31 04:22
服务器直接ffserver,客户端就用VLC什么的就可以了。。。

论坛徽章:
0
27 [报告]
发表于 2012-10-31 18:06 |只看该作者
hellioncu 发表于 2012-10-27 10:24
baidu还行吧,还是能搜出些有用的东西的。

在国内,只认google,从来不用baidu是一种什么心态呢?

没有啊,。。。。习惯了啊。。。

论坛徽章:
0
28 [报告]
发表于 2013-03-15 12:47 |只看该作者
首先你先本地能播放出来,  至于这个多大的buffer 这取决你用的什么方式,支持文件形式的播放的话,多半是可调节的,如前面同学说的 你可以看看ffmpeg的相关资料,   值得一提的是多长时间发送一次,

这里面说复杂 说简单也简单...   单说音频吧... 你执行的方式应该如下            


解码初始化 ();
....
  while(1)
{
       if (取得数据)
              送入解码接口 ();

        .......
   }

这个时间取决于 硬解码或者软解码后送入声卡的时间, 只要能保证一直连续的得到数据,那么就会获得连续的音频输出。。(视频还要 考虑帧率 码率等问题,一般音视频的这些参数在初始化阶段 全部完成, 自适应码率等除外。。)否则就会出现卡 或者 停止的现象。

在数据处理上 是不是需要一些处理方式 比如队列啊, 异步处理啊等等 这个也是需要考虑的....


其实,我现在的最大的问题也就是多长时间发送一次的问题。
根据你提供的那个代码,在While里面应该有Sleep之类的暂停的操作吧。
假如我发送的是WAV数据,双声道16位,44100采样率,每次发送1K,这样算出的应该5.3MS发送一次,这该如何发啊?

论坛徽章:
6
技术图书徽章
日期:2013-11-13 11:11:27子鼠
日期:2014-02-20 17:54:13处女座
日期:2014-06-16 17:43:33午马
日期:2014-08-08 09:11:17未羊
日期:2014-08-10 11:57:072015年辞旧岁徽章
日期:2015-03-03 16:54:15
29 [报告]
发表于 2013-03-15 15:44 |只看该作者
每次发10K,每50MS唤醒一次。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP