1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dezhihuang-AVDataProcess

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
pcm16le_doublespeed.cpp 1.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
dezhihuang Отправлено 12.11.2017 12:30 b941d84
//
//本程序中的函数可以通过抽象的方式将PCM16LE双声道数据的速度提高一倍。
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int pcm16le_doublespeed(const char *file)
{
if (file == NULL) {
printf("原始PCM文件为空!\n");
return 0;
}
FILE *fp = fopen(file, "rb+");
if (fp == NULL) {
printf("原始PCM文件打开失败!\n");
return 0;
}
FILE *fp1 = fopen("./output/output_doublespeed.pcm", "wb+");
if (fp1 == NULL) {
printf("文件打开或创建失败!\n");
return 0;
}
int count = 0; //采样计数
unsigned char buf[4] = {0};
while( !feof(fp) ) {
//从文件中读取一次采样值,因为是16位的,所以需读取4个字节
//左右声道采样值间隔存储
//前两个字节为左声道采样值,后两个字节为右声道采样值
fread(buf, 1, 4, fp);
//只把偶数次采样值写入文件
if (count%2 == 0) {
//保存左声道的数据,一个采样值16位,两个字节
fwrite(buf, 1, 2, fp1);
//保存右声道的数据,一个采样值16位,两个字节
fwrite(buf+2, 1, 2, fp1);
}
count++;
}
fclose(fp);
fclose(fp1);
return 1;
}
int main()
{
char file[] = "./mediadata/NocturneNo2inEflat_44.1k_s16le.pcm";
if (pcm16le_doublespeed(file)) {
printf("操作成功!!!\n");
} else {
printf("操作失败!!!\n");
}
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dezhihuang-AVDataProcess.git
git@api.gitlife.ru:oschina-mirror/dezhihuang-AVDataProcess.git
oschina-mirror
dezhihuang-AVDataProcess
dezhihuang-AVDataProcess
master