猫耳FM音频转换成MP3格式

本文探讨了猫耳FM音频与普通音频的区别,指出其为音频、封面、弹幕的组合,并详细说明了如何分离音频文件,提供源码和DEMO,包括Windows和Mac端的转换工具链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创文|Space9

猫耳FM音频与普通音频的差异

首先我们发现猫耳FM音频是没有后缀名的音频文件,然后我们通过对比发现猫耳FM音频文件并不是什么加密文件,只是将音频文件、封面图片、弹幕文件合并到了一起(导致其他音频播放器无法识别音频)。

如何分离中间部分的音频文件

我们要分离中间部分的音频文件需要获得以下两个信息(文件的开头和结尾)。

猫耳FM的文件头探究

  • 第21-24字节 0014H 0015H 0016H 0017H(4字节)是使用小端存储的开始地址
  • 第41-44字节 0028H 0029H 0030H 0031H(4字节)是使用小端存储的结束地址

源码

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

#define CHUNK_SIZE 4096
#define HEADER_SIZE 12

int main(int argc, const char *argv[])
{
   
	FILE *inFp = NULL;
	FILE *outFp = NULL;
	uint32_t remaining_size;
	unsigned long i;
	char buff[CHUNK_SIZE];
	char file_header[HEADER_SIZE];
	uint32_t file_start_addr, file_size;

	if (argc <= 1)
	{
   
		printf("no input file\n");
		return 0;
	}

	char targetName[strlen(argv[1]) + 10];
	strncpy(targetName, argv[1], strlen(argv[1]));

	inFp = fopen(argv[1], "rb");
	if (inFp == NULL)
	{
   
		printf("open file fail\n");
		exit(1);
	}

	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(<
好的,以下是使用Python和Jupyter Notebook爬取猫耳FM中十首音乐音频的完整代码: 首先,需要安装相关的Python库,包括requests、beautifulsoup4和urllib。 ``` !pip install requests !pip install beautifulsoup4 ``` 然后,我们可以定义一个函数来爬取猫耳FM中的音频链接。 ```python import requests from bs4 import BeautifulSoup import urllib def get_audio_links(): links = [] for page in range(1, 11): url = f'https://www.lizhi.fm/258504/{page}.html' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') audio = soup.find('audio') source = audio.find('source') link = source['src'] links.append(link) return links ``` 这个函数将会遍历猫耳FM的10个页面,获取每个页面的音频链接。使用requests库发送HTTP请求,然后使用beautifulsoup4库解析HTML页面。最后,我们可以找到每个页面的音频链接,并将它们添加到一个列表中。 接下来,我们可以使用urllib库下载这些音频文件。 ```python def download_audio(links): for i, link in enumerate(links): path = f'audio_{i}.mp3' urllib.request.urlretrieve(link, path) ``` 这个函数将遍历所有的音频链接,使用urllib库下载每个文件,并将它们保存为mp3文件。 最后,我们可以调用这两个函数,爬取猫耳FM中的音频文件并下载它们。 ```python links = get_audio_links() download_audio(links) ``` 这样,我们就完成了爬取猫耳FM中十首音乐音频的完整代码。
评论 68
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值