如何用 Python 播放一个 MP4 格式的音频文件

2018-01-29 21:14:01 +08:00
 yunfeihe

我在用 python 写一个命令行下的豆瓣 FM,参考了命令行版的网易云音乐,同样准备用 linux 下的 mpg123 实现播放音乐功能,结果抓到豆瓣的音频数据是 mp4 格式的,不知如何是好。

ps:搜索竟然发现在 V2EX 有人在前几年提过类似的问题,不过也是没解决。

5866 次点击
所在节点    Python
9 条回复
loading
2018-01-29 21:21:19 +08:00
ffmpeg -i a.mp4 a.mp3
Rheinmetal
2018-01-29 21:29:57 +08:00
mediainfo 看看是什么编码 再重新封装 mp4 一般是 aac
smwikipedia
2018-01-29 21:47:10 +08:00
除了封装,你能做什么呢?
est
2018-01-29 22:48:16 +08:00
windows 下之前是调用 windows media player 的 COM 接口
linux 没记错的话,是 gstreamer
mac 下可以用 2.X 自带的 Carbon 系列标准库去尝试调用 AVFoundation
est
2018-01-29 23:04:27 +08:00
mac 下亲测有效


import time
from Foundation import NSURL
from AVFoundation import AVAudioPlayer

f = NSURL.fileURLWithPath_('1.mp4')
player = AVAudioPlayer.alloc().initWithContentsOfURL_error_(f, None)
player.setNumberOfLoops_(0)
player.play()
time.sleep(3)
player.stop()
est
2018-01-29 23:05:22 +08:00
记得用系统自带的 /usr/bin/python

系统自带的才有 carbon / pyobjc 库。

不要用 brew 或者 anaconda 安装的。
MeteorCat
2018-01-29 23:07:23 +08:00
我记得以前用 lua,通过 c++编写 so 库接口给 lua 调用,我不清楚 python 加载机制是否和 lua 一样,可以尝试把这个功能转移给 c/c++
yunfeihe
2018-01-30 00:08:40 +08:00
谢谢楼上几位,大概有思路了
TimePPT
2018-01-30 13:46:27 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/426930

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX