I’ve used FFMPEG library for a while. Actually, the FFMPEG library’s decoding process flow can be described as the following picture. If you want to read the videos and then save to jpeg file, you can take a look on my programming code (tested on FFMPEG ver. 4 library).
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABJwAAAHZCAYAAADDgyGkAAAgAElEQVR4Aeyd+XcUVd7/+8/4/ugzhwSOYI6sB+Z5HE8A9xmPDvqghiWs8zzOjDPDoo/oKA6uLAYRRxERwxYIYQkhQQRERUARiCwJS4OgyCrIDgECn+9536pbXVVd1V3V6XR3knefk/RSt+699aruvlWv/txPRYQ3EiABEiABEiABEiABEiABEiABEiABEiABEkgjgUga62JVJEACJEACJEACJEACJEACJEACJEACJEACJCAUTnwTkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJpJUAhVNacbIyEiABEiABEiABEiABEiABEiABEiABEiABCie+B0iABEiABEiABEiABEiABEiABEiABEiABNJKgMIprThZGQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAIUT3wMkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJpJUDhlFacrIwESIAESIAESIAESIAESIAESIAESIAESIDCie8BEiABEiABEiABEiABEiABEiABEiABEiCBtBKgcEorTlZGAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRA4cT3AAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQFoJUDilFScrIwESIAESIAESIAESIAESIAESIAESIAESoHDie4AESIAESIAESIAESIAESIAESIAESIAESCCtBCic0oqTlZEACZAACZAACZAACZAACZAACZAACZAACVA48T1AAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQVgIUTmnFaassGpWo7WnSh9Gp0isSkUivKVLX0CCNjY1JV2EBEiABEiABEiABEiABEiABEiABEiABEshFAjkknGpk6m8jEoF0ifSUYct3y/Xr1+XWrVsJuEWlZqReJyI9J+2Wa9euJVknQXW2RdGpvzX6MqxSGhoa5ObNm7al9odRs9+9ZHJdg9F+9UhzO4bJ0kuXAmyHiGjh1OUlqdqxQ06cOEHpZMesHmvWxj4ftvxq2vZ3XFN8gQRIgARIgARIgARIgARIgARIgARIIGUCOSWcRijZpAXSozJz3z65fPmyv0Cq0WLHWOeOUUtlz549ShClTESvGJ0qPVV/HpPptbVy/vx5735oUdRtglR9/70cOHBArlUON4RTwRiZt369/Pjjj3Ljxg1ds/e9bq/TM/LOokVSV1enZIp34Tb6qmt/P/rOFtm3b1969ncbRcrNJgESIAESIAESIAESIAESIAESIIHmIJBTwmm4EjyPS+/ehkDq8+wCJZAQteR1M6Kbesqjj96hBM9v+r8q5eXlcu7cOa/iIV+Lyps9Yv3YtWuXpwDSkVAFo5fJwoUL5dtvv5UrV67IpUuXZN26dVJRUSH19fWe6zo6pIVTxz/LpDlzZMeOHcnXcVTQ2p/o6KYh8vDDxn753d8+khUrVsiFCxda+8Zz+0iABEiABEiABEiABEiABEiABEigRRHIKeE0TAmnR+Vvf/udESF01zOyevVqb6GgI4u6vyovDmmvyv/HY+Nlzpw58uuvv6ZlJ+ye1NPox93/kE8//dSjH1qC9JARM1eqtvfv36+imRDRdPz4cYlGo0qA+U/JM7tK4ZRwn2mx9+Ssg/JcH0M4/ddf3pfFixenSTAmbJ4LSYAESIAESIAESIAESIAESIAESIAEQhDISeE0avZbMrQ9pEKeDHx7vvz0009x+Yy0gHj837vk7YF5RoTTf0+whJNe3nNynZpy5c4FFVtuRB+5l4Nh4963pauSYL3l2QULVF4lhzjS0qvreJkyb56KZoLsuhUtMRKAD6tUkU7O6XRRqZk60liu6u4pPScul/r6ydIDz30inKI1U2WkleMKbHrKUKznk7PKKG/moVLtRKRnz6FSWRciIbm5fb2m1Mu1+kopGdHLEHCor+dQWb77qrFfojWOvvUcOlF2XzWX6Tejva5r9VIy0lYXtmX5rgS5rmpkJNrs/rp8vHq1/F9fQzjd/Y+PKZw0X96TAAmQAAmQAAmQAAmQAAmQAAmQQA4RyE3h9MknMutPtyu5kVc0STZt2qSmqcW4mQIiUiyvVFdLyaB8VbbdU29ZwglJuFUOpjufk5U7dyrxE5NKOjKppzy7cqfs3r1brl69GqveehSVN8xpdYWjPomb5qal1R/f+U61u3HjRqOfWkQ9NVt27twpZ8+etZKOx5Kc95D+/fvLI3cY0wGNZOkRidz+vzKxtNTRlm4HkqlrUZE8+uij0smUSJE7n5OtZ844ckTFykdU+X79+snDnQxJg3aK5v6s+hnjYW2w84G5HV2eekruVO11l4EDB8pjBbquR+Wll54yJFTPnlJUVCR33GEuu2OUbDx6NDYtUNf15JNmXT2kG+p6rMCSWJ1fWKOiyNz90lMnsa/KyspkijmlrnB0KYWTc4/xGQmQAAmQAAmQAAmQAAmQAAmQAAnkBIGcFU5rS5+Wzkpy9JEXKirkl19+iSXtNpNHd/nnelmwYIF88r9aTk2MCSeJylumLOr7fwvV1DZc9U7ddPLpolJZtGiRrFq1Si5evOi5Q+omm9PqCkdJTU2NbVpdTHqNX7lS5s2bpxKGq2gmLbsenqxySv3www+GENLtRgbLW198odaZP3++lJU8J321QMofLG/Nnh0TTlpe9XhLlm3dqupDnqrly9+XcWakzwP/WiU///yzEW1ktTFUpi3fpsqDEfJLlTzXx5Q7fWXatm2JE7KDht4O9K3v87Lk229l5cqVsmjROzIwT0uniNz5XLUgx9Xy5culrOw56a22JU+G/nuZHDlyxIyC0knYUdc4qdy+XaqqqlT/yqx+9ZbJX3/tlE56+weWybJly9Tf/AFG24Vj5lA4eb5r+SIJkAAJkAAJkAAJkAAJkAAJkAAJZJdAzgqnzz//XBYMNMRC7zFzbVdt09FJPeSvC75U0ubT5zsrkYJoKHsOJysHU+EoWb9+vYpyAm4dZfRoyTeq/JYtW3winERu3qyWAUqg9Jax8+bJ0aNHjWglLXaK5gikEWQLIpnUTYua37+p+oc8ThBRut2C0cultLRUlixZInv37pVjx47JzpXPSnu085v+8tpHH1nCSa/z+Ad1KroHuaQgcdDWiW/+ZUQ69R6jEpRDmtnLQzQhaTlk0KlTp9SUwGl/NJk+O19d4c2ScF7vQ70dHf8sr374odqWzz77TK335ctdDXn1u78phhB32GcHDx6UL17qopbdPWq2bNiwwYr6UhFnHf8sr82cqbYF+bkOHTokJ09+I8/eGZNIsSv06X09VN7evFmtg4ix5UNjZZnDyWvH8TUSIAESIAESIAESIAESIAESIAESyC6BnBVOEERny4sNqZFXpHL3qKuR6YiXAfNV1A6kzdbXunsKp8bGKksWPVdWpqTLrVvVRj6gSLG8tHy5kkVWFI7PvqgYYgqOUZ9IbW2tygmlxY6eTvfNN9/EpJUWNQ7htEemqhxMPWTI9CVKOEE2NTQ0KIF1dfck6QLhlD9Y3vz4Y1M41ZvrRKTDffdJnz595KmnnpLhw4fLyJEjZaTOg9R+mJQsWCBHj26Ut3uhr91l2PvLZe7cuUoOYbogpqnhb8dbPRQrTD9ExJZfZJdCYduOjz76SCVOP3nypMq11Fg1wmA+sEQ+/PBDJfTOmFP76qcY+ZnaPTVRSbXz58/HoqV+/6bMmjXLqgsiDv1aajJGvyC1VL9Mqdf15S9VJBQEFURb1QgKJ5+3Kl8mARIgARIgARIgARIgARIgARIggZwgkNPC6eLFHfJqd8iF9jJgyjyVPFzLhj9O26YibiB6dCSTO8IJhC1ZNLpURfpcqxxuSKwnZ6v1IV2UEEmwO6x1CkcrSXP+fIUlrTCdDhFODmllEzWYamdEOO2REiWDusmAyXPVVD4IGusWnWokDXfkcKo31zEEi5XnSUVc2V7rMFImzZkj+/d/JMaV/opUNFZlZWUs6spsKFpiJusuHKO239EHqzO6sDkN7vdvqiim+nojwbpaasqgDsM/UPIMkUqNjY1qkc4hhf0BNiryy8YEUWiOukRkv9mvvKKJSi6dO7fYYvzGunWKF6KnIKiqKZzce4rPSYAESIAESIAESIAESIAESIAESCCnCOS0cLp8+bLsmqhzKI2WTeV/MxKBd39dPqisVBFOmOK2921DongJJ7sswnQ0LaAembJJRQDpiKVEewVRUYOU5OkjY+bOlSNzigxpZU6nQ14jh7SyyRW7cDKij7pI0aQ5Kn+RitjSDet1HFepqzcjlrrIU2/NlhkzZqhpZcjhpP+Qm+mTTz5RYmffvs9kYk+IqM6qDUQEuSOYtAzKL56mJBKm8zmuvKf7g3vdJ0ek1g2jhBZOI2YqcWVNNVSrGVfHc+yPRHXZpjliHURmWdFtnf9bRXY99NBDMmjQIBk6dKj0VNsYkby8Qunbt69M+OakSk7uTjZu3xQ+JgESIAESIAESIAESIAESIAESIAESyByBnBdOjXvfNqaaRXpLcbFxNbrOz3+qJMeaNWuUUNESxSE4TIYxWdRXxs4bK0UQR91flfeWLlXC6vjx4/7CxbYflpp5gzBN7B0zDxKm00GObNu2TU2Ns4r7yJWq4UZUEpJdQ1IlF07XxFpn1CdKEH311VeCqC73H8QZIokqh5ltjC6VeOGkcyJFpO+4ctX3EydO+G+/z3ao7dTCaeRHaRBOsX6BDZhuf92YJukb1WWL8ur01wUJrjRo7RU+IAESIAESIAESIAESIAESIAESIAESyBCBnBdO4FBRbJs+FnlUXqmuVpJjz549Kp9QIuGE9XeaUVJ5eXkqMunO/1ul1rdyBQWAfX2FORUvr1Duh+zoOl5mrlyprpJnj+5RVfmIGp33KJJXpITXuXPnjJajU+W3WqB0fFomlpZaScPt67xbUSHIoXTlyhWVLwq5mXYvnyTLd1+1ckFZ5SOF8vIHlWK1gcgjUxJBuCHnExJ9q+luoq+491uZGrXB8NkOVSJV4YTt7D1GVpv7DnVZ/er2ipoaiLxciBhDdBai0pBgHZFiSIKOv2d7G++H/3x6uvz73/9Wy6qrq50Cz7YZfEgCJEACJEACJEACJEACJEACJEACJJBZAi1COFnT4iAr+jwrM2fOlGXLlsmvv/6qEk4nE0439kwxo6QgKvJlxMyVSlLs3r1bTcUKgjwWKWXIjjv+Xq7qWLVqVbzo8BE1t25FZUI3Lc/yVALwEb3MnEq9hktR14hE2g+xJQ2/prZv4SC9TkS6di0yk4Yb09YQATSi+qYSbzoxeJmtfJcnnzTKq4TlqKenPFe9S0VLrVu3zrhyn07EHonIkIoLSmap6Wk+26F4pSqcOnaUdkqudZTBgweLtf2RiCAvF+QSrnaH6ZTI14QItAMHDqg8WMiFhb+Z/Q0ev/vbRyoaCleu+/nnnxWDIPuSZUiABEiABEiABEiABEiABEiABEiABJqXQIsQTpA9A5WkyJfHxr+nroq2ZcsW66pwyYSTSFReV8nHIxL5zePy2syZKgfSqVOnlNAJilhHSkUiv5GiiaUye/ZsKxLJUUcCUXP58k6Z9IdORg4otU3dpPiN7XLo0BcyskNEIu2ekNdnzXLUi4im8rcfkby8mHiKRHpIjx5DZPH27YI8TEiofe3aNdUNyJqFkx+Wdu2c5bsPfl0+WrNfXTmurKxMfvjhByV1JFojw1VfOsufZq1SUwQRPRUoh1MKU+pmTPirFLZrF2PQfbDM/GyfmuKISKb9+/db8giJyCGe7H+Vemri6FK1H5H4XCcsd+wHPiEBEiABEiABEiABEiABEiABEiABEsgKgRwSTqIE0nfffacih5CrCOJE3/D4iy++kI8++kglzoZksUsGTA3TU66MaWJ6TeN+uZnb6K5nPpQPPvhA1XXp0iVnoSTPID0QbYMcQ6gDU9L8ciChv19++aXqq766GqpHnxGNgyvIIZoHdSCfU0VFhYraQsQUtmPXrl2WQEJS79OnTwtyVuGqb0gYjnLI0YR1MQVt/fr1RrSS2Qb6helouCIc5BLaQ1QYHmN95J2y84Vg0uwx1VCz8dsObIue8oY63cnH4/aHTcLNmjVL9RnbiXXRL2wXuG7YsEFFjCVKAA4eaA/rY11HwvYk+5CLSYAESIAESIAESIAESIAESIAESIAEmp9ATgmn69evq0gdiCXkZ9IRO8CgRQ3EytatW1UeIzseiJGvv/5aCQstS2LLa2SEiuApUleZQ2SSPYomVi75IyT63rRpk0DKIFE3oo+8buh7XV2dQJwh75JdjmE7kfcJib8hhSCSIIAgUQ4dOqS24aeffjKij8zKIVmQjwl1gg/ah3DCtDjwwNQzext4jCmHO3bsUGXQDspv3rxZRTaBl13qQKahTQgfsNHsE20HJBUYgDsEk70+vT+wDI/t0VIQS99//71K9I3+o2+4h2SDPPK9ap7JAu2gPQg9RLr57QOv/cLXSIAESIAESIAESIAESIAESIAESIAEmp9ATgkniAQIDggK3NsFBlBAimAZRId7GSQFluHPLSz0lLvIk7NVVBEignT+p7CIUTcEB6RWQ0NDXD90fegflqM/6Lf7BiGE7UCUEP5QFq9BRmEd3Lu3Ec81H6wD+YV+oB67bNJt6fIog7JYB3336g/WwetYbmefaDuwDG2jv+724/aHLcJJT5vTHNEv9NHert4Gv3u0h3ZRB/rBGwmQAAmQAAmQAAmQAAmQAAmQAAmQQO4QyCnh1DxYojJVJczuKc8s/FoJJ0T5QJTwlkECLuGE5N9+4iuDvWJTJEACJEACJEACJEACJEACJEACJEACzUCgDQgnUREwyIGE3EXIFfTjjz/GReQ0A1tW6SKAiCRMB0SEE3JhUTi5APEpCZAACZAACZAACZAACZAACZAACbQSAm1COGH61ZEjR2TFihWyceNGKyF2K9mHLWYzEFWGXFVVVVUqcbp7Gl6L2RB2lARIgARIgARIgARIgARIgARIgARIICGBNiGcdC4jJKRmzp+E74dmXYj9AP7IJ4UcVbyRAAmQAAmQAAmQAAmQAAmQAAmQAAm0TgJtQji1zl3HrSIBEiABEiABEiABEiABEiABEiABEiCB3CRA4ZSb+4W9IgESIAESIAESIAESIAESIAESIAESIIEWS4DCqcXuOnacBEiABEiABEiABEiABEiABEiABEiABHKTAIVTbu4X9ooESIAESIAESIAESIAESIAESIAESIAEWiwBCqcWu+vYcRIgARIgARIgARIgARIgARIgARIgARLITQIUTrm5X9grEiABEiABEiABEiABEiABEiABEiABEmixBCicWuyuY8dJgARIgARIgARIgARIgARIgARIgARIIDcJUDjl5n5hr0iABEiABEiABEiABEiABEiABEiABEigxRKgcGqxu44dJwESIAESIAESIAESIAESIAESIAESIIHcJEDhlJv7hb0iARIgARIgARIgARIgARIgARIgARIggRZLgMKpxe46dpwESIAESIAESIAESIAESIAESIAESIAEcpMAhVNu7hf2igRIgARIgARIgARIgARIgARIgARIgARaLIFmE07Hjx+X2tpaWb9+vaxZs0Zmz56t/t544w15+eWX+UcGGX8PTJgwwXofVlVVqffm5s2b5ciRIy32A8yOkwAJkAAJkAAJkAAJkAAJkAAJkEAuEkircDp06JDgRL6kpETef/99WbZsmTqp37Bhg2AZ/q5evZqLHNinNkDgxo0b1vvwu+++U+/NVatWycyZMwUiFO/XPXv2CMrxRgIkQAIkQAIkQAIkQAIkQAIkQAIkkDqBJgsnCCSctOOEHVFMOJE/e/Zs6j3imiSQBQJ4HyMir6yszJJPfB9nYUewSRIgARIgARIgARIgARIgARIggVZBIGXhhCgQTJdDNBOmJTFyqVW8H7gRIirCCfLp3XffVTKV722+LUiABEiABEiABEiABEiABEiABEggHIGUhBOimCCaIJx4Mh4OOEu3HAKQqpCp+r3ecnrOnpIACZAACZAACZAACZAACZAACZBAdgmEEk44AV+8eLHK03Tx4sXs9pytk0CGCECqQq5iyigFa4agsxkSIAESIAESIAESIAESIAESIIEWTSCwcIJgwgn3rl274jZ4x5GLsmTbKXl15WEZUbpXimbW8c9kUPxxveKycMtJ2XTgXBy7VF84fuGQ7D6xSdYfXCxLd78ni3a8zb8mMqjYOU3x3Hl8g/x4dm/crkHSeyQY/+WXX+KW8QUSIAESIAESIAESIAESIAESIAESIIEYgUDC6fjx4+qqc+7Lx1++1ijTP/+ZcimEYHu58gc5erYhtgdCPrre2CCbf6ymXGqiXAoi6NZGy+R8wxnHHoJsgnSKRqOO1/mEBEiABEiABEiABEiABEiABEiABEggRiCpcIJkwgm2ewrduSs35O8L91M2hZBNOvILUU+HT1+N7YWAj67euCQr93xE2ZQB2aSFFKKezl455dhDmFaHq9lROjmw8AkJkAAJkAAJkAAJkAAJkAAJkAAJWAQSCidIpvfffz9ONmHtkjU/UTalIJu0dBq39KBcb7xl7YggD74+vIKyKYOySUun1fvnSuOtG45dhHxm+Gxwep0DC5+QAAmQAAmQAAmQAAmQAAmQAAmQgCLgK5xwQo2cTe5pdFjru0MXKJuaIJu0dFq163Tgt+HP56KUTVmQTVo67Tu1LW5fnT17VkknJhKPQ8MXSIAESIAESIAESIAESIAESIAE2jgBX+GEq9F5JQgHr7mbT1A4pUE4IUos6K322BcUTlkUTogu87ohkfjcuXMFgpY3EiABEiABEiABEiABEiABEiABEiABg4CncPruu++kqqrKlxESX+soHd6nfkW+p+ft82XsXoAE1jrahveZvyJfZd0M9y6xnm/YsEHWrFljPecDEiABEiABEiABEiABEiABEiABEmjrBOKEEyI1SkpKPPM2aVhIek3RlLposrPTTJPdI3k1RVPmRZOdud8+CvKZ8VuXr5MACZAACZAACZAACZAACZAACZBAayQQJ5wQqYGIjUQ3uzDh46aJp0Sc7cvs4oOPsyOe7PvD/RjTTzENlTcSIAESIAESIAESIAESIAESIAESIAERh3DCVekQ3ZQsHw0lU9Mkk51f0DchJVN2JJOde7J9havWHT9+PFkxLicBEiABEiABEiABEiABEiABEiCBVk/AIZxWrVolmzdvTrrRdmHCx02TT0lhmwXs4oOPsyOfku2rPXv2SFlZWbJiXE4CJEACJEACJEACJEACJEACJEACrZ6AJZwQ1fTGG28kjW4CEUqmpkkmO7+g7zBKpuxIJjv3IPsKEYJnz54NUpRlSIAESIAESIAESIAESIAESIAESKDVErCEUzQaVZd3D7KldmHCx02TT0F4o4xdfPBxduRTkH2FqzviKo+8kQAJkAAJkAAJkAAJkAAJkAAJkEBbJmAJp2XLlkltbW0gFpRMTZNMdn6BgFM45YRwC7KvDh06JLNnzw5SlGVIgARIgARIgARIgARIgARIgARIoNUSsITTpEmTBEnDg9zswoSPmyafgvBGGUY1ZSeqyc49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4NQCxt0ECBAgQIAAAQIECBAgQIBA+wICp/atpsKWAqep0MqOkQABAgQIECBAgAABAgQI9FhA4NRj4MR2L3BKrMFUlwABAgQIECBAgAABAgQIFFFA4FTEVhlcnQROg7NXMgECBAgQIECAAAECBAgQKI2AwKk0TdmVAxE4dYXRTggQIECAAAECBAgQIECAwNQWEDhN7fYfffQCp9EifidAgAABAgQIECBAgAABAgQ6FhA4dUxW6icInErdvA6OAAECBAgQIECAAAECBAj0RmDTpk3hnHPOqX3HwKn+940bN/amYHtNQkDglEQzqSQBAgQIECBAgAABAgQIECiWwI4dO8J+++0XYtA0+vttb3tb2LJlS7EqrDZ9FRA49ZVbYQQIECBAgAABAgQIECBAoDwCCxYsGBM2xfDp1FNPLc9BOpJ9EhA47RObJxEgQIAAAQIECBAgQIAAAQLNRjkZ3aRfRAGBk35AgAABAgQIECBAgAABAgQI7LPA6FFORjftM2WpnihwKlVzOhgCBAgQIECAAAECBAgQINBfgfpRTkY39de+yKUJnIrcOupGgAABAgQIECBAgAABAgRaCLz11lthz549LR4N2WNxm4m+9u7dm20bf+7rVz7KyeimfRUs3/METuVrU0dEgAABAgQIECBAgAABAiUWGL7ofbWFuo9d/Fx49dVXQ32wVHv82CvDiy++GHbv3t1CYzgsmBWvMDczfPO2zeGVV14Jb721NsxvctW5kavQHR+ue/nlsGvXrlAfUMVRTvvvv78r07WQnop3C5ymYqs7ZgIECBAgQIAAAQIECBBIVGA4XJiFRDEoGgpDR54Zbr311vDaa6/VjuetJxaE92ah0QfD11euzEKn+kCqtuHwReGwuN1Bp4UfXX99ePTRR8OuXavDyXngNH16mD7m+4TwzTVrwjPPPDMmyHr66adru3aDgMBJHyBAgAABAgQIECBAgAABAqkI5CHRJz8Z3p8FQ/8nfHnZsvDCCy/UjXIaDt87tBJIHX765eGBBx7IRiSNPsThBbOy0OrtJ14SrrrqqrB58+awZ8+acFK234+FUxctCqtXrw533HFHuOuuu2rf9913X9i6deu40/lGl+X3qScgcJp6be6ICRAgQIAAAQIECBAgQCBRgXy63Ie/uSacPrsSKs0+Y3G4//77w86dO2tH9fB5h1VGQB1+WvjF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dwIECBAgQIAAAQIECBAorYDASeCUcucWOKXceupOgAABAgQIECBAgAABAqUVEDgJnFLu3AKnlFtP3QkQIECAAAECBAgQIECgtAICJ4FTyp1b4JRy66k7AQIECBAgQIAAAQIECJRWQOAkcEq5cwucUm49dSdAgAABAgQIECBAgACB0goInAROKXdugVPKrafuBAgQIECAAAECBAgQIFBaAYGTwCnlzi1wSrn11J0AAQIECBAgQIAAAQIESisgcBI4pdy5BU4pt566EyBAgAABAgQIECBAgEBpBQROAqeUO7fAKeXWU3cCBAgQIECAAAECBAgQKK2AwEnglHLnFjil3HrqToAAAQIECBAgQIAAAQKlFRA4CZxS7twCp5RbT90JECBAgAABAgQIECBAoLQCAieBU8qdW+CUcuupOwECBAgQIECAAAECBAiUVkDgJHBKuXMLnFJuPXUnQIAAAQIECBAgQIAAgdIKCJwETil3boFTyq2n7gQIECBAgAABAgQIECBQWgGBk8Ap5c4tcEq59dSdAAECBAgQIECAAAECBEorIHASOKXcuQVOKbeeuhMgQIAAAQIECBAgQIBAaQUETgKnlDu3wCnl1lN3AgQIECBAgAABAgQIECitgMBJ4JRy5xY4pdx66k6AAAECBAgQIECAAAECpRUQOAmcUu7cAqeUW0/dCRAgQIAAAQIECBAgQKC0AgIngVPKnVvglHLrqTsBAgQIECBAgAABAgQIlFZA4CRwSrlzC5xSbj11J0CAAAECBAgQIECAAIHSCgicBE4pd26BU8qtp+4ECBAgQIAAAQIECBAgUFoBgZPAKeXOLXBKufXUnQABAgQIECBAgAABAgRKKyBwEjil3LkFTim3nroTIECAAAECBAgQIECAQGkFBE4Cp5Q7t8Ap5dZTdwIECBAgQIAAAQIECBAorYDASeCUcucWOKXceupOgAABAgQIECBAgAABAqUVEDgJnFLu3AKnlFtP3QkQIECAAAECBAgQIECgtAICJ4FTyp1b4JRy66k7AQIECBAgQIAAAQIECJRWQOAkcEq5cwucUm49dSdAgAABAgQIECBAgACB0goInAROKXdugVPKrafuBAgQIECAAAECBAgQIFBaAYGTwCnlzi1wSrn11J0AAQIECBAgQIAAAQIESisgcBI4pdy5BU4pt566EyBAgAABAgQIECBAgEBpBQROAqeUO7fAKeXWU3cCBAgQIECAAAECBAgQKK2AwEnglHLnFjil3HrqToAAAQIECBAgQIAAAQKlFRA4CZxS7twCp5RbT90JECBAgAABAgQIECBAoLQCAieBU8qdW+CUcuupOwECBAgQIECAAAECBAiUVkDgJHBKuXMLnFJuPXUnQIAAAQIECBAgQIAAgdIKCJwETil3boFTyq2n7gQIECBAgAABAgQIECBQWgGBk8Ap5c4tcEq59dSdAAECBAgQIECAAAECBEorIHASOKXcuQVOKbeeuhMgQIAAAQIECBAgQIBAaQUETgKnlDu3wCnl1lN3AgQIECBAgAABAgQIECitgMBJ4JRy5xY4pdx66k6AAAECBAgQIECAAAECpRUQOAmcUu7cAqeUW0/dCRAgQIAAAQIECBAgQKC0AgIngVPKnVvglHLrqTsBAgQIECBAgAABAgQIlFZA4CRwSrlzC5xSbj11J0CAAAECBAgQIECAAIHSCgicBE4pd26BU8qtp+4ECBAgQIAAAQIECBAgUFoBgZPAKeXOLXBKufXUnQABAgQIECBAgAABAgRKKyBwEjil3LkFTim3nroTIECAAAECBAgQIECAQGkFBE4Cp5Q7t8Ap5dZTdwIECBAgQIAAAQIECBAorYDASeCUcucWOKXceupOgAABAgQIECBAgAABAqUVEDgJnFLu3AKnlFtP3QkQIECAAAECBAgQIECgtAICJ4FTyp1b4JRy66k7AQIECBAgQIAAAQIECJRWQOAkcEq5cwucUm49dSdAgAABAgQIECBAgACB0goInAROKXdugVPKrafuBAgQIECAAAECBAgQIFBaAYGTwCnlzi1wSrn11J0AAQIECBAgQIAAAQIESisgcBI4pdy5BU4pt566EyBAgAABAgQIECBAgEBpBQROAqeUO7fAKeXWU3cCBAgQIECAAAECBAgQKK2AwEnglHLnFjil3HrqToAAAQIECBAgQIAAAQKlFRA4CZxS7twCp5RbT90JECBAgAABAgQIECBAoLQCAieBU8qdW+CUcuupOwECBAgQIECAAAECBAiUVkDgJHBKuXMLnFJuPXUnQIAAAQIECBAgQIAAgdIKCJwETil3boFTyq2n7gQIECBAgAABAgQIECBQWgGBk8Ap5c4tcEq59dSdAAECBAgQIECAAAECBEorIHASOKXcuQVOKbeeuhMgQIAAAQIECBAgQIBAaQUETgKnlDu3wCnl1lN3AgQIECBAgAABAgQIECitgMBJ4JRy5xY4pdx66k6AAAECBAgQIECAAAECpRUQOAmcUu7c/x8cdD4BK6HLXAAAAABJRU5ErkJggg==)
// VideoProcessing.cpp
//
#pragma once
using namespace std;
#include <iostream>
extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavdevice/avdevice.h>
#include <libavformat/avformat.h>
#include <libavfilter/avfilter.h>
#include <libavutil/avutil.h>
#include <libswscale/swscale.h>
#pragma comment(lib, "avcodec.lib")
#pragma comment(lib, "avdevice.lib")
#pragma comment(lib, "avformat.lib")
#pragma comment(lib, "avfilter.lib")
#pragma comment(lib, "avutil.lib")
#pragma comment(lib, "swscale.lib")
}
void SaveToJPEG(AVFrame* pFrame, const char * folderName, int index)
{
// Setup Output Path
char outFile[256] = { 0 };
sprintf_s(outFile, sizeof(outFile)/sizeof(outFile[0]), "%s\OutputImages-%d.jpg", folderName, index);
AVFormatContext* pFormatCtx = avformat_alloc_context();
// Setup the output format
pFormatCtx->oformat = av_guess_format("mjpeg", NULL, NULL);
// Initializext
if (avio_open(&pFormatCtx->pb, outFile, AVIO_FLAG_READ_WRITE) < 0) {
printf("Couldn't open output file.");
return;
}
// Get a new Stream from the indicated format context
AVStream* pAVStream = avformat_new_stream(pFormatCtx, 0);
if (pAVStream == NULL) {
return;
}
// Find encoder from the codec identifier.
AVCodec* pCodec = avcodec_find_encoder(pFormatCtx->oformat->video_codec);
if (!pCodec) {
printf("Codec not found.");
return;
}
// Setup the codec context
AVCodecContext* codecCtx = avcodec_alloc_context3(pCodec);
codecCtx->codec_id = pFormatCtx->oformat->video_codec;
codecCtx->codec_type = AVMEDIA_TYPE_VIDEO;
codecCtx->pix_fmt = AV_PIX_FMT_YUVJ420P;
codecCtx->width = pFrame->width;
codecCtx->height = pFrame->height;
codecCtx->time_base = AVRational{ 1,25 };
// Open the codec
if (avcodec_open2(codecCtx, pCodec, NULL) < 0) {
printf("Could not open codec.");
return;
}
// assign the codec context to the stream parameters.
avcodec_parameters_from_context(pAVStream->codecpar, codecCtx);
//Write Header
avformat_write_header(pFormatCtx, NULL);
int y_size = (codecCtx->width) * (codecCtx->height);
// assign large enough space
AVPacket pkt;
av_new_packet(&pkt, y_size);
int got_picture = 0;
// Use avcodec_send_frame()/avcodec_receive_packet() instead
int ret = avcodec_send_frame(codecCtx, pFrame);
if (ret < 0) {
printf("Encode Error.n");
return;
}
else
{
ret = avcodec_receive_packet(codecCtx, &pkt);
ret = av_write_frame(pFormatCtx, &pkt);
}
av_packet_unref(&pkt);
//Write Trailer
av_write_trailer(pFormatCtx);
printf("Encode Successful.n");
avcodec_close(codecCtx);
avio_close(pFormatCtx->pb);
avformat_free_context(pFormatCtx);
avcodec_free_context(&codecCtx);
}
int main(int argc, char * argv[])
{
if (argc < 2) {
cout << "You need to specify a media file." << endl;
cout << "Command line : VideoProcessing.exe [input_video_path] [output_folder]" << endl;
return -1;
}
AVFormatContext* pFormatContext = avformat_alloc_context();
if (!pFormatContext) {
cout << "ERROR could not allocate memory for Format Context" << endl;
return -1;
}
if (avformat_open_input(&pFormatContext, argv[1], NULL, NULL) != 0) {
cout << "ERROR could not open the file" << endl;
return -1;
}
if (avformat_find_stream_info(pFormatContext, NULL) < 0) {
cout << "ERROR could not get the stream info" << endl;
return -1;
}
// Initialize the codec, paramters for subsequent useage.
AVCodec* pCodec = NULL;
AVCodecParameters* pCodecParameters = NULL;
int videoStreamIndex = -1;
for (int i = 0; i < pFormatContext->nb_streams; i++)
{
AVCodecParameters* pLocalCodecParameters = NULL;
// Read the codec parameters corresponding to each stream.
pLocalCodecParameters = pFormatContext->streams[i]->codecpar;
AVCodec* pLocalCodec = NULL;
pLocalCodec = avcodec_find_decoder(pLocalCodecParameters->codec_id);
if (pLocalCodec == NULL)
{
cout << "[ERROR] Cannot find the codec" << endl;
}
if (pLocalCodecParameters->codec_type == AVMEDIA_TYPE_VIDEO)
{
if (videoStreamIndex == -1)
{
videoStreamIndex = i;
pCodec = pLocalCodec;
pCodecParameters = pLocalCodecParameters;
}
}
}
AVCodecContext* pCodecContext = avcodec_alloc_context3(pCodec);
if (pCodecContext == NULL)
{
cout << "Fail to allocate the memoery to the Codec Context." << endl;
return -1;
}
if (avcodec_parameters_to_context(pCodecContext, pCodecParameters) < 0)
{
cout << "failed to copy codec params to codec context" << endl;
return -1;
}
if (avcodec_open2(pCodecContext, pCodec, NULL) < 0)
{
cout << "failed to open codec through avcodec_open2" << endl;
return -1;
}
AVFrame* pFrame = av_frame_alloc();
if (!pFrame)
{
cout << "failed to allocated memory for AVFrame" << endl;
return -1;
}
AVPacket* pPacket = av_packet_alloc();
if (!pPacket)
{
cout << "failed to allocated memory for AVPacket" << endl;
return -1;
}
int indexOfFrame = 0;
while (av_read_frame(pFormatContext, pPacket) >= 0)
{
// if it's the video stream
if (pPacket->stream_index == videoStreamIndex) {
int response = avcodec_send_packet(pCodecContext, pPacket);
if (response < 0)
{
break;
}
else
{
response = avcodec_receive_frame(pCodecContext, pFrame);
if (response >= 0)
{
indexOfFrame++;
SaveToJPEG(pFrame, argv[2], indexOfFrame);
}
}
}
av_packet_unref(pPacket);
// Limit the number of output frame to be 5.
if (indexOfFrame == 5)
{
break;
}
}
// https://ffmpeg.org/doxygen/trunk/group__lavc__packet.html#ga63d5a489b419bd5d45cfd09091cbcbc2
avformat_close_input(&pFormatContext);
av_frame_free(&pFrame);
avcodec_free_context(&pCodecContext);
}
Reference:
- FFMPEG libav decode note
- FFMPEG libav tutorial
- 用AVCodecParameters代替AVCodecContext
- 用FFmpeg保存JPEG图片