当我将带有ffmpeg的numpy数组转换为音频文件(python)时,mp3 / wav持续时间为何不同?

尖头

我想将一个应包含60s原始音频的numpy数组转换为.wav和.mp3文件。使用ffmpeg(版本3.4.6),我尝试将数组转换为所需的格式。为了进行比较,我还使用了模块化声音文件。由soundfile创建的.wav文件只有预期的60s长度。ffmpeg创建的.wav文件短一些,而.mp3-文件为ca。32秒长。

我希望所有出口的长度都相同。我在做什么错?

这是一个示例代码:

import subprocess as sp
import numpy as np
import soundfile as sf

def data2audiofile(filename,data):
    out_cmds = ['ffmpeg',
                '-f', 'f64le', # input 64bit float little endian 
                '-ar', '44100', # inpt samplerate 44100 Hz
                '-ac','1', # input 1 channel (mono)
                '-i', '-', # inputfile via pipe
                '-y', #  overwrite outputfile if it already exists
                filename]
    pipe = sp.Popen(out_cmds, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE) 
    pipe.stdin.write(data)


data = (np.random.randint(low=-32000, high=32000, size=44100*60)/32678).astype('<f8')

data2audiofile('ffmpeg_mp3.mp3',data)
data2audiofile('ffmpeg_wav.wav',data)
sf.write('sf_wav.wav',data,44100)

在这里,结果文件以胆大程度显示:

您需要关闭pipe.stdin并等待子流程结束。

关闭pipe.stdin冲洗stdin管道。
这里解释了这个主题:编写python子进程管道

调用前关闭stdin(刷新并发送EOF)的键 wait

在下面添加以下代码行pipe.stdin.write(data)

pipe.stdin.close()
pipe.wait()

您也可以尝试在中设置较大的缓冲区大小sp.Popen

pipe = sp.Popen(out_cmds, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE, bufsize=10**8)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用LAME将音频文件从.wav转换为MP3时出现问题

来自分类Dev

FFMPEG视频到音频转换结果的持续时间不同

来自分类Dev

检测资源中.wav文件的持续时间

来自分类Dev

合并具有不同持续时间的视频和音频

来自分类Dev

FFMPEG图像序列具有不同的持续时间

来自分类Dev

Perl音频文件持续时间

来自分类Dev

在JavaScript中更改具有不同持续时间的文本

来自分类Dev

将日历持续时间转换为持续时间

来自分类Dev

写入PCM数据@ 16KBps时的文件(.wav)持续时间

来自分类Dev

使用FFMPEG从图像和音频创建具有不同图像持续时间的视频吗?

来自分类Dev

将 wav 文件拆分为相同持续时间的部分,如果需要用静音填充

来自分类Dev

给定分割的持续时间,是否可以在iOS上将录制的wav文件分割为多个wav文件?

来自分类Dev

将时间转换为持续时间

来自分类Dev

将带有持续时间的记录转换为时间表

来自分类Dev

如何在不实际转换的情况下确定转换后的音频文件的理论文件大小(即,将mp3转换为wav)

来自分类Dev

ffmpeg 的音频持续时间错误

来自分类Dev

如何串联多个具有特定重叠持续时间的简短音频MP3文件

来自分类Dev

python时间间隔重叠持续时间

来自分类Dev

D3.js在具有不同持续时间的每个元素上重复过渡

来自分类Dev

FFMPEG混合滤波器的音量问题,输入持续时间不同

来自分类Dev

ffmpeg 幻灯片显示每张幻灯片不同的持续时间

来自分类Dev

FFMPEG:元数据中的flac音频文件持续时间为0

来自分类Dev

我可以在caroufredsel中为每个项目设置不同的滚动持续时间吗?

来自分类Dev

对两个属性进行动画处理时,velocity.js的持续时间不同

来自分类Dev

如何设置具有不同批处理持续时间的多个Spark Streaming作业?

来自分类Dev

如何使两个属性具有不同的持续时间动画

来自分类Dev

React Native setInterval函数用于具有不同持续时间的多个函数

来自分类Dev

使用ffmpeg javascript将wav音频文件转换为pcm音频文件

来自分类Dev

使用ffmpeg javascript将wav音频文件转换为pcm音频文件

Related 相关文章

  1. 1

    使用LAME将音频文件从.wav转换为MP3时出现问题

  2. 2

    FFMPEG视频到音频转换结果的持续时间不同

  3. 3

    检测资源中.wav文件的持续时间

  4. 4

    合并具有不同持续时间的视频和音频

  5. 5

    FFMPEG图像序列具有不同的持续时间

  6. 6

    Perl音频文件持续时间

  7. 7

    在JavaScript中更改具有不同持续时间的文本

  8. 8

    将日历持续时间转换为持续时间

  9. 9

    写入PCM数据@ 16KBps时的文件(.wav)持续时间

  10. 10

    使用FFMPEG从图像和音频创建具有不同图像持续时间的视频吗?

  11. 11

    将 wav 文件拆分为相同持续时间的部分,如果需要用静音填充

  12. 12

    给定分割的持续时间,是否可以在iOS上将录制的wav文件分割为多个wav文件?

  13. 13

    将时间转换为持续时间

  14. 14

    将带有持续时间的记录转换为时间表

  15. 15

    如何在不实际转换的情况下确定转换后的音频文件的理论文件大小(即,将mp3转换为wav)

  16. 16

    ffmpeg 的音频持续时间错误

  17. 17

    如何串联多个具有特定重叠持续时间的简短音频MP3文件

  18. 18

    python时间间隔重叠持续时间

  19. 19

    D3.js在具有不同持续时间的每个元素上重复过渡

  20. 20

    FFMPEG混合滤波器的音量问题,输入持续时间不同

  21. 21

    ffmpeg 幻灯片显示每张幻灯片不同的持续时间

  22. 22

    FFMPEG:元数据中的flac音频文件持续时间为0

  23. 23

    我可以在caroufredsel中为每个项目设置不同的滚动持续时间吗?

  24. 24

    对两个属性进行动画处理时,velocity.js的持续时间不同

  25. 25

    如何设置具有不同批处理持续时间的多个Spark Streaming作业?

  26. 26

    如何使两个属性具有不同的持续时间动画

  27. 27

    React Native setInterval函数用于具有不同持续时间的多个函数

  28. 28

    使用ffmpeg javascript将wav音频文件转换为pcm音频文件

  29. 29

    使用ffmpeg javascript将wav音频文件转换为pcm音频文件

热门标签

归档