标签: audioformat

音频数据如何以原始 pcm 格式存储?

我正在编写一个应用程序来操作音频,我首先需要将文件(wav、MP3 等)转换为原始数据(样本显示为浮点数)。

我在 cmd 中使用 ffmpeg:

ffmpeg -i test.wav -f s16le -acodec pcm_s16le output.dat
Run Code Online (Sandbox Code Playgroud)

样本如何在 output.dat文件中?我知道一个样本在 S16 下需要两个字节,双通道意味着它存储为 L1 R1 L2 R2 ...但是这个文件是否带有帧演示或 dat 文件中的所有字节都是样本值?两种方法转换后的test.wav文件大小不一样。一个是通过libav使用ffmpeg网站上的示例代码,另一个是上面提到的,直接在cmd中使用ffmpeg.exe,前一种方法给我的文件大小略小。当我发现有人说pcm使用框架演示时我很困惑(每帧 2048 个样本)。

我实际上不需要任何代码,但希望有人可以详细解释原始 pcm 格式。

非常感谢

ffmpeg pcm audioformat

9
推荐指数
2
解决办法
1万
查看次数

将wav文件转换为wav文件(更改格式)

试图找到我之前的问题的解决方法,我想将一个写入的16k 8bit单声道wav byte[](具有wav标头)转换为8k 8bit单声道流/字节[].

有没有可用于此类转换的样本的.Net库?

谢谢.

c# wav audioformat

6
推荐指数
1
解决办法
6391
查看次数

使用Mutagen处理所有接受的文件类型

为了处理mutagen,.ogg,.apev2,.wma,flac,mp4和asf所接受的每种文件类型,我需要做什么?(我排除了mp3,因为它上面有最多的文档)

如果知道如何完成这项工作的人可以提供一些伪代码来解释所使用的技术,我将不胜感激.我想要提取的主要标签是标题,文件的艺术家,专辑(如果有).

从哪儿开始?

python audio audio-processing mutagen audioformat

5
推荐指数
1
解决办法
3133
查看次数

Java中音频文件的长度

我在解析基于其字节数的mp3文件中的数据时遇到问题。

第一部分输出正确,我有一个254秒长的mp3文件,我从Github的mp3解析库mp3agic获取了它的信息。

但是,有关帧长度和持续时间的信息的第二部分是不正确的。

Length of this mp3 is: 254 seconds
Bitrate: 320 kbps (CBR)
Sample rate: 44100 Hz
Has ID3v1 tag?: NO
Has ID3v2 tag?: YES
Has custom tag?: NO

framelength -1
framerate 38.28125
duration -271265.06
Run Code Online (Sandbox Code Playgroud)

我用来获取帧长,帧率和持续时间的代码是:

File file = musicFile.getFileValue();

    this.audioStream.startMusicStream(file);

    try {
        AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
        AudioFormat format = audioInputStream.getFormat();
        long audioFileLength = file.length();
        int frameSize = format.getFrameSize();
        float frameRate = format.getFrameRate();
        float durationInSeconds = (audioFileLength / (frameSize * frameRate));

        System.out.println("framelength "+frameSize);
        System.out.println("framerate "+frameRate);
        System.out.println("duration "+durationInSeconds);

        this.setDurationLabel(durationInSeconds);
    } …
Run Code Online (Sandbox Code Playgroud)

java audio mp3 audioformat

5
推荐指数
1
解决办法
3313
查看次数

如何读取和修改amr音频文件数据?

如何从AMR-NB文件中提取采样率,比特率等信息.严格来说,我想要采样率或任何其他可能改变其音高或节奏的数据.

WAV文件很容易,但在这里我受限于AMR-NB格式(J2me设备)

我在谷歌上搜索了很多但却无法得到任何东西......

AMR-NB固定在8Khz?或者每个样品都有所不同?

java audio file-structure amr audioformat

5
推荐指数
1
解决办法
2702
查看次数

如何检查浏览器是否支持新音频?

在 safari 5 中,不支持新音频,因此错误控制台显示:

TypeError : 'undefined' is not a constructor (evaluating 'new Audio')
Run Code Online (Sandbox Code Playgroud)

我如何以编程方式知道浏览器是否支持新音频?

javascript audioformat html5-audio

5
推荐指数
1
解决办法
1665
查看次数

交错立体声PCM线性Int16大端音频是什么样的?

我知道在线有很多资源可以解释如何对PCM数据进行解交织.在我的当前项目的过程中,我已经看过他们大多......但我在音频处理没有背景,我有一个很很难找到如何详细的解释正是音频的这种常见的形式被存储.

我明白我的音频将有两个通道,因此样本将以[左] [右] [左] [右]的格式存储...我不明白的是这究竟是什么意思.我还读过每个样本以[左MSB] [左LSB] [右MSB] [右LSB]的格式存储.这是否意味着每个16位整数实际上编码两个8位帧,或者每个16位整数它自己的帧是指向左还是右通道?

谢谢大家.任何帮助表示赞赏.

编辑:如果您选择举例,请参阅以下内容.

方法上下文

具体来说,我要做的是将交错的short []转换为两个float [],每个float []代表左或右通道.我将用Java实现它.

public static float[][] deinterleaveAudioData(short[] interleavedData) {
    //initialize the channel arrays
    float[] left = new float[interleavedData.length / 2];
    float[] right = new float[interleavedData.length / 2];
    //iterate through the buffer
    for (int i = 0; i < interleavedData.length; i++) {
        //THIS IS WHERE I DON'T KNOW WHAT TO DO
    }
    //return the separated left and right channels
    return new float[][]{left, right};
}
Run Code Online (Sandbox Code Playgroud)

我目前的实施

我试过播放由此产生的音频.它非常接近,足够接近,你可以理解一首歌的词,但显然仍然不是正确的方法.

public …
Run Code Online (Sandbox Code Playgroud)

java audio pcm audioformat interleave

4
推荐指数
3
解决办法
3474
查看次数

将音频文件从应用程序保存到iPad/iPhone库

我一直在努力弄清楚如何在一天的大部分时间内做到这一点,但我找不到多少帮助.我们有这个多媒体应用程序,允许用户查看有关特定主题的图片,视频和音乐/铃声.我知道您可以使用保存图像UIImageWriteToSavedPhotosAlbum,您可以使用保存视频文件UISaveVideoAtPathToSavedPhotosAlbum.但我无法弄清楚如何允许用户保存音频文件.所有文件都存储在应用程序中,因此它不像我正在尝试从Internet上流式传输或下载它们.有没有人有关于如何做到这一点的任何指示?

iphone audio save ipad audioformat

3
推荐指数
1
解决办法
2297
查看次数

AudioQueue回调仅在iOS 7上获取空缓冲区

我有一个奇怪的问题.我的代码在iOS 5和6上运行良好,但在iOS 7上运行时,我在AudioQueue回调上获得了空缓冲区.

可能的相关代码:

- (void)setUpAudioFormat
{
audioFormat.mFormatID         = kAudioFormatLinearPCM;
audioFormat.mSampleRate       = SAMPLE_RATE;//16000.0;
audioFormat.mChannelsPerFrame = CHANNELS;//1;
audioFormat.mBitsPerChannel   = 16;
audioFormat.mFramesPerPacket  = 1;
audioFormat.mBytesPerFrame    = audioFormat.mChannelsPerFrame * sizeof(SInt16);
audioFormat.mBytesPerPacket   = audioFormat.mBytesPerFrame * audioFormat.mFramesPerPacket;
audioFormat.mFormatFlags      = kLinearPCMFormatFlagIsSignedInteger
| kLinearPCMFormatFlagIsPacked;

bufferNumPackets = 2048;  // must be power of 2 for FFT!
bufferByteSize = [self byteSizeForNumPackets:bufferNumPackets];

}

- (UInt32)numPacketsForTime:(Float64)seconds
{
return (UInt32) (seconds * audioFormat.mSampleRate / audioFormat.mFramesPerPacket);
}

- (UInt32)byteSizeForNumPackets:(UInt32)numPackets
{
return numPackets * audioFormat.mBytesPerPacket;
}

- (void)setUpRecordQueue
{
NSLog(@"\n+++ setUpRecordQueue");
OSStatus errorStatus = …
Run Code Online (Sandbox Code Playgroud)

audioformat audioqueue ios ios7

1
推荐指数
2
解决办法
2510
查看次数

将AUConverter添加到AUGraph时出现错误-10877

我正在使用Apple的MixerHost示例项目,该项目设置了一个音频单元处理图,其中包含一个连接到远程I/O音频单元的多声道混音器音频单元.我试图在两者之间放置一个格式转换器音频单元,这样我就可以转换混音器输出的格式.

复制两个现有音频单元的设置似乎很简单,当我输出图形设置时,它看起来是正确的:

Member Nodes:
node 1: 'auou' 'rioc' 'appl', instance 0x1cdf10 O  
node 2: 'aufc' 'conv' 'appl', instance 0x1ce890 O  
node 3: 'aumx' 'mcmx' 'appl', instance 0x1ceba0 O  
Connections:
node   3 bus   0 => node   2 bus   1
node   2 bus   0 => node   1 bus   0  [ 2 ch,      0 Hz, 'lpcm' (0x0000000C) 16-bit little-endian signed integer]
Run Code Online (Sandbox Code Playgroud)

但是,当我初始化图形时,我得到错误-10877,无效元素,图形无法启动.任何人都可以看到什么是错的?这是完整的设置代码:

NSLog (@"Configuring and then initializing audio processing graph");
OSStatus result = noErr;

//............................................................................
// Create a new audio processing graph.
result …
Run Code Online (Sandbox Code Playgroud)

iphone core-audio audioformat audiounit ios

1
推荐指数
1
解决办法
2595
查看次数

java中如何计算音频信号的分贝并录制音频?

public TargetDataLine targetDataLine;
private static AudioFormat getAudioFormat() 
{
        return new AudioFormat(16000, 16, 2, true, false);
}
AudioFormat a = getAudioFormat();
DataLine.Info info = new DataLine.Info(TargetDataLine.class, a);
targetDataLine = (TargetDataLine) AudioSystem.getLine(info);
targetDataLine.open(a);
targetDataLine.start();
AudioInputStream ais = new AudioInputStream(targetDataLine); 
AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File("record.wav"));
Run Code Online (Sandbox Code Playgroud)
  1. 如何同时计算音频的分贝数?
  2. 如何计算现有 wav 文件的分贝?

java audio wav decibel audioformat

0
推荐指数
1
解决办法
3184
查看次数