diff --git a/src/media/media_encoder.cpp b/src/media/media_encoder.cpp index 80f97f5b07e862fe27c26581cbb77c9c329917af..9b17db259653669f2a18a9893bdcc4a7a8eb32af 100644 --- a/src/media/media_encoder.cpp +++ b/src/media/media_encoder.cpp @@ -71,6 +71,10 @@ MediaEncoder::~MediaEncoder() void MediaEncoder::setDeviceOptions(const DeviceParams& args) { device_ = args; + // Make sure width and height are even (required by x264) + // This is especially for image/gif streaming, as video files and cameras usually have even resolutions + device_.width -= device_.width % 2; + device_.height -= device_.height % 2; if (device_.width) av_dict_set(&options_, "width", ring::to_string(device_.width).c_str(), 0); if (device_.height)