猫耳FM导出音频转换为音频格式(m4a/mp3)

您所在的位置:网站首页 在蜻蜓fm上下载的音频文件如何转为mp3格式 猫耳FM导出音频转换为音频格式(m4a/mp3)

猫耳FM导出音频转换为音频格式(m4a/mp3)

2024-01-29 05:17| 来源: 网络整理| 查看: 265

目录 旧方法(不可用)新方法 提示:仅为个人学习使用,不得用于任何商业用途

旧方法(不可用) 找到文件:打开文件管理-内部储存-MaoerFM-Download-sound_blob将下载的文件后缀名改为mp3 新方法

参考此文:猫耳FM音频转换成MP3格式-space9bug,原方法可以用,只是我懒得用控制台了。(22.6.13突然发现原博客有demo,大伙可以试试先,选择“普通下载”)修改了几个地方,亲测可以直接在编译器编译运行使用,步骤为:

给文件添加mp3后缀名放到下方代码文件的相同路径下,修改char input_file_name[100] = “2185209.mp3”;这一句引号内的数字,跟自己的文件的一致即可运行下方代码,输出文件在同一文件夹下

代码如下:

#include #include #include #include using namespace std; #define CHUNK_SIZE 4096 #define HEADER_SIZE 12 int main() { FILE *inFp = NULL; FILE *outFp = NULL; uint32_t read_temp_size; char buff[CHUNK_SIZE]; char file_header[HEADER_SIZE]; uint32_t file_start_addr, file_size; char input_file_name[100] = "2185209.mp3"; char targetName[strlen(input_file_name) + 10]; strncpy(targetName, input_file_name, strlen(input_file_name)); inFp = fopen(input_file_name, "rb"); if (inFp == NULL) { printf("open file fail\n"); } fseek(inFp, 20, SEEK_SET); fread(&file_start_addr, 1, sizeof(file_start_addr), inFp); printf("start:%d\n", file_start_addr); fseek(inFp, 40, SEEK_SET); fread(&file_size, 1, sizeof(file_size), inFp); printf("end:%ld\n", file_size); fseek(inFp, file_start_addr, SEEK_SET); fread(&file_header, HEADER_SIZE, 1, inFp); if ((file_header[0] == 0x49 && file_header[1] == 0x44 && file_header[2] == 0x33) || (file_header[0] == 0xFF && file_header[1] == 0xfb)) { printf("MP3 file\n"); strcat(targetName, ".mp3"); } else if ((file_header[4] == 0x66 && file_header[5] == 0x74 && file_header[6] == 0x79 && file_header[7] == 0x70 && file_header[8] == 0x4D && file_header[9] == 0x34 && file_header[10] == 0x41) || (file_header[0] == 0x4D && file_header[1] == 0x34 && file_header[2] == 0x41 && file_header[3] == 0x20)) { printf("M4A file\n"); strcat(targetName, ".m4a"); } else { printf("OTHER file\n"); strcat(targetName, ".temp"); } outFp = fopen(targetName, "wb"); if (outFp == NULL) { printf("open file fail\n"); } fseek(inFp, file_start_addr, SEEK_SET); while (file_size != 0) { /* 使用右移和按位与优化代码 */ // read_temp_size = file_size / CHUNK_SIZE ? CHUNK_SIZE : file_size % CHUNK_SIZE; read_temp_size = file_size >> 12 ? CHUNK_SIZE : file_size & (CHUNK_SIZE - 1); fread(&buff, read_temp_size, 1, inFp); fwrite(&buff, read_temp_size, 1, outFp); file_size -= read_temp_size; } fclose(inFp); inFp = NULL; fclose(outFp); outFp = NULL; return 0; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3