【问题标题】:Python: How can I stream a audio file (m4a/webm) instead of simply downloading it?Python:如何流式传输音频文件(m4a/webm)而不是简单地下载它?
【发布时间】:2018-03-29 08:16:30
【问题描述】:

我使用 pafy 模块来获取 m4a 和 webm 格式的 YouTube 视频的音频下载链接,我想在不简单下载的情况下进行蒸汽。我怎样才能实现它??

例如: 对于这个链接https://www.youtube.com/watch?v=3tmd-ClpJxA [Taylor Swift - Look What You Made Me Do],我看到了这个质量最好的 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

那么我怎样才能流式传输而不是简单地下载它。

此外,如果您认为此类问题已经在这里提出,请接受我的歉意并告诉我

【问题讨论】:

  • 我是编程新手,不知道如何处理这种东西。
  • SO 不是免费的编码服务,也不是教程网站。我鼓励您自己尝试解决问题(学习、遵循教程、阅读文档)并尝试独自解决。当您遇到特定问题时,请回到这里并提出特定问题,人们会尝试帮助您。不要指望任何人只是给你一个完整的解决方案。希望这可以帮助。谢谢!
  • 非常感谢,我不需要任何人为其编写解决方案。我需要一些建议,例如如何处理这些音频文件、流式传输 ..
  • 在尝试提出更多问题之前,请阅读How do I ask a good question?您确实需要阅读有关该网站如何运作的链接。如果您坚持不遵守有关其工作方式和预期使用方式的网站规则,您将获得阻力和质量非常低的帮助。您有很多问题要求建议 不是网站的运作方式,您在其他问题的 cmet 中也被一遍又一遍地告知。
  • 在尝试提出更多问题之前,请阅读Why is “Can someone help me?” not an actual question?

标签: python python-3.x audio youtube pafy


【解决方案1】:

如果您只是想从特定 URL 播放/流式传输音频,您可以尝试将 vlc 绑定到 python。更多详情here

可以安装为pip install python-vlc

这是一个直接从 URL 流式传输音频的示例代码。 player 对象增加了音频播放器的优势,例如暂停、恢复、停止等控件。

使用的 URL 是m4a url,如问题所述。

源代码

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

【讨论】:

  • 我已经试过了,但什么也没发生(vlc 没有打开 :( )。你猜我怎么了。
  • 好吧,我再次尝试了相同的代码,看起来 M4A url 不再工作了。它可能已经改变了。使用player.get_state() 检查状态。它将显示errorplaying 等。我尝试使用此网址,音频工作正常。网址 = 'aska.ru-hoster.com:8053/autodj'。可能想以此为基准。
  • 无论谁对这个解决方案投了反对票,如果您至少可以评论反对票的原因,这将是“真正”有帮助的。否则,否决票不会为答案或对话增加任何价值。
【解决方案2】:

要打开网站,您可以在桌面或任何地方有一个快捷方式到该网站,然后您可以从那里使用此代码打开它。希望这可以帮助。

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()

【讨论】:

    猜你喜欢
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2018-07-11
    • 2018-01-29
    • 1970-01-01
    • 2013-02-11
    相关资源
    最近更新 更多