请选择 进入手机版|继续访问电脑版
发新帖

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

[复制链接]
7987 9

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我在用 python 写一个命令行下的豆瓣 FM,参考了命令行版的网易云音乐,同样准备用 linux 下的 mpg123 实现播放音乐功能,结果抓到豆瓣的音频数据是 mp4 格式的,不知如何是好。
ps:搜索竟然发现在 V2EX 有人在前几年提过类似的问题,不过也是没解决。

举报 使用道具

回复

精彩评论9

loading  新手上路  发表于 2018-1-31 15:32:53 | 显示全部楼层
ffmpeg -i a.mp4 a.mp3

举报 使用道具

回复
rheinmetal  新手上路  发表于 2018-1-31 15:39:29 | 显示全部楼层
mediainfo  看看是什么编码  再重新封装   mp4 一般是 aac

举报 使用道具

回复
smwikipedia  新手上路  发表于 2018-1-31 16:11:21 | 显示全部楼层
除了封装,你能做什么呢?

举报 使用道具

回复
est  新手上路  发表于 2018-1-31 16:11:33 | 显示全部楼层
windows 下之前是调用 windows  media player 的 COM  接口
linux 没记错的话,是 gstreamer
mac 下可以用 2.X 自带的 Carbon 系列标准库去尝试调用 AVFoundation

举报 使用道具

回复
est  新手上路  发表于 2018-1-31 16:18:30 | 显示全部楼层
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-1-31 16:37:19 | 显示全部楼层
记得用系统自带的 /usr/bin/python

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

不要用 brew 或者 anaconda 安装的。

举报 使用道具

回复
meteorcat  新手上路  发表于 2018-1-31 16:44:03 | 显示全部楼层
我记得以前用 lua,通过 c++编写 so 库接口给 lua 调用,我不清楚 python 加载机制是否和 lua 一样,可以尝试把这个功能转移给 c/c++

举报 使用道具

回复
yunfeihe  新手上路  发表于 2018-1-31 16:48:09 | 显示全部楼层
谢谢楼上几位,大概有思路了

举报 使用道具

回复
timeppt  新手上路  发表于 2018-1-31 16:51:23 | 显示全部楼层
试试 ffmpeg+pydub ?
https://github.com/jiaaro/pydub#quickstart

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表