鱼C论坛

 找回密码
 立即注册
查看: 3202|回复: 10

[已解决]多个mp3音频合并成一个MP3

[复制链接]
发表于 2020-8-31 15:34:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
本帖最后由 quechua128 于 2020-8-31 15:39 编辑

使用open函数打开多个mp3音频,然后再通过写方法合成到一个音频文件中,但出来的音频只有第一个mp3文件的音频,哪位大神知道怎么解决吗??
    with open('音频输出1.mp3','rb') as file1:
        file1_read = file1.read()
    with open('音频输出2.mp3','rb') as file2:
        file2_read = file2.read()
    with open('音频输出3.mp3','wb') as file3:
        file3.write(file1_read)
        file3.write(file2_read)
最佳答案
2020-9-1 11:30:29
quechua128 发表于 2020-9-1 08:15
使用pyttsx3库生成的音频

难怪了,pyttsx3生成并不是严格的mp3格式。可以使用pydub先将生成文件转换mp3格式:
pydub.AudioSegment.from_file('i.mp3').export('o.mp3', format='mp3')

然后再将2个文件进行合并
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-31 15:54:31 | 显示全部楼层
只是将文件合并在一起了,如果要播放两个音频,可以使用pydub, 例如:
import pydub

song0 = pydub.AudioSegment.from_mp3('0.mp3')
song1 = pydub.AudioSegment.from_mp3('1.mp3')

song = song0 + song1
song.export('out.mp3', format('mp3'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-8-31 16:01:13 | 显示全部楼层
Json21 发表于 2020-8-31 15:54
只是将文件合并在一起了,如果要播放两个音频,可以使用pydub, 例如:

这个也用过,报错如下
Traceback (most recent call last):
  File "C:/Users/Hasee/Desktop/语音功能/pymp3.py", line 43, in <module>
    song0 = pydub.AudioSegment.from_mp3('音频输出1.mp3')
  File "E:\python\python38\lib\site-packages\pydub\audio_segment.py", line 738, in from_mp3
    return cls.from_file(file, 'mp3', parameters=parameters)
  File "E:\python\python38\lib\site-packages\pydub\audio_segment.py", line 723, in from_file
    raise CouldntDecodeError(
pydub.exceptions.CouldntDecodeError: Decoding failed. ffmpeg returned error code: 1

Output from ffmpeg/avlib:

ffmpeg version git-2020-08-28-ccc7120 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 10.2.1 (GCC) 20200805
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --enable-librav1e --enable-libsvtav1 --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 58.100 / 56. 58.100
  libavcodec     58.101.100 / 58.101.100
  libavformat    58. 51.101 / 58. 51.101
  libavdevice    58. 11.101 / 58. 11.101
  libavfilter     7. 87.100 /  7. 87.100
  libswscale      5.  8.100 /  5.  8.100
  libswresample   3.  8.100 /  3.  8.100
  libpostproc    55.  8.100 / 55.  8.100
[mp3float @ 000002d72c6b7e00] Header missing
    Last message repeated 31 times
[mp3 @ 000002d72c6ae000] decoding for stream 0 failed
[mp3 @ 000002d72c6ae000] Could not find codec parameters for stream 0 (Audio: mp3 (mp3float), 0 channels, fltp): unspecified frame size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, mp3, from '音频输出1.mp3':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Audio: mp3, 0 channels, fltp
Stream mapping:
  Stream #0:0 -> #0:0 (mp3 (mp3float) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[mp3float @ 000002d72c6d1e80] Header missing
Error while decoding stream #0:0: Invalid data found when processing input
[abuffer @ 000002d72c695740] Value inf for parameter 'time_base' out of range [0 - 2.14748e+09]
    Last message repeated 3 times
[abuffer @ 000002d72c695740] Error setting option time_base to value 1/0.
[graph_0_in_0_0 @ 000002d72c6db840] Error applying options to the filter.
Error reinitializing filters!
Error while filtering: Result too large
Finishing stream 0:0 without any data written to it.
[abuffer @ 000002d72c6958c0] Value inf for parameter 'time_base' out of range [0 - 2.14748e+09]
    Last message repeated 3 times
[abuffer @ 000002d72c6958c0] Error setting option time_base to value 1/0.
[graph_0_in_0_0 @ 000002d72c6cfc00] Error applying options to the filter.
Error configuring filter graph
Conversion failed
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 16:12:32 | 显示全部楼层
quechua128 发表于 2020-8-31 16:01
这个也用过,报错如下
Traceback (most recent call last):
  File "C:/Users/Hasee/Desktop/语音功能/ ...

Input #0, mp3, from '音频输出1.mp3':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Audio: mp3, 0 channels, fltp

看上去似乎这个音频文件有问题呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 16:54:39 | 显示全部楼层
运行了下你的代码,亲测可以将两个mp3合并为一个,代码没问题,你测试的音频有问题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-1 08:15:14 | 显示全部楼层
Json21 发表于 2020-8-31 16:12
Input #0, mp3, from '音频输出1.mp3':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream # ...

使用pyttsx3库生成的音频
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-1 08:16:19 | 显示全部楼层
疾风怪盗 发表于 2020-8-31 16:54
运行了下你的代码,亲测可以将两个mp3合并为一个,代码没问题,你测试的音频有问题吧

pyttsx3生成的音频
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 11:19:51 | 显示全部楼层

尝试了下,好像是不行
pyttsx3音频+pyttsx3音频,就出来一个pyttsx3音频
pyttsx3音频+歌曲mp3,就出来一个pyttsx3音频
歌曲mp3+pyttsx3音频,就出来歌曲+一段空白,后半段播放时会直接关闭
歌曲mp3+歌曲mp3,就能正常拼接
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 11:30:29 | 显示全部楼层    本楼为最佳答案   
quechua128 发表于 2020-9-1 08:15
使用pyttsx3库生成的音频

难怪了,pyttsx3生成并不是严格的mp3格式。可以使用pydub先将生成文件转换mp3格式:
pydub.AudioSegment.from_file('i.mp3').export('o.mp3', format='mp3')

然后再将2个文件进行合并
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-1 12:02:28 | 显示全部楼层
Json21 发表于 2020-9-1 11:30
难怪了,pyttsx3生成并不是严格的mp3格式。可以使用pydub先将生成文件转换mp3格式:

解决了。
另外还有个问题,为什么python3.6版本执行可以生成mp3文件,用3.8版本执行就没有生成mp3文件?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 18:40:14 | 显示全部楼层
quechua128 发表于 2020-9-1 12:02
解决了。
另外还有个问题,为什么python3.6版本执行可以生成mp3文件,用3.8版本执行就没有生成mp3文件?

哈哈,这个不清楚了,我这边是3.8的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 20:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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