Using opevcv 3.3.x dev from source (Ubuntu 16.04 on ARM) and I get "This encoder requires using the avcodec_send_frame() API" trying to use video writer with and h264 codec. Looking at the source for libav it appears to expect and audio component:
1270 int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
1271 AVPacket *avpkt,
1272 const AVFrame *frame,
1273 int *got_packet_ptr)
1274 {
1275 AVFrame tmp;
1276 AVFrame *padded_frame = NULL;
1277 int ret;
1278 int user_packet = !!avpkt->data;
1279
1280 *got_packet_ptr = 0;
1281
1282 if (!avctx->codec->encode2) {
1283 av_log(avctx, AV_LOG_ERROR, "This encoder requires using the avcodec_send_frame() API.\n");
1284 return AVERROR(ENOSYS);
1285 }
Not sure if this is a libav issue of opencv issue.