python⾳频合成_⾳频拼接的简单实现⽅法(python⼀
种,java两种)
python转java代码⾳频拼接,就是5s+5s=10s的这种拼接。
需要修改的地⽅都是有三处,在代码⾥标注好了。
⼀、Python实现:
Python3
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# ok,⾳频拼接
from pydub import AudioSegment # 先导⼊这个模块
# 加载需要合并的两个mp3⾳频
parameters = None
input_music_1 = AudioSegment.from_mp3("D:/4.mp3") #需要修改的地⽅:⾳频1
input_music_2 = AudioSegment.from_mp3("D:/5.mp3")#需要修改的地⽅:⾳频2
#获取两个⾳频的响度(⾳量)
input_music_1_db = input_music_1.dBFS
input_music_2_db = input_music_2.dBFS
# 获取两个⾳频的时长,单位为毫秒
input_music_1_time = len(input_music_1)
input_music_2_time = len(input_music_2)
# 调整两个⾳频的响度⼀致
# 合并⾳频
output_music = input_music_1 + input_music_2
# 简单输⼊合并之后的⾳频
port("D:/output_music.mp3", format="mp3")# 前⾯是保存路径,后⾯是保存格式
#复杂输⼊合并之后的⾳频
# bitrate:⽐特率,album:专辑名称,artist:歌⼿,cover:封⾯图⽚
#需要修改的地⽅:输出⾳频。cover那个没⽤着,可以删掉。
port("D:/output_music.mp3", format="mp3", bitrate="192k", tags={"album": "专辑", "artist": "歌⼿"}, cover="D:/1.jpg")
print(len(output_music), output_music.channels)# 合并⾳频的时长,⾳频的声道,1是单声道,2是⽴体声
⼆、java实现
1、第⼀种
package com.fish;
//ok,也是拼接
import java.io.*;
import java.util.*;
public class Test
{
public static void main(String[] args) throws Exception
{
String s = "D:/out.mp3"; // 输出⽬录 & ⽂件名
List list = new ArrayList();
File dir = new File("D:/aaa"); // 把两个mp3⽂件放在这个⽂件夹下⾯。这是要遍历的⽬录, ⽤递归拿⽂件,. recursion(dir.listFiles(), list); // 递归函数
String[] ss = new String[list.size()];
for (int i = 0; i < ss.length; i++)
{
ss[i] = (i);
}
System.out.println();
combine(s, ss);
}
public static void recursion(File[] fs, List list) // 递归得所有⼦⽬录的.mp3⽂件.
{
for (File f : fs)
{
if (f.isDirectory())
{
recursion(f.listFiles(), list);
}
else
{
if (f.getName().endsWith(".mp3"))
{
list.AbsolutePath());
}
}
}
private static boolean combine(String outFile, String[] inFiles) throws Exception
{
File out = new File(outFile);
File[] files = new File[inFiles.length];
for (int i = 0; i < files.length; i++)
{
files[i] = new File(inFiles[i]);
}
FileInputStream fis = null;
FileOutputStream fos = new FileOutputStream(outFile, true); // 合并其实就是⽂件的续写,写成true for (int i = 0; i < files.length; i++)
{
fis = new FileInputStream(files[i]);
int len = 0;
for (byte[] buf = new byte[1024 * 1024]; (len = ad(buf)) != -1;)
{
fos.write(buf, 0, len);
}
}
fis.close();
fos.close();
return true;
}
}
2、第⼆种
package com.fish;
//ok,⼜是⾳频拼接!
/**
* @Classname Test2
* @Description TODO
* @Data 2020/4/8 22:11
* @Created by Amy
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Test2 {
public static void main(String args[]) throws Exception{ File f1 = new File("D:/4.mp3");
File f2 = new File("D:/5.mp3");
File f3 = new File("D:/8.mp3");//输出⾳频FileInputStream inpu1 = new FileInputStream(f1); FileInputStream inpu2 = new FileInputStream(f2); FileOutputStream out = new FileOutputStream(f3); byte b[] = new byte[1024];
int len=0;
//把f1的内容流到f3中
while ((len = ad(b))!= -1)
{
for(int i = 0;i < len;i++)
{
out.write(b[i]);
}
}
inpu1.close();
//在刚才的后⾯流f2到f3中
while ((len = ad(b))!= -1)
{
for(int i = 0;i
out.write (b[i]);
}
}
System.out.println("合并完成");
out.write(b);
inpu2.close();
out.close();
}
-----------------------------------------------------------------------------------这⼏天因为写论⽂做作业什么的,写博客都不爱叨逼叨了= =
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论