Python:我如何流式传输音频文件(m4a/webm)而不是简单地下载它?

Python:我如何流式传输音频文件(m4a/webm)而不是简单地下载它?

问题描述:

我用pafy模块以m4a和webm格式获取YouTube视频的音频下载链接,我想在没有简单下载的情况下进行播放。我怎么能实现它?Python:我如何流式传输音频文件(m4a/webm)而不是简单地下载它?

例如: 此链接https://www.youtube.com/watch?v=3tmd-ClpJxA[Taylor Swift的 - 你看什么,你让我这么做],我表现出最优质的M4A格式(此链接还有另一种格式WEBM但我认为M4A是?最好的,是不是很想听听你对此事的意见)

M4A: http://r2---sn-52vaavvoapox-itql.googlevideo.com/videoplayback?id=ded99df829692710&itag=140&source=youtube&ms=au&ei=DRvmWa-kDtr9oQObxIuACw&pl=24&mv=m&initcwndbps=285000&mn=sn-52vaavvoapox-itql&mm=31&ratebypass=yes&mime=audio/mp4&gir=yes&clen=4061037&lmt=1507168899082254&dur=255.651&mt=1508252315&signature=595AD7F495FC0DA98D8332BDF2A760A3CFA727C5.5FD2DE38A2F5575E0392BA54345D405999A72AE3&key=dg_yt0&ip=103.200.41.86&ipbits=0&expire=1508274029&sparams=ip,ipbits,expire,id,itag,source,ms,ei,pl,mv,initcwndbps,mn,mm,ratebypass,mime,gir,clen,lmt,dur

所以我怎么能流它不是简单地道琼斯指数加载它。

此外,如果你认为这样的问题已经被问这里,请接受我的道歉,让我知道它

+0

你尝试过这么远吗? –

+0

我是编程新手,我不知道如何处理这类东西。 – Harry

+1

SO不是免费的编码服务,也不是教程网站。我会鼓励你自己尝试这个问题(学习,跟随教程,阅读文档)并尝试单独解决问题。当你陷入某个特定问题时,回到这里问一个具体问题,人们会试图帮助你。不要期望有人给你一个完整的解决方案。希望这可以帮助。谢谢! –

为了打开网站,你可以在桌面上的快捷方式网站或任何地方这件事,从那里你可以使用这个代码来打开它。希望这可以帮助。

import pyglet 
import os 
os.system("start \\\\ph-fss1\Students\S39055\Desktop\\love.jpg") 

music = pyglet.resource.media('\\\\ph-fss1\Students\S39055\Desktop\\love.jpg') 
music.play() 

pyglet.app.run() 
love = True 

if love == True: 
    os.system("start \\\\ph-fss1\Students\S39055\Desktop\\love.jpg") 

music = pyglet.resource.media('\\\\ph-fss1\Students\S39055\Desktop\\love.jpg') 
music.play() 

pyglet.app.run() 

如果你只是希望打从特定的URL /流音频,你可以尝试vlcpython结合。更多细节here

它可以安装为pip install python-vlc

下面是直接从URL流音频的样本代码。 player对象增加了诸如暂停,恢复,停止等控制音频播放器的优势。

使用的网址是m4a网址如问题所述。

源代码

import vlc 
import time 
url = "http://r2---sn-q4fl6nlr.googlevideo.com/videoplayback?id=ded99df829692710&itag=140&source=youtube&ei=DRvmWa-kDtr9oQObxIuACw&pl=32&ratebypass=yes&mime=audio/mp4&gir=yes&clen=4061037&lmt=1507168899082254&dur=255.651&signature=4380D44827E745850E8034A17DD2CF71493515B2.49EE0269B463E530D2C05D79E658319E3354F4B5&key=cms1&ip=103.200.41.86&ipbits=0&expire=1508274029&sparams=clen,dur,ei,expire,gir,id,initcwndbps,ip,ipbits,ipbypass,itag,lmt,mime,mip,mm,mn,ms,mv,pl,ratebypass,source&rm=sn-52vaavvoapox-itql7l,sn-h55z7z&req_id=ac17cbf87900a3ee&redirect_counter=2&fexp=23702512&cms_redirect=yes&ipbypass=yes&mip=2605:6000:ec02:7e00:6d00:a5a1:a309:abb6&mm=30&mn=sn-q4fl6nlr&ms=nxu&mt=1508259877&mv=m" 

#define VLC instance 
instance = vlc.Instance('--input-repeat=-1', '--fullscreen') 

#Define VLC player 
player=instance.media_player_new() 

#Define VLC media 
media=instance.media_new(url) 

#Set player media 
player.set_media(media) 

#Play the media 
player.play() 

一些player控制

>>> play.pause() #pause play back 
>>> player.play() #resume play back 
>>> player.stop() #stop play back 
+0

我已经试过了,但没有任何事发生(vlc没有打开:()。 – Harry

+0

嗯,我再次尝试了相同的代码,看起来像M4A的url不再工作,它可能已经改变了,用'player.get_state()'检查状态,它会显示'error ''或'playing'等。我试过使用这个URL和音频工作正常。url ='http://aska.ru-hoster.com:8053/autodj'。可能想用这个作为基准。 –

+0

谁低估了这个解决方案如果你至少可以评论投票的理由,那么它是“非常有用的”,否则,投票不会给答案或谈话增加任何价值。 –