H264详细介绍:H264编码总结
u8 is_h264_file(char *filename)
{
AVFormatContext *ifmt_ctx = NULL;
int ret = 0;
if ((ret = avformat_open_input(&ifmt_ctx, filename, 0, 0)) < 0) {
printf( "Could not open input file.");
return 0;
}
// printf("1ifmt_ctx->video_codec_id:%d\n",ifmt_ctx->video_codec_id);
if ((ret = avformat_find_stream_info(ifmt_ctx, 0)) < 0) {
printf( "Failed to retrieve input stream information");
avformat_close_input(&ifmt_ctx);
return 0;
}
//ifmt_ctx->streams[0]->codecpar->codec_id;
printf("3ifmt_ctx->video_codec_id:%d\n",ifmt_ctx->streams[0]->codecpar->codec_id);
if(ifmt_ctx->streams[0]->codecpar->codec_id==AV_CODEC_ID_H264)
{
printf("is h264 file\n");
avformat_close_input(&ifmt_ctx);
return 1;
}
else
{
printf("is not h264 file\n");
avformat_close_input(&ifmt_ctx);
return 0;
}
}
判断MP4是否为H.264编码格式,用mediaInfo这个软件是可以查看的
H264标准的主要特点如下:
1.更高的编码效率:同H.263等标准的特率效率相比,能够平均节省大于50%的码率。
2.高质量的视频画面:H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点。
3.提高网络适应能力:H.264可以工作在实时通信应用(如视频会议)低延时模式下,也可以工作在没有延时的视频存储或视频流服务器中。
4.采用混合编码结构:同H.263相同,H.264也使用采用DCT变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4x4二维整数变换等新的编码方式,提高了编码效率。
5.H.264的编码选项较少:在H.263中编码时往往需要设置相当多选项,增加了编码的难度,而H.264做到了力求简洁的“回归基本”,降低了编码时复杂度。
6.H.264可以应用在不同场合:H.264可以根据不同的环境使用不同的传输和播放速率,并且提供了丰富的错误处理工具,可以很好的控制或消除丢包和误码。
7.错误恢复功能:H.264提供了解决网络传输包丢失的问题的工具,适用于在高误码率传输的无线网络中传输视频数据。
8.较高的复杂度:264性能的改进是以增加复杂性为代价而获得的。据估计,H.264编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍。