C++ 切割wav文件句末静音段

本文介绍了如何使用C++精准地切割wav文件的句末静音段。传统的按字节数切割方法会导致音频总时长不变。正确的做法是修改wav文件头中的关键信息,包括采样频率、采样位数、声道数和时间。文章提供了一个名为CutMusicWav.h的头文件,用于输入切除的静音秒数并进行切割操作。
摘要由CSDN通过智能技术生成

 

    由于我需要句末没有静音的wav文件,开始时使用的方法是直接对wav进行指定字节数读写,虽然重新写入的wav文件播放至静音段时就停止播放,但是音频的总时长未发生改变。查阅资料得到wav文件的总时长t=文件字节总数/数据传输速率,数据传输速率即每秒传输的字节数,通过参考其他博客中关于wav文件的详细信息点击打开链接点击打开链接

    若需要彻底切割音频,修改其时长,也需要对修改wav文件头中的关键信息,即下面两个位置所存储的数据:(其余关于wav的介绍见上方链接)

修改后的程序为:输入需要切割的音频末尾时间长度,读取wav文件,将其文件头和关键信息存储起来,静音字节总数mid=(采样频率×采样位数×声道数×时间)/8 ,将获取到的04H位置所存储的当前地址的总字节数(=总字节数-8)

下面是切割音频的头文件CutMusicWav.h,此代码是参考他人代码做的修改

#ifndef __CUTMUSIC_H__
#define __CUTMUSIC_H__

#pragma once

#include <stdio.h>
#include <string.h>

using namespace std;

#define RIFF_SIGN_ID 0x46464952ul 
#define WAVE_SIGN_ID 0x45564157ul 
#d
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值