【FFmpeg】编写 ACC 的 ADTS 信息头

背景

  在保存aac格式的信息流时必须要对每一帧aac信息流加以头信息,否则解码器无法识别aac信息流,这个信息头就是ADTS信息头。

代码

int write_ADTS_header(AVPacket *pkt, AVCodecParameters& codecpar) {

	int length = pkt->size + ADTS_HEADER_SIZE;
	uint8_t *data1 = new uint8_t[length];
	memcpy(data1 + ADTS_HEADER_SIZE, pkt->data, pkt->size);

	uint8_t pb[ADTS_HEADER_SIZE] = { 0 };
	int sample_index = 0x4;
	int channel = codecpar.channels;
	switch (codecpar.sample_rate)
	{
	case 48000:sample_index = 0x3;
		break;
	case 44100:sample_index = 0x4;
		break;
	case 32000:sample_index = 0x5;
		break;
	}
	
	// # 编辑信息头
	pb[0] = 0xff;
	pb[1] = 0xf1;
	pb[2] = 0x40 | (sample_index << 2) | (channel >> 2);
	pb[3] = ((channel & 0x3) << 6) | (length >> 11);
	pb[4] = (length >> 3) & 0xff;
	pb[5] = ((length << 5) & 0xff) | 0x1f;
	pb[6] = 0xfc;
	// # end 编辑信息
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值