h264编码的视频文件中 Encoding settings 与x264 命令参数对应关系

h264编码的视频文件中 Encoding settings 与x264 命令参数对应关系

        想要借鉴别人的压缩参数,该怎么转换呢,请接着往下看。

复制出的Encoding settings

cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=2 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=14 / lookahead_threads=3 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=1 / keyint=100 / keyint_min=10 / scenecut=40 / intra_refresh=0 / rc_lookahead=10 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=1000 / vbv_bufsize=2400 / crf_max=0.0 / nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=1:1.00

转换后megui中对应的x264命令参数
 

--ref 1 --subme 2 --trellis 0 --chroma-qp-offset 0 --threads 6 --lookahead-threads 4 --weightp 1 --keyint 100 --min-keyint 10 --rc-lookahead 10 --crf 23.0 --qcomp 0.60 --qpmin 0 --qpmax 69 --qpstep 4 --vbv-maxrate 1000 --vbv-bufsize 2400 --crf-max 0.0 --nal-hrd none

转化时需要注意几点:

  1. 参数前使用--,=号替换成空格
  2. 如果参数值为0或1,可能是开关型参数,需去掉或不跟参数,例如open_gop=0 就需要去掉,
  3. 下划线_要替换为中划线-
  4. 使用x264 --fullhelp | findstr 字符串 查找命令
  5. 默认参数可以省略的。

megui中要写在这里
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
H.264编码是一个复杂的过程,需要涉及许多算法和数据结构,因此编写一个完整的H.264编码库是一个相当复杂的任务。下面是一个简单的示例程序,用于演示如何使用C语言编写一个H.264编码器: ```c #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <string.h> // 定义H.264编码器结构体 typedef struct { int width; // 视频的宽度 int height; // 视频的高度 int fps; // 视频的帧率 uint8_t *buffer; // 视频帧的缓冲区 int buffer_size; // 视频帧缓冲区的大小 } H264Encoder; // 初始化H.264编码H264Encoder* h264_encoder_init(int width, int height, int fps) { H264Encoder* encoder = (H264Encoder*)malloc(sizeof(H264Encoder)); encoder->width = width; encoder->height = height; encoder->fps = fps; encoder->buffer_size = width * height * 3 / 2; encoder->buffer = (uint8_t*)malloc(encoder->buffer_size); return encoder; } // 编码一帧视频 int h264_encoder_encode_frame(H264Encoder* encoder, uint8_t* frame_data, int frame_size) { // TODO: 实现H.264编码过程,将编码后的数据存储到encoder->buffer // 注意:编码后的数据大小可能会超过encoder->buffer_size,因此需要进行检查并返回错误码 return 0; } // 关闭H.264编码器 void h264_encoder_close(H264Encoder* encoder) { free(encoder->buffer); free(encoder); } int main() { // 初始化H.264编码H264Encoder* encoder = h264_encoder_init(640, 480, 30); // 加载一帧视频数据 FILE* fp = fopen("test.yuv", "rb"); uint8_t* frame_data = (uint8_t*)malloc(encoder->buffer_size); int frame_size = fread(frame_data, 1, encoder->buffer_size, fp); // 编码视频帧 int ret = h264_encoder_encode_frame(encoder, frame_data, frame_size); if (ret != 0) { fprintf(stderr, "Error: H.264 encoding failed.\n"); return -1; } // 关闭H.264编码h264_encoder_close(encoder); return 0; } ``` 上述示例程序仅仅是一个简单的框架,其的TODO注释需要您自己实现H.264编码过程。在实现过程,您可能需要使用到一些开源的H.264编码库,如x264等。此外,我们还需要注意H.264编码的标准,以便生成符合标准的H.264视频流。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值