国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

將s16le的音頻流轉(zhuǎn)換為float類型

這篇具有很好參考價(jià)值的文章主要介紹了將s16le的音頻流轉(zhuǎn)換為float類型。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

這是一個(gè)將s16le格式音頻文件轉(zhuǎn)換為float類型并寫(xiě)入新文件的示例代碼。


以下是代碼的講解:

  1. 定義WavHeader結(jié)構(gòu)體,用于存儲(chǔ)WAV文件頭中的信息。
  2. 從命令行參數(shù)中獲取輸入和輸出文件名(第一個(gè)參數(shù)代表程序自身,因此輸入文件名為第二個(gè)參數(shù),輸出文件名為第三個(gè)參數(shù))。
  3. 打開(kāi)輸入文件和輸出文件,如果打開(kāi)失敗則返回錯(cuò)誤碼。
  4. 讀取WAV文件頭并檢查其格式是否正確,如果不正確則返回錯(cuò)誤碼。
  5. 計(jì)算音頻數(shù)據(jù)中的采樣點(diǎn)數(shù)和每個(gè)采樣點(diǎn)占用的字節(jié)數(shù)。
  6. 分配內(nèi)存空間來(lái)存儲(chǔ)音頻數(shù)據(jù),如果分配失敗則返回錯(cuò)誤碼。
  7. 讀取輸入文件中的音頻數(shù)據(jù),并將每個(gè)采樣點(diǎn)的值轉(zhuǎn)換為float類型。
  8. 輸出一些關(guān)于音頻數(shù)據(jù)的基本信息。
  9. 將轉(zhuǎn)換后的音頻數(shù)據(jù)寫(xiě)入輸出文件。
  10. 釋放內(nèi)存空間,關(guān)閉輸入和輸出文件,程序結(jié)束。
  11. 需要注意的是,在寫(xiě)入輸出文件時(shí),我們使用了fwrite函數(shù),將整個(gè)音頻數(shù)據(jù)數(shù)組寫(xiě)入文件。

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    char chunkId[4];
    int chunkSize;
    char format[4];
    char subchunk1Id[4];
    int subchunk1Size;
    short audioFormat;
    short numChannels;
    int sampleRate;
    int byteRate;
    short blockAlign;
    short bitsPerSample;
    char subchunk2Id[4];
    int subchunk2Size;
} WavHeader;

int main(int argc, char**argv) {
    const char* infile = argv[1];
    FILE* infp = fopen(infile, "rb");
    if (!infp) {
        printf("Failed to open input file %s.\n", infile);
        return 1;
    }

    const char* outfile = argv[2];
    FILE* outfp = fopen(outfile, "wb");
    if (!outfp) {
        printf("Failed to open input file %s.\n", infile);
        return 1;
    }

    // Read WAV file header
    WavHeader wavHeader;
    fread(&wavHeader, sizeof(WavHeader), 1, infp);
    if (strncmp(wavHeader.chunkId, "RIFF", 4) != 0 ||
        strncmp(wavHeader.format, "WAVE", 4) != 0 ||
        strncmp(wavHeader.subchunk1Id, "fmt ", 4) != 0 ||
        wavHeader.audioFormat != 1) {
        printf("Invalid WAV file.\n");
        fclose(infp);
        return 1;
    }

    // Calculate number of samples and bytes per sample
    int numSamples = wavHeader.subchunk2Size / (wavHeader.numChannels * (wavHeader.bitsPerSample / 8));
    int bytesPerSample = wavHeader.bitsPerSample / 8;

    // Allocate memory for audio data
    float* buffer = (float*) malloc(numSamples * wavHeader.numChannels * sizeof(float));
    if (!buffer) {
        printf("Failed to allocate memory.\n");
        fclose(infp);
        return 1;
    }

    // Read audio data and convert to float
    int i, j;
    short sampleValue;
    for (i = 0; i < numSamples; i++) {
        for (j = 0; j < wavHeader.numChannels; j++) {
            fread(&sampleValue, bytesPerSample, 1, infp);
            buffer[i * wavHeader.numChannels + j] = (float) sampleValue / 32768.0f;
        }
    }

    // Print some information about the audio data
    printf("Input file: %s\n", infile);
    printf("Format: %d-channel s16le, %d Hz\n", wavHeader.numChannels, wavHeader.sampleRate);
    printf("Duration: %.3f seconds\n", (float) numSamples / wavHeader.sampleRate);

    // write to output file.
    fwrite(buffer, numSamples * wavHeader.numChannels * sizeof(float), 1, outfp);

    // Clean up
    free(buffer);
    fclose(infp);
    fclose(outfp);

    return 0;
}


編譯后測(cè)試


./s16letofloat chendu-96k.wav chendu-96kflt.pcm

ffmpeg 播放文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-409393.html

ffmpeg -ar 96000 -ac 2 -f f32le -i chendu-96kflt.pcm -f wav pipe:1 | ffplay -

到了這里,關(guān)于將s16le的音頻流轉(zhuǎn)換為float類型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 電腦音頻轉(zhuǎn)換mp3格式怎么弄,教你音頻怎么轉(zhuǎn)換mp3格式

    電腦音頻轉(zhuǎn)換mp3格式怎么弄,教你音頻怎么轉(zhuǎn)換mp3格式

    mp3格式是目前幾乎全兼容的格式了,在我們參加一些會(huì)議或講座時(shí),需要錄制一些重要的信息,結(jié)束后再進(jìn)行復(fù)盤(pán)或分享。然而,不同的錄制工具錄制的音頻格式也不同,這時(shí)使用軟件將音頻統(tǒng)一成mp3格式的話,就會(huì)方便我們分享給他人了。那么大家知道電腦音頻轉(zhuǎn)換mp3格式

    2024年02月12日
    瀏覽(92)
  • 音頻格式及轉(zhuǎn)換代碼

    音頻格式及轉(zhuǎn)換代碼

    python已經(jīng)支持WAV格式的書(shū)寫(xiě),而實(shí)時(shí)的聲音輸入輸出需要安裝pyAudio(http://people.csail.mit.edu/hubert/pyaudio)。最后我們還將使用pyMedia(http://pymedia.org)進(jìn)行Mp3的解碼和播放。 音頻信號(hào)是模擬信號(hào),我們需要將其保存為數(shù)字信號(hào),才能對(duì)語(yǔ)音進(jìn)行算法操作,WAV是Microsoft開(kāi)發(fā)的一種聲音文

    2024年02月05日
    瀏覽(12)
  • mac怎么轉(zhuǎn)換音頻格式?

    mac怎么轉(zhuǎn)換音頻格式?

    ? ? mac怎么轉(zhuǎn)換音頻格式?相信很多小伙伴都知道,平時(shí)我們接觸到的音頻格式大多是mp3格式的,因?yàn)閙p3是電腦上最為流行的音頻格式,不過(guò)除了mp3格式外,還有很多不同的音頻格式,有時(shí)候不同網(wǎng)上或者不同軟件上下載到的音頻文件格式都不相同。每種音頻格式都有不同的

    2024年02月16日
    瀏覽(21)
  • Python音頻和視頻格式轉(zhuǎn)換

    1.音頻轉(zhuǎn)換 使用Python中的一些庫(kù)來(lái)進(jìn)行音頻格式轉(zhuǎn)換。其中一個(gè)常用的庫(kù)是pydub。首先,你需要安裝pydub庫(kù)。你可以使用以下命令來(lái)安裝它: 安裝完成后,你可以使用以下代碼來(lái)進(jìn)行音頻格式轉(zhuǎn)換: 2.視頻格式轉(zhuǎn)換 使用FFmpeg庫(kù)。FFmpeg是一個(gè)開(kāi)源的跨平臺(tái)多媒體處理工具,可以

    2024年02月15日
    瀏覽(18)
  • 如何利用音頻轉(zhuǎn)換器將多個(gè)MP3音頻轉(zhuǎn)換為OGG格式

    如何利用音頻轉(zhuǎn)換器將多個(gè)MP3音頻轉(zhuǎn)換為OGG格式

    現(xiàn)在,我們接觸到的很多音頻文件一般都是MP3格式的。但是我們偶爾也需要用到ogg格式的音頻文件,所以就需要我們將MP3格式音頻文件轉(zhuǎn)換為ogg格式了,那么,如果想要將MP3格式文件轉(zhuǎn)換為OGG格式該如何操作呢?相信很多朋友心里都沒(méi)有答案,小編找到了一種有效的方法,接

    2024年03月11日
    瀏覽(85)
  • 免費(fèi)的音頻轉(zhuǎn)換器帶你突破音頻格式束縛

    免費(fèi)的音頻轉(zhuǎn)換器帶你突破音頻格式束縛

    曾經(jīng)有一個(gè)名叫吳歡的音樂(lè)愛(ài)好者,他熱愛(ài)收集各種音頻文件,從經(jīng)典的老歌到新潮的流行曲,樣樣都不放過(guò)。然而,他遇到了一個(gè)令人頭疼的問(wèn)題:因?yàn)橐纛l格式的不同,他無(wú)法將一些珍貴的音樂(lè)記錄轉(zhuǎn)化為文字形式。他渴望能夠快速、方便地將這些美妙的旋律轉(zhuǎn)換成文字

    2024年02月15日
    瀏覽(87)
  • m4a音頻格式轉(zhuǎn)換器:讓音頻輕松換裝

    m4a音頻格式轉(zhuǎn)換器:讓音頻輕松換裝

    大家有沒(méi)有遇到這樣的情況——你下載了一個(gè)很酷的音頻文件,但是播放設(shè)備卻說(shuō)“不認(rèn)識(shí)”這個(gè)格式?別擔(dān)心!現(xiàn)在有個(gè)超級(jí)厲害的工具可以幫你解決這個(gè)問(wèn)題,它就是m4a音頻格式轉(zhuǎn)換器!它能讓你的音頻文件變身,適應(yīng)不同設(shè)備和播放軟件的需求。 那么,這個(gè)m4a音頻格式

    2024年02月12日
    瀏覽(16)
  • 這些工具讓音頻文件格式轉(zhuǎn)換更簡(jiǎn)單

    這些工具讓音頻文件格式轉(zhuǎn)換更簡(jiǎn)單

    小華是一位音樂(lè)愛(ài)好者,他平時(shí)喜歡下載并播放一些流行音樂(lè)。在這個(gè)過(guò)程中,他發(fā)現(xiàn)從不同平臺(tái)上下載下來(lái)的音樂(lè)格式并不一樣,而不同的播放平臺(tái)也支持不同的音頻格式。這令他感到煩惱,并希望通過(guò)一些音頻格式轉(zhuǎn)換器來(lái)幫助他解決音頻格式不兼容的問(wèn)題。于是,他開(kāi)

    2024年02月13日
    瀏覽(49)
  • mp3怎樣才能轉(zhuǎn)換成wav格式?音頻互相轉(zhuǎn)換的方法

    mp3怎樣才能轉(zhuǎn)換成wav格式?音頻互相轉(zhuǎn)換的方法

    一,什么是WAV WAV,全稱為波形音頻文件(Waveform Audio File Format),是一種由微軟公司和IBM公司聯(lián)合開(kāi)發(fā)的音頻文件格式。自1991年問(wèn)世以來(lái),WAV格式因其無(wú)損的音頻質(zhì)量和廣泛的兼容性,成為了多媒體應(yīng)用中不可或缺的一部分。本文將從WAV格式的定義、特點(diǎn)、應(yīng)用以及與其他音

    2024年04月14日
    瀏覽(94)
  • python使用ffmpeg來(lái)制作音頻格式轉(zhuǎn)換工具(優(yōu)化版)

    python使用ffmpeg來(lái)制作音頻格式轉(zhuǎn)換工具(優(yōu)化版)

    簡(jiǎn)介:一個(gè)使用python加上ffmpeg模塊來(lái)進(jìn)行音頻格式轉(zhuǎn)換的工具。 日志: 20231030:第一版,設(shè)置了簡(jiǎn)單的UI布局和配色,實(shí)現(xiàn)音頻轉(zhuǎn)為Mp3、AAC、wav、flac四種格式。可解析音頻并顯示信息,可設(shè)置轉(zhuǎn)換后的保存路徑 UI界面: 編程平臺(tái):visual studio code 編程語(yǔ)言:python 3.12.0 模塊:

    2024年02月06日
    瀏覽(38)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包