diff --git a/lib/flv_tag.cpp b/lib/flv_tag.cpp
index d4f5cf18..939a96c6 100644
--- a/lib/flv_tag.cpp
+++ b/lib/flv_tag.cpp
@@ -1110,7 +1110,6 @@ JSON::Value FLV::Tag::toJSON(DTSC::Meta & metadata, AMF::Object & amf_storage, u
         metadata.tracks[reTrack].width = spsChar.width;
         metadata.tracks[reTrack].height = spsChar.height;
         metadata.tracks[reTrack].fpks = spsChar.fps * 1000;
-
       }
       pack_out.null();
       return pack_out; //skip rest of parsing, get next tag.
diff --git a/src/input/input_mp4.cpp b/src/input/input_mp4.cpp
index 450dc44f..49f89bdf 100644
--- a/src/input/input_mp4.cpp
+++ b/src/input/input_mp4.cpp
@@ -8,6 +8,7 @@
 #include <mist/stream.h>
 #include <mist/flv_tag.h>
 #include <mist/defines.h>
+#include <mist/h264.h>
 
 #include "input_mp4.h"
 
@@ -387,6 +388,14 @@ namespace Mist {
                               if (tmpContent.getType() == "avcC"){
                                 myMeta.tracks[trackNo].init = std::string(tmpContent.payload(),tmpContent.payloadSize());
                               }
+                              ///this is a hacky way around invalid FLV data (since it gets ignored nearly everywhere, but we do need correct data...
+                              if (!myMeta.tracks[trackNo].width || !myMeta.tracks[trackNo].height || !myMeta.tracks[trackNo].fpks){
+                                h264::sequenceParameterSet sps;
+                                sps.fromDTSCInit(myMeta.tracks[trackNo].init);
+                                h264::SPSMeta spsChar = sps.getCharacteristics();
+                                myMeta.tracks[trackNo].width = spsChar.width;
+                                myMeta.tracks[trackNo].height = spsChar.height;
+                              }
                             }else if (tmpType == "hev1" || tmpType == "hvc1"){
                               myMeta.tracks[trackNo].type = "video";
                               myMeta.tracks[trackNo].codec = "HEVC";