ali*_*dro 5 ffmpeg video-encoding libx264
我在ffmpeg中使用libx264编码视频,我使用了下面的配置。
enCodecContext->bit_rate = 300000;
enCodecContext->width = 80;
enCodecContext->height = 60;
enCodecContext->time_base = (AVRational) {1, 25};
enCodecContext->gop_size = 10;
enCodecContext->max_b_frames = 1;
enCodecContext->pix_fmt = PIX_FMT_YUV420P;
enCodecContext->qcompress = 0.6;
av_opt_set(enCodecContext->priv_data, "preset", "slow", 0);
Run Code Online (Sandbox Code Playgroud)
但是当我调用avcodec_encode_video2with 时enCodecContext,出现错误Input picture width (40) is greater than stride (0)。
avcodec_encode_video2(enCodecContext, &filteredAVPacket, pFilteredAVFrame, &got_packet_ptr);
Run Code Online (Sandbox Code Playgroud)
该pFilteredAVFrame->width和pFilteredAVFrame->height是80和60分别。
配置时我是否遗漏了一些东西libx264,我怎样才能获得一个可行的配置libx264来编码我的视频?
x264 没问题。您必须填写图像平面的 AVPicture.linestride 变量。步幅描述了图像在内存中的布局方式。步幅必须至少与图像宽度一样大。在 YUV 4:2:0 的情况下,步幅必须至少是第二和第三平面上宽度的一半。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa473780(v=vs.85).aspx
| 归档时间: |
|
| 查看次数: |
2730 次 |
| 最近记录: |