我在用 python 写一个命令行下的豆瓣 FM,参考了命令行版的网易云音乐,同样准备用 linux 下的 mpg123 实现播放音乐功能,结果抓到豆瓣的音频数据是 mp4 格式的,不知如何是好。
ps:搜索竟然发现在 V2EX 有人在前几年提过类似的问题,不过也是没解决。
![]() | 1 loading 2018-01-29 21:21:19 +08:00 via Android ffmpeg -i a.mp4 a.mp3 |
![]() | 2 Rheinmetal 2018-01-29 21:29:57 +08:00 via Android mediainfo 看看是什么编码 再重新封装 mp4 一般是 aac |
3 smwikipedia 2018-01-29 21:47:10 +08:00 via Android 除了封装,你能做什么呢? |
![]() | 4 est 2018-01-29 22:48:16 +08:00 windows 下之前是调用 windows media player 的 COM 接口 linux 没记错的话,是 gstreamer mac 下可以用 2.X 自带的 Carbon 系列标准库去尝试调用 AVFoundation |
![]() | 5 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() |
![]() | 6 est 2018-01-29 23:05:22 +08:00 记得用系统自带的 /usr/bin/python 系统自带的才有 carbon / pyobjc 库。 不要用 brew 或者 anaconda 安装的。 |
7 MeteorCat 2018-01-29 23:07:23 +08:00 via Android 我记得以前用 lua,通过 c++编写 so 库接口给 lua 调用,我不清楚 python 加载机制是否和 lua 一样,可以尝试把这个功能转移给 c/c++ |
![]() | 8 yunfeihe OP 谢谢楼上几位,大概有思路了 |
![]() | 9 TimePPT PRO 试试 ffmpeg+pydub ? https://github.com/jiaaro/pydub#quickstart |