音乐或视频播放器在 cup 时间片切换的条件下怎么保持持续的运行,产生稳定的电流 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lhqing
V2EX    操作系统

音乐或视频播放器在 cup 时间片切换的条件下怎么保持持续的运行,产生稳定的电流

  •  
  •   lhqing 2018-12-02 16:58:03 +08:00 2684 次点击
    这是一个创建于 2508 天前的主题,其中的信息可能已经有所发展或是发生改变。

    新手程序员最近在看计算机原理的时候有一个疑问,寻求大神解答一下。谢谢啦! cpu 通过切换时间片的方式来模拟程序的同时运行,由于切换的速度快,就给人们一种程序是同时运行的假象,比如打开好多个网页浏览的同时也在运行 QQ,这个可理解。 但是如果是运行一个音乐或者视频播放器,就不太能理解了,百度了一下 cpu 的时间片“在 Linux 上为 5ms - 800ms ”,这样的话,如果 cpu 切换到其他程序的时候,这时候音乐播放器就处于未运行的状态,就不会有持续的电流产生音乐了,但是为什么听音乐的时候不会有任何的卡顿感,或者不连续的感觉,而且每台电脑的 cpu 时间片都不一定是一样的,音乐播放器是这么能保证在这种情况下输出稳定的电流,放出音乐的? 有没有大神能解释一下,是不是我哪块理解的不太对,谢谢大家啦!

    9 条回复    2018-12-02 21:41:16 +08:00
    wu67
        1
    wu67  
       2018-12-02 17:13:08 +08:00
    exm?谁说切过去耗时 1 只处理 1 的分量就切走了?
    lhqing
        2
    lhqing  
    OP
       2018-12-02 17:23:41 +08:00
    哦哦,就是说 cpu 耗时 1 的时间就已经处理了 n 个时间的音乐了,那在 cpu 运行其他程序的时候,被 cpu 处理完的这 n 个时间音乐被哪个部件处理执行播放操作产生电流的,可以帮忙解释一下吗,谢谢大神,或者我应该看哪方面的书才可以补全这方面的知识盲区
    yinanc
        3
    yinanc  
       2018-12-02 17:26:54 +08:00 via iPhone
    缓冲区了解一下
    kokutou
        4
    kokutou  
       2018-12-02 17:30:54 +08:00 via Android   1
    搜狗搜到的
    声卡要播放的信号是保存在一个缓冲区里的,这个缓冲区并不小,只要缓冲区里有数据,声音就有信号。程序 1 秒写一次缓冲区并不会影响声卡播放。
    lhqing
        5
    lhqing  
    OP
       2018-12-02 17:52:24 +08:00
    @kokutou 多谢,明白啦
    noe132
        6
    noe132  
       2018-12-02 18:43:05 +08:00
    如果使用 asio 之类的驱动,可以手动设置缓冲区的大小。当缓冲区太小,而 CPU 负载较高时,会导致缓冲已经播放完了而新的数据没有写入,出现播放不连贯的爆音现象
    Destiny97
        7
    Destiny97  
       2018-12-02 21:07:12 +08:00 via Android
    单片机放音乐就是,用一个数组读,然后塞给 dac 放出来,是放的 wav 格式的
    jasonyang9
        8
    jasonyang9  
       2018-12-02 21:36:21 +08:00
    所以,真正的原因是你听到的音频是声卡或其他硬件设备进行的数模转换出来并放大后的结果。关键是这是一个和 CPU 独立的设备。CPU 和软件只需要保证它的缓冲区中有足够多可以进行数字到模拟转换的数据即可保证声音不会中断??
    jasonyang9
        9
    jasonyang9  
       2018-12-02 21:41:16 +08:00
    所有数字音频格式,无论是 MP3 还是 AAC 或 OGG 等等,都会在播放时由 CODEC 解码为标准的脉冲编码调制 PCM 格式,填充到缓冲区,让 DAC 转换为模拟信号并放大输出??
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1031 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 77ms UTC 22:57 PVG 06:57 LAX 15:57 JFK 18:57
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86