从python内存中的MPEG(.ts)文件中提取音频,而不将MPEG写入文件

Posted

技术标签:

【中文标题】从python内存中的MPEG(.ts)文件中提取音频,而不将MPEG写入文件【英文标题】:Extract audio from a MPEG(.ts) file in memory in python, Without writing MPEG to a file 【发布时间】:2020-02-26 16:10:09 【问题描述】:

我正在做一个项目,该项目需要从 .ts(MPEG-2 传输流)文件传输的流中提取音频。

目前我需要先将文件保存到文件系统,然后使用moivepy打开转换成WAV格式的音频。

流媒体需要实时传输,每秒需要处理多个 .ts 文件,Moivepy 太慢,无法全部打开并实时转换。

所以我想知道我是否可以在内存中完成从 MPEG 提取音频的整个过程,避免文件系统 IO 可能会加快该过程。我该怎么做?

【问题讨论】:

所以我想知道我是否可以在内存中完成从 MPEG 提取音频的整个过程,避免文件系统 IO 可能会加快该过程。 你可能可以,是的。 我该怎么做? 这不是主题,Stack Overflow 不能替代指南、教程或文档,也不是免费的代码编写服务。 【参考方案1】:

您可以尝试ffmpeg-python 包,您可以在其中查看输出函数中的-target 标志并指定.wav 文件输出。 https://ffmpeg.org/ffmpeg.html#Synopsis。概要页面中的大多数标志都在包中提供。我还没有遇到不提供的。

python-ffmpeg python bindings documentation

示例代码:

import ffmpeg

audio_input = ffmpeg.input(url)
audio_output = ffmpeg.output(audio_input, save_location, target='filename.wav')
audio_output.run()

【讨论】:

以上是关于从python内存中的MPEG(.ts)文件中提取音频,而不将MPEG写入文件的主要内容,如果未能解决你的问题,请参考以下文章

从编码域中的 MPEG 文件中读取元数据

通过 ffmpegwrapper 切割 MPEG-TS 文件?

关于ts是啥文件?

使用 ImageMagick 从 MPEG4 中提取每第 n 帧

多媒体文件格式:TS 格式

如何在 Chrome 中播放 MPEG-TS