使用Librtmp收流,接收H264 + AAC(附代码)

用librtmp接收H264+AAC的例子代码网上参考资源比较少,这份代码来自www.cnblogs.com的某个博客,但是已经找不到原链接了。把代码附上,帮助各位网友在开发时少走些弯路。

//

#include "librtmp/rtmp_sys.h"
#include "librtmp/log.h"

 
#define HTON16(x)  ((x>>8&0xff)|(x<<8&0xff00))
#define HTON24(x)  ((x>>16&0xff)|(x<<16&0xff0000)|(x&0xff00))
#define HTON32(x)  ((x>>24&0xff)|(x>>8&0xff00)|(x<<8&0xff0000)|(x<<24&0xff000000))
#define HTONTIME(x) ((x>>16&0xff)|(x<<16&0xff0000)|(x&0xff00)|(x&0xff000000))

#pragma comment(lib, "librtmp.lib")

#pragma pack(1)
 
typedef struct _FLVHead
{
    char type[3];
    char version;
    char stream_info;
    int offset;
}FLVHead;
 
typedef struct _FLVTag
{
    int tag_size;
    char type;
    char length[3];
    char timecamp[3];
    char timecampex;
    char StreamsID[3];
}FLVTag;
 
#pragma pack()

char* ByteRead8(int *i8, char *buf) 
{
    memcpy(i8, buf, 1);
    return buf+1;
}
 
char* ByteRead16(int *i16, char *buf)
{ 
    memcpy(i16, buf, 2);
    *i16 = HTON16(*i16);
    return buf+2;
}
 
char* ByteRead32(int *i32, char *buf)
{
    memcpy(i32, buf, 4);
    *i32 = HTON32(*i32);
    return buf+4;
}

void UnPackH264(char *data,int len, char * outData, int & outLen)
{
    int h264space = 0x01000000;
    char *buf = data+1;
    char * pOutBuf = outData;

    int avctype = 0;
    buf = ByteRead8(&avctype,buf);
    buf += 3;
     
    int templength = 0;
    char *tempbuff = NULL;
    if (avctype == 0)
    {
        buf += 6;
         
        buf = ByteRead16(&templength,buf);
         
        tempbuff = buf;
       // fwrite(&h264space, 1, 4, h264file);
		memcpy(pOutBuf, &h264space, 4);
		pOutBuf += 4;
	
       // fwrite(tempbuff, 1, templength, h264file);
		memcpy(pOutBuf, tempbuff, templength);
		pOutBuf += templength;
        buf += templength;
         
        buf = ByteRead8(&templength, buf);
        buf = ByteRead16(&templength, buf);
         
        tempbuff = buf;
      //  fwrite(&h264space, 1, 4, h264file); 
		memcpy(pOutBuf, &
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 海思H265 AAC生成FLV是指使用海思H265编码器和AAC音频编码器生成FLV格式的视频文件。H265和AAC是当今最先进和广泛使用的视频和音频编码标准,具有更高的视频和音频质量和更小的文件大小。 H265编码器是一种先进的视频编码器,也称为HEVC(High Efficiency Video Coding)。它是一种高效的视频压缩技术,可以将视频文件大小缩小一半或更多,而不会影响视频质量。因此,当使用海思H265编码器生成FLV文件时,您可以期望更小的文件大小和更好的视频质量。 AAC音频编码器是一种广泛使用的音频压缩技术,它提供更高的音频质量和更小的文件大小。使用AAC音频编码器生成FLV文件时,您可以期望更好的音频质量,更小的文件大小和更好的播放兼容性。 在生成FLV文件时,需要考虑视频和音频的编码参数和转封装的技术。使用海思H265和AAC编码器生成FLV文件可以通过调整编码参数和使用专业的转封装软件来实现。因此,您可以期望更高效的视频和音频数据传输以及更好的文件播放兼容性。 ### 回答2: 海思H.265和AAC是一种视频和音频编码格式,用于在数字视频或音频传输中实现高级别的压缩和高质量的解码效果。这种技术被广泛应用于数字媒体领域,如流媒体、视频会议、监控和广播。 生成FLV文件(Flash视频格式)的过程中,海思H.265和AAC技术可以帮助用户实现高效的数据传输和压缩,同时提供高质量的视频和音频解码。因为FLV是一种流式格式,需要在传输过程中实时解码和显示数据。海思H.265和AAC技术可以帮助确保视频数据和音频数据的完整性和准确性,并提供更快的解码速度和更高的画质。这对于视频直播、视音频文件存储和播放等应用是非常重要的。 总的来说,海思H.265和AAC技术的优势在于其高效率、高画质、高稳定性和高兼容性。这种技术已经成为数字媒体领域的重要组成部分,将继续在未来的数字媒体发展中发挥重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值