{"id":254386,"date":"2015-04-02T17:01:02","date_gmt":"2015-04-02T13:01:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=254386"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=254386","title":{"rendered":"\u0413\u043e\u0432\u043e\u0440\u044f\u0449\u0430\u044f \u043f\u0430\u043d\u0434\u0430 \u0438\u043b\u0438 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 FFmpeg \u0438 OpenCV \u043d\u0430 Android"},"content":{"rendered":"<p> \t\t\t\u042d\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0432 Windows \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0438\u0434\u0435\u043e \u0438 \u0430\u0443\u0434\u0438\u043e FFmpeg \u043f\u043e\u0434 Android \u0432 Eclipse \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e NDK. \u0412\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0441\u0432\u044f\u0437\u0430\u0442\u044c FFmpeg \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 OpenCV \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0451 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 Java-\u043a\u043e\u0434\u0435 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412\u0441\u0451 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0437\u0430\u0432\u044f\u0437\u0430\u043d \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u044d\u0442\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438. \u0418\u0442\u0430\u043a, \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/h2>\n<p>  \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u0435\u0449\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043f\u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u0438\u043c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c\u0438, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0434\u043b\u044f \u043c\u0435\u043d\u044f, \u043a\u0430\u043a \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u043e\u0434 Windows, \u044d\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u043c\u0438 \u0438 \u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Android NDK \u0438 \u0432\u0441\u0435\u043c, \u0447\u0442\u043e \u0441 \u043d\u0438\u043c \u0441\u0432\u044f\u0437\u0430\u043d\u043e. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043e\u043d\u0438 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u00ab\u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435\u00bb. <\/p>\n<h2>\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/h2>\n<p>  \u0418\u0434\u0435\u044f Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0433\u0434\u0435 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c FFmpeg \u0438 OpenCV, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0433\u043e \u0440\u043e\u043b\u0438\u043a\u0430 \u043f\u0440\u043e \u043c\u0438\u043d\u0435\u0440\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u043e\u0434\u0443 \u0412\u0438\u0442\u0443\u0442\u0430\u0441 (\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0430 Youtube). \u0412 \u044d\u0442\u043e\u043c \u0440\u043e\u043b\u0438\u043a\u0435 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u0435\u043b\u044c\u043a\u0430\u043b\u0438 \u0444\u043e\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0440\u0430\u0449\u0430\u043b\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0433\u043b\u0430\u0437\u0430\u043c\u0438, \u0448\u0435\u0432\u0435\u043b\u0438\u043b\u0438 \u0433\u0443\u0431\u0430\u043c\u0438 \u0438 \u0443\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u043b\u0438 \u0437\u0440\u0438\u0442\u0435\u043b\u044f \u043a\u0443\u043f\u0438\u0442\u044c \u044d\u0442\u0443 \u0432\u043e\u0434\u0443. \u0412\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043c\u044b\u0441\u043b\u044c: \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0440\u043e\u043b\u0438\u043a\u0438, \u043f\u0440\u0438\u0447\u0435\u043c \u043d\u0435 \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0432\u043e\u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430? <\/p>\n<p>  \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0441\u043f\u0435\u0440\u0432\u0430 \u043f\u043e\u0438\u0441\u043a\u0430\u043b\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438. \u0427\u0442\u043e-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0432 AppStore \u0434\u043b\u044f iPhone, \u043f\u0440\u0438\u0447\u0435\u043c \u0442\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u043e\u043b\u0438\u043a\u0430 \u0431\u044b\u043b \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u0430\u0447\u043d\u044b\u043c: \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0448\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u0448\u044c \u043d\u0430 \u043d\u0435\u0439 \u043e\u0434\u043d\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u0438 \u043f\u043e\u0442\u043e\u043c \u043a\u0430\u043c\u0435\u0440\u043e\u0439 \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0447\u0442\u043e-\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u0442\u043e \u0435\u0441\u0442\u044c \u0440\u0435\u0447\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u0432\u0430 \u0433\u043b\u0430\u0437\u0430 \u0438 \u0440\u043e\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0448\u043b\u0430. \u0412 Google Play \u0436\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u0431\u044b\u043b\u0438 \u0442\u0430\u043a\u0438\u0435, \u0433\u0434\u0435 \u043d\u0430 \u0444\u043e\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u043e\u0432. <\/p>\n<p>  \u041e\u0434\u043d\u0438\u043c \u0441\u043b\u043e\u0432\u043e\u043c, \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432 \u043c\u0430\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u0441\u0451 \u0436\u0435 \u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<h2>\u0412\u044b\u0431\u043e\u0440 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439<\/h2>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0432\u043e\u0437\u043d\u0438\u043a \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u0410 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c?\u00bb. \u041f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u0434\u043d\u044f \u0434\u0432\u0430 \u043d\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u044f\u043a\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0438\u0434\u0435\u043e \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 FFmpeg \u0438 OpenCV. <\/p>\n<p>  \u0418\u0437 \u043f\u043b\u044e\u0441\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:   <\/p>\n<ul>\n<li>\u043e\u0431\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 C\/C++, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0438\u0445 \u0443\u0436\u0435 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0436\u043d\u043e;<\/li>\n<li>\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c: FFmpeg \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434 LGPL, \u0430 OpenCV \u0432\u043e\u043e\u0431\u0449\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 BSD;<\/li>\n<li>\u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0435, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043a\u0440\u0443\u0442\u044b\u0435 \u0441 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043d\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438.<\/li>\n<\/ul>\n<p>  \u0418\u0437 \u043c\u0438\u043d\u0443\u0441\u043e\u0432:  <\/p>\n<ul>\n<li>\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 C\/C++;<\/li>\n<li>\u0432\u0441\u0435 \u0436\u0435 FFmpeg \u0441\u043b\u043e\u0436\u043d\u043e\u0432\u0430\u0442\u044b\u0439 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432 \u0435\u0433\u043e \u043a\u043e\u0434\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u043d\u044f\u0442\u044c, \u0433\u0434\u0435 \u043d\u0430\u0434\u043e \u0447\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c.<\/li>\n<\/ul>\n<p>  \u0421\u0445\u0435\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0442\u0430\u043a\u0430\u044f: OpenCV \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043e \u0440\u044f\u0434\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0433\u043b\u0430\u0437\u0430 \u0438 \u0440\u043e\u0442), \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043a\u0430\u0434\u0440 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432 FFmpeg, \u0430 \u0442\u043e\u0442 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u043e\u0442\u043e\u043a, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u044f \u043f\u0440\u043e \u0430\u0443\u0434\u0438\u043e.<\/p>\n<p>  \u041d\u0430\u0434\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043f\u044b\u0442\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u0434 Android \u0431\u044b\u043b\u043e \u043c\u0430\u043b\u043e, \u0430 \u043f\u043e\u0434 Windows \u043c\u043d\u043e\u0433\u043e, \u0442\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f \u0432 Eclipse \u0438 NDK \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0443 \u0432 Visual Studio, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043a\u0430\u0437\u0430\u043b\u0430, \u0447\u0442\u043e \u0441\u0430\u043c\u0430 \u0438\u0434\u0435\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c FFmpeg \u0438 OpenCV \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0438, \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435. \u041d\u043e \u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u044d\u0442\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435, \u0430 \u044d\u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u043b\u0435\u0433\u043a\u0430\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f \u043d\u0430 \u0442\u0435\u043c\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435 \u0436\u0435 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0438\u0434\u0435\u044e \u043d\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0448\u044c\u0441\u044f \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e, \u0447\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u0441 \u0433\u043e\u043b\u043e\u0432\u043e\u0439 \u043b\u0435\u0437\u0442\u044c \u0432\u043e \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435.<\/p>\n<p>  \u041d\u0430\u0441\u0447\u0435\u0442 \u0436\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 FFmpeg \u0432 Visual Studio \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u0435\u0433\u043a\u043e, \u043d\u043e \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u0441\u0435 \u0436\u0435 \u043e\u0431 Android, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0442\u0435\u043c\u0430 FFmpeg \u0432 Visual Studio \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430, \u0442\u043e \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0438 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0432\u0440\u0435\u043c\u044f \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0432, \u0447\u0442\u043e \u0438\u0434\u0435\u044f \u043e\u0431\u044a\u0435\u0434\u0435\u043d\u0438\u0442\u044c FFmpeg \u0438 OpenCV \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u044f \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. <\/p>\n<p>  \u041f\u043b\u0430\u043d \u0431\u044b\u043b \u0442\u0430\u043a\u043e\u0432:  <\/p>\n<ol>\n<li>\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c FFmpeg \u0438 OpenCV \u043f\u043e\u0434 Android.<\/li>\n<li>\u041f\u0438\u0448\u0435\u043c \u043a\u043e\u0434 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u044d\u0442\u043e \u0432\u0441\u0435 \u0432 Java \u043a\u043e\u0434\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<\/ol>\n<p>  \u0414\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0441\u0435 \u0440\u0435\u0448\u0438\u043b \u0432 Eclipse, \u0430 \u043d\u0435 \u0432 Android Studio \u2014 \u043a\u0430\u043a-\u0442\u043e \u043e\u043d\u0430 \u043c\u043d\u0435 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0441\u044b\u0440\u043e\u0432\u0430\u0442\u043e\u0439 \u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e\u0439.<\/p>\n<h2>FFmpeg, Android, NDK, Eclipse, Windows<\/h2>\n<p>  \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c, \u043a\u0430\u043a \u0432\u0441\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u044e\u0434\u0438, \u044f \u0441\u0442\u0430\u043b \u0438\u0441\u043a\u0430\u0442\u044c \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e FFmpeg \u0434\u043b\u044f Android \u0432 Windows. \u0421\u0442\u0430\u0442\u044c\u0438 \u0435\u0441\u0442\u044c, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0434\u0430\u0436\u0435 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043d\u0430\u0431\u043e\u0440\u044b make-\u0444\u0430\u0439\u043b\u043e\u0432, \u0435\u0441\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435, \u043d\u043e \u043f\u043e \u043d\u0438\u043c \u043c\u043d\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0432\u0438\u044f \u043e\u043f\u044b\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u044d\u0442\u0438\u043c \u0432\u0441\u0435\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u044d\u0442\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u0445 \u0438 make-\u0444\u0430\u0439\u043b\u0430\u0445. \u041e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u0438\u0448\u0435\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445 \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u00ab\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435\u00bb \u043d\u044e\u0430\u043d\u0441\u044b, \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u043e\u0432\u0438\u0447\u043a\u0443 \u044d\u0442\u0438\u043c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441 \u043d\u0443\u043b\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0430\u043c\u043e\u043c\u0443. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.<\/p>\n<h3>0. \u041f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438<\/h3>\n<p>  \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c: Eclipse \u0441 CDT, Android SDK, NDK, cygwin \u0438 OpenCV Android SDK. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c Android \u043d\u0430 x86, \u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0435\u0449\u0435 \u0438 yasm \u2014 \u043e\u043d \u043d\u0443\u0436\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e *.asm \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435. <\/p>\n<p>  \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0430\u0445, \u043e\u0442\u043a\u0443\u0434\u0430 \u043e\u043d\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0430 \u043d\u0430\u0441\u0447\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 NDK \u0432 Eclipse \u0435\u0441\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 opencv.org, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u0443\u0433\u043b\u0435 \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u00abOpenCV Introduction into Android Development\u00bb, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u043d\u0435\u0435.<\/p>\n<h3>1. \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442<\/h3>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0432 Eclipse \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043a\u043e\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0432 C\/C++ \u043f\u0440\u043e\u0435\u043a\u0442 (\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u044e \u00abOpenCV Introduction into Android Development\u00bb). \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 Android \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432 C\/C++, \u0430 \u0432 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 C\/C++. <\/p>\n<p>  \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432 \u0441 \u043a\u043e\u0434\u043e\u043c FFmpeg \u0441 \u0441\u0430\u0439\u0442\u0430 ffmpeg.org. \u041f\u0430\u043f\u043a\u0443 \u0441 \u043a\u043e\u0434\u043e\u043c \u0432\u0438\u0434\u0430 \u00abffmpeg-2.6.1\u00bb \u043a\u0438\u0434\u0430\u0435\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 \u00abjni\u00bb \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0435\u0441\u043b\u0438 \u0435\u0435 \u043d\u0435\u0442 \u2014 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u0430\u043c \u0436\u0435 \u0433\u0434\u0435 \u043b\u0435\u0436\u0430\u0442 \u00abres\u00bb, \u00abscr\u00bb \u0438 \u0442.\u00a0\u043f.).<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b (\u0441\u0430\u043c\u044b\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u00abconfig.h\u00bb) \u0438 make-\u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f FFmpeg. \u0417\u0434\u0435\u0441\u044c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u043d\u044e\u0430\u043d\u0441: \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0435\u0442 \u0442\u0440\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Android \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u2014 Arm, x86, MIPS. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440 \u043d\u0443\u0436\u043d\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a *.so (\u0430\u043d\u0430\u043b\u043e\u0433 *.dll \u0432 Windows). NDK \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u0432 \u043d\u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. <\/p>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 FFmpeg \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u043c \u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c cygwin. \u0418\u0442\u0430\u043a, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 Cygwin Terminal \u0438 \u0432\u0432\u043e\u0434\u0438\u043c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435 \u043d\u0430\u0431\u043e\u0440\u044b \u043a\u043e\u043c\u0430\u043d\u0434. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Bash-\u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0441 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u043c\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\u0414\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 ARM:  <\/p>\n<pre><code class=\"bash\">$ cd D: $ cd MyProject\/jni\/ffmpeg-2.1.3\/ $ PREBUILT=D:\/ndk\/android-ndk-r9c\/toolchains\/arm-linux-androideabi-4.6\/prebuilt\/windows-x86_64 $ PLATFORM=D:\/ndk\/android-ndk-r9c\/platforms\/android-8\/arch-arm $ TMPDIR=D:\/ $ .\/configure --enable-version3 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver  --disable-network --enable-cross-compile --target-os=linux --arch=arm --cross-prefix=$PREBUILT\/bin\/arm-linux-androideabi- --cc=$PREBUILT\/bin\/arm-linux-androideabi-gcc --ld=$PREBUILT\/bin\/arm-linux-androideabi-ld --tempprefix=D:\/ <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 x86:  <\/p>\n<pre><code class=\"bash\">$ cd D: $ cd MyProject\/jni\/ffmpeg-2.1.3\/ $ PREBUILT=D:\/ndk\/android-ndk-r9c\/toolchains\/x86-4.6\/prebuilt\/windows-x86_64 $ PLATFORM=D:\/ndk\/android-ndk-r9c\/platforms\/android-9\/arch-x86 $ TMPDIR=D:\/ $ .\/configure --enable-version3 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver  --disable-network --enable-cross-compile --target-os=linux --arch=x86 --cross-prefix=$PREBUILT\/bin\/i686-linux-android- --cc=$PREBUILT\/bin\/i686-linux-android-gcc --ld=$PREBUILT\/bin\/i686-linux-android-ld --tempprefix=D:\/ <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 MIPS:  <\/p>\n<pre><code class=\"bash\">$ cd D: $ cd MyProject\/jni\/ffmpeg-2.1.3\/ $ PREBUILT=D:\/ndk\/android-ndk-r9c\/toolchains\/mipsel-linux-android-4.6\/prebuilt\/windows-x86_64 $ PLATFORM=D:\/ndk\/android-ndk-r9c\/platforms\/android-9\/arch-mips $ TMPDIR=D:\/ $ .\/configure --enable-version3 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver  --disable-network --enable-cross-compile --target-os=linux --arch=mips --cross-prefix=$PREBUILT\/bin\/mipsel-linux-android- --cc=$PREBUILT\/bin\/mipsel-linux-android-gcc --ld=$PREBUILT\/bin\/mipsel-linux-android-ld --tempprefix=D:\/ <\/code><\/pre>\n<p>  \u041f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f:  <\/p>\n<ol>\n<li>\u041f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u2014 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u043a\u043e\u0434\u043e\u043c FFmpeg, \u0433\u0434\u0435 \u043b\u0435\u0436\u0438\u0442 \u0444\u0430\u0439\u043b \u00abconfigure\u00bb \u2014 \u044d\u0442\u043e bash \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0444\u0430\u0439\u043b\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u00abconfig.h\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438;<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u0440\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f PREBUILT, PLATFORM, TMPDIR, \u0432 \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0443\u0442\u0438 \u043a \u043f\u0430\u043f\u043a\u0430\u043c \u0432 NDK, \u0433\u0434\u0435 \u043b\u0435\u0436\u0430\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0434\u043b\u044f \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0435\u0441\u043b\u0438 \u0432 \u044d\u0442\u0438 \u043f\u0430\u043f\u043a\u0438 \u0437\u0430\u0439\u0442\u0438, \u0442\u043e \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u0440\u0435\u0434\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043f\u0430\u043f\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u0438 \u043f\u0430\u043f\u043a\u0430 \u00abbin\u00bb, \u0432 \u043e\u043a\u0442\u043e\u0440\u043e\u0439 \u0438 \u043b\u0435\u0436\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a. TMPDIR \u2014 \u043f\u0443\u0442\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443, \u0433\u0434\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b;<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u044d\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u00abconfigure\u00bb \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 \u00abffmpeg-2.6.1\u00bb \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u00ab.\/configure -h\u00bb. \u041d\u0438\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c:<br \/> \n<ul>\n<li>\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 &#8212;enable-version3 \u2013 \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u0447\u0442\u043e\u0431\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 FFmpeg \u043a\u043e\u0442\u043e\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 LGPL 3.0;<\/li>\n<li> \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b &#8212;enable-shared \u0438 &#8212;disable-static \u2013 \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0443, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c *.so \u0444\u0430\u0439\u043b\u044b. \u0421\u0434\u0435\u043b\u0430\u0432 \u044d\u0442\u043e, \u0442\u043e \u043f\u043e \u0438\u0434\u0435\u0435 \u0432 \u043a\u0443\u043f\u0435 \u0441 LGPL \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0438\u0445 \u043b\u0438\u043d\u043a\u043e\u0432\u0430\u0442\u044c \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u043a\u043e\u0434\u0443 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 LGPL \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f;<\/li>\n<li>\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b &#8212;disable-ffmpeg &#8212;disable-ffplay &#8212;disable-ffprobe &#8212;disable-ffserver &#8212;disable-network \u2013 \u044d\u0442\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0443, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 ffmpeg.exe, ffplay.exe \u0438 \u0434\u0440\u0443\u0433\u0438\u0435);<\/li>\n<li>\u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u043d\u044f\u0442\u043d\u044b \u043f\u043e \u0441\u0432\u043e\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c \u2014 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e, \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 (linux arm, mips \u0438\u043b\u0438 x86), \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0443 \u043f\u0443\u0442\u0438 \u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0443, \u0437\u0430\u0434\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u043a \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p>  \u0421\u043a\u0440\u0438\u043f\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0432 \u043f\u0430\u043f\u043a\u0435 \u00abjni\/ffmpeg-2.1.3\u00bb \u0444\u0430\u0439\u043b \u00abconfig.h\u00bb, \u00abconfig.asm\u00bb \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e make-\u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<h3>2. Make-\u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0438 \u0441\u0431\u043e\u0440\u043a\u0430<\/h3>\n<p>  \u0418\u0442\u0430\u043a, \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c: \u043f\u0440\u043e\u0435\u043a\u0442 Android-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 Eclipse, \u0432 \u043f\u0430\u043f\u043a\u0435 \u00abjni\/ffmpeg-2.1.3\u00bb \u043b\u0435\u0436\u0438\u0442 \u043a\u043e\u0434 \u0441 FFmpeg, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043c\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u0444\u0430\u0439\u043b \u00abconfig.h\u00bb. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c make-\u0444\u0430\u0439\u043b\u044b, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c *.so \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438. <\/p>\n<p>  \u042f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 make-\u0444\u0430\u0439\u043b\u044b, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u0440\u0443\u043a. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 make-\u0444\u0430\u0439\u043b\u044b \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438 \u0438 \u0438\u043d\u043a\u043b\u044e\u0434\u0430\u043c\u0438.<\/p>\n<p>  \u0414\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e NDK \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u0432\u0430 make-\u0444\u0430\u0439\u043b\u0430: Android.mk \u0438 Application.mk, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 \u00abjni\u00bb \u043f\u0440\u043e\u0435\u043a\u0442\u0430. Application.mk \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f, \u00ab\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435\u00bb \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. Android.mk \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435. <\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0440\u044f\u0434 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041e\u043d\u0438 \u0440\u0435\u0448\u0430\u043b\u0438\u0441\u044c \u043b\u0438\u0431\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Google, \u043b\u0438\u0431\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0432\u044b\u0434\u0430\u043d\u043d\u043e\u0439 NDK \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 (\u043e\u0448\u0438\u0431\u043a\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0445 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0440\u0443\u0434\u0430). \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432\u0441\u0435 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u044f \u043d\u0435 \u043c\u043e\u0433\u0443 (\u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0431\u044b\u043b \u0442\u043e\u043b\u043a\u043e\u043c \u0447\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u043b), \u043d\u043e \u0432\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445:  <\/p>\n<ul>\n<li>\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b \u00abav_restrict\u00bb: \u043d\u0430\u0434\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b \u00abconfig.h\u00bb \u0432 \u043f\u0430\u043f\u043a\u0435 \u00abffmpeg-2.1.3\u00bb \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u00ab#define av_restrict restrict\u00bb \u043d\u0430 \u00ab#define av_restrict __restrict\u00bb;<\/li>\n<li>\u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u00abgetenv()\u00bb: \u044d\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u00abextern char *getenv(const char *);\u00bb \u0432 \u0444\u0430\u0439\u043b\u0435 \u00abndk\\android-ndk-r9c\\platforms\\android-9\\arch-arm\\usr\\include\\stdlib.h\u00bb. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043d\u0430 \u043f\u0443\u0442\u044c \u2014 \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u043f\u0430\u043f\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f \u043e\u0442 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b: \u00abarch-arm\u00bb \u0435\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0435 \u043f\u043e\u0434 \u0434\u043b\u044f Arm, \u00abarch-mips\u00bb \u0434\u043b\u044f MIPS \u0438 \u00abarch-x86\u00bb \u0434\u043b\u044f x86;<\/li>\n<li>\u0434\u043b\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u043b\u0443\u0447\u0448\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 \u00abffmpeg.c\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u044e main() \u0432 ffmpeg_main(). \u0415\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0437 Java \u043a\u043e\u0434\u0430 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<\/ul>\n<p>  \u0415\u0449\u0435 \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u0443 \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043a\u043e\u0434\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 FFmpeg. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e (\u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0443\u0431\u0435\u0434\u0438\u0432\u0448\u0438\u0441\u044c \u043d\u0435 \u043f\u043e\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0447\u0442\u043e). \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u0447\u0442\u043e-\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0447\u0442\u043e-\u0442\u043e \u0438 \u0435\u0449\u0435, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u044f \u043d\u0435 \u043f\u043e\u043c\u043d\u044e, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043b\u0435\u0433\u043a\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c\u044b.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Make-\u0444\u0430\u0439\u043b\u044b \u0438 bat-\u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0441 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u043c\u0438.<\/b><\/p>\n<div class=\"spoiler_text\">\u041d\u044e\u0430\u043d\u0441\u044b:  <\/p>\n<ul>\n<li>\u043f\u043e\u043c\u0438\u043c\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 FFmpeg, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a libavcodec, libavfilter \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u0435\u0449\u0435 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b ffmpeg.exe \u043a\u0430\u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 ffmpeg.so. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0435 main() \u0444\u0443\u043d\u043a\u0446\u0438\u044e (\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b\u0438 \u0432 ffmpeg_main()) \u0438\u0437 Java-\u043a\u043e\u0434\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0443\u0434\u0430 \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0430 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0430\u0441 \u043d\u0443\u0436\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443;<\/li>\n<li>NDK \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c *.asm \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f x86 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e yasm \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c *.asm \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0436\u0430\u0442 \u0432 \u043f\u0430\u043f\u043a\u0430\u0445 \u0432\u0438\u0434\u0430 \u00abjni\\ffmpeg-2.1.3\\libavcodec\\x86\u00bb, \u00abjni\\ffmpeg-2.1.3\\libavfilter\\x86\u00bb \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041d\u0438\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b *.bat \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442. \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b *.a, \u043f\u0443\u0442\u044c \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0443\u043a\u0430\u0436\u0435\u043c \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0443 \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u043e\u0434 x86. \u042d\u0442\u043e \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443;<\/li>\n<li>\u0432 make-\u0444\u0430\u0439\u043b\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0435\u0449\u0435 \u043e\u0434\u0438\u043d make-\u0444\u0430\u0439\u043b \u0432\u0438\u0434\u0430 \u00ablibavfilter_ignore.mk\u00bb. \u0412 \u043d\u0438\u0445 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b *.c \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043d\u0430\u0434\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0427\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0444\u0430\u0439\u043b\u044b: \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445, \u043a\u0430\u043a \u044f \u043f\u043e\u043d\u044f\u043b \u0438\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u043a (\u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, mpegaudio_tablegen.c). \u0427\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 include (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 h264qpel_template.c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 h264qpel.c). \u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432 make-\u0444\u0430\u0439\u043b\u0430\u0445, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430 confgiure (\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0443 \u043c\u0435\u043d\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c) \u043e\u043d\u0438 \u0432\u0441\u0435 \u0442\u043e\u0436\u0435 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f;<\/li>\n<li>\u0432 make-\u0444\u0430\u0439\u043b \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0442\u0430\u043a \u0436\u0435 \u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u044f OpenCV. \u0422\u0430\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 opencv.org \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00abOpenCV Introduction into Android Development\u00bb. \u041e\u043d \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0434\u043b\u044f \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f FFmpeg-OpenCV. \u041e\u0431 \u044d\u0442\u043e\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435;<\/li>\n<li>\u0432\u0441\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 FFmpeg \u0441 \u043d\u0443\u043b\u044f \u0443 \u043c\u0435\u043d\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u0447\u0430\u0441\u0430. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u0435 FFmpeg. \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c, \u043d\u0438\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0435\u0449\u0435 \u043e\u0434\u0438\u043d make-\u0444\u0430\u0439\u043b. \u0412 \u043d\u0435\u043c \u0441 \u043d\u0443\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043c\u043e\u0434\u0443\u043b\u044c FFmpeg, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 libavfilter, \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0435 \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0435, \u0432\u0430\u043c \u043d\u0435\u0442 \u043d\u0443\u0436\u0434\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0435\u0449\u0435 \u0438 libavcodec \u0438 \u0434\u0440\u0443\u0433\u0438\u0435, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0443\u0436\u0435 \u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438 \u043d\u0443\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 make-\u0444\u0430\u0439\u043b\u0435;<\/li>\n<li>\u0432 make-\u0444\u0430\u0439\u043b\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043e\u043a\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043f\u0440\u0438\u0447\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u043e\u0445\u043e\u0436\u0430, \u0442\u043e \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 make-\u0444\u0430\u0439\u043b\u0435 \u043d\u0435 \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0442\u0441\u044f.<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Android.mk &#8212; \u0438\u0437 \u043d\u0435\u0433\u043e NDK \u0431\u0435\u0440\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cmake\">################################################################################ # \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e LOCAL_PATH \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 LOCAL_PATH := $(call my-dir)  # \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e FFMPEG_DIR \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u0433\u0434\u0435 \u043b\u0435\u0436\u0438\u0442 \u043a\u043e\u0434 FFmpeg FFMPEG_DIR := ffmpeg-2.1.3    # \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e OPENCVROOT \u043f\u0443\u0442\u044c \u043a \u043f\u0430\u043f\u043a\u0435 \u0441 OpenCV Anroid SDK OPENCVROOT := D:\\OpenCV-2.4.7.1-android-sdk  # \u0431\u043b\u043e\u043a \u043d\u0438\u0436\u0435 \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u0434 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 x86 # \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u044f x86 \u0435\u0441\u0442\u044c \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 FFmpeg \u043c\u043e\u0434\u0443\u043b\u0435\u0439 # \u043d\u043e \u0441\u0430\u043c NDK \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c *.asm \u0444\u0430\u0439\u043b, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435 yasm # \u0434\u043e \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e yasm \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 *.asm \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435 *.a \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c  # \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 *.asm \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432 bat-\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445  ifeq ($(TARGET_ARCH),x86)     ################################################################################     include $(CLEAR_VARS)      LOCAL_MODULE := avcodec_asm     LIBAVCODEC_ASM_A_FILE_PATH := $(LOCAL_PATH)\/..\/obj\/local\/x86\/objs\/avcodec\/ffmpeg-2.1.3\/libavcodec\/x86\/libavcodec_asm.a     LOCAL_SRC_FILES := $(subst jni\/,,$(LIBAVCODEC_ASM_A_FILE_PATH))      include $(PREBUILT_STATIC_LIBRARY)     ################################################################################     include $(CLEAR_VARS)      LOCAL_MODULE := avfilter_asm     LIBAVFILTER_ASM_A_FILE_PATH := $(LOCAL_PATH)\/..\/obj\/local\/x86\/objs\/avfilter\/ffmpeg-2.1.3\/libavfilter\/x86\/libavfilter_asm.a     LOCAL_SRC_FILES := $(subst jni\/,,$(LIBAVFILTER_ASM_A_FILE_PATH))      include $(PREBUILT_STATIC_LIBRARY)     ################################################################################     include $(CLEAR_VARS)      LOCAL_MODULE := avresample_asm     LIBAVRESAMPLE_ASM_A_FILE_PATH := $(LOCAL_PATH)\/..\/obj\/local\/x86\/objs\/avresample\/ffmpeg-2.1.3\/libavresample\/x86\/libavresample_asm.a     LOCAL_SRC_FILES := $(subst jni\/,,$(LIBAVRESAMPLE_ASM_A_FILE_PATH))      include $(PREBUILT_STATIC_LIBRARY)     ################################################################################     include $(CLEAR_VARS)      LOCAL_MODULE := avutil_asm     LIBAVUTIL_ASM_A_FILE_PATH := $(LOCAL_PATH)\/..\/obj\/local\/x86\/objs\/avutil\/ffmpeg-2.1.3\/libavutil\/x86\/libavutil_asm.a     LOCAL_SRC_FILES := $(subst jni\/,,$(LIBAVUTIL_ASM_A_FILE_PATH))      include $(PREBUILT_STATIC_LIBRARY)     ################################################################################     include $(CLEAR_VARS)      LOCAL_MODULE := swresample_asm     LIBSWRESAMPLE_ASM_A_FILE_PATH := $(LOCAL_PATH)\/..\/obj\/local\/x86\/objs\/swresample\/ffmpeg-2.1.3\/libswresample\/x86\/libswresample_asm.a     LOCAL_SRC_FILES := $(subst jni\/,,$(LIBSWRESAMPLE_ASM_A_FILE_PATH))      include $(PREBUILT_STATIC_LIBRARY)     ################################################################################     include $(CLEAR_VARS)      LOCAL_MODULE := swscale_asm     LIBSWSCALE_ASM_A_FILE_PATH := $(LOCAL_PATH)\/..\/obj\/local\/x86\/objs\/swscale\/ffmpeg-2.1.3\/libswscale\/x86\/libswscale_asm.a     LOCAL_SRC_FILES := $(subst jni\/,,$(LIBSWSCALE_ASM_A_FILE_PATH))      include $(PREBUILT_STATIC_LIBRARY)     ################################################################################ endif  # \u043d\u0438\u0436\u0435 \u043c\u044b \u043f\u043e-\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c FFmpeg ################################################################################ # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c FFmpeg avutils.so  # \u044d\u0442\u043e \u0442\u0440\u043e\u043a\u0443 \u043d\u0430\u0434\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f include $(CLEAR_VARS)  # \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0443\u0442\u0438 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043f\u043e \u043c\u0430\u043a\u0441\u0430\u043c *.asm, *.c  \u0438 \u0442.\u0434. \u0438\u0437 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u043f\u043e\u043a # \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u043f\u0443\u0442\u0438 &quot;$(TARGET_ARCH)&quot; - \u0432 \u044d\u0442\u043e\u0439 \u043f\u0435\u0435\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0438\u043c\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f # \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 ffmpeg \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043a\u043e\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0436\u0438\u0442 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u043f\u043a\u0430\u0445 LIBAVUTIL_LIB_ARCH_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavutil\/$(TARGET_ARCH)\/*.asm) LIBAVUTIL_LIB_ARCH_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavutil\/$(TARGET_ARCH)\/*.c) LIBAVUTIL_LIB_ARCH_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavutil\/$(TARGET_ARCH)\/*.S) LIBAVUTIL_LIB_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavutil\/*.asm) LIBAVUTIL_LIB_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavutil\/*.c) LIBAVUTIL_LIB_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavutil\/*.S) LIBAVUTIL_LIB_CPP_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavutil\/*.cpp)  # \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u043f\u0443\u0442\u0438 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0438 NDK \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0439\u0442\u0438 # \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0438\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0437 \u043f\u0443\u0442\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0443\u0434\u0430\u043b\u044f\u044e\u0442 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 &quot;jni\/&quot; \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0443\u0442\u044c LIBAVUTIL_LIB_ARCH_ASM_FILES := $(subst jni\/,,$(LIBAVUTIL_LIB_ARCH_ASM_FILES)) LIBAVUTIL_LIB_ARCH_C_FILES := $(subst jni\/,,$(LIBAVUTIL_LIB_ARCH_C_FILES)) LIBAVUTIL_LIB_ARCH_S_FILES := $(subst jni\/,,$(LIBAVUTIL_LIB_ARCH_S_FILES)) LIBAVUTIL_LIB_ASM_FILES := $(subst jni\/,,$(LIBAVUTIL_LIB_ASM_FILES)) LIBAVUTIL_LIB_C_FILES := $(subst jni\/,,$(LIBAVUTIL_LIB_C_FILES)) LIBAVUTIL_LIB_S_FILES := $(subst jni\/,,$(LIBAVUTIL_LIB_S_FILES)) LIBAVUTIL_LIB_CPP_FILES := $(subst jni\/,,$(LIBAVUTIL_LIB_CPP_FILES))  # \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 make-\u0444\u0430\u0439\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435 include  $(LOCAL_PATH)\/libavutil_ignore.mk  # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043e\u0434\u043d\u0443 \u043a\u0443\u0447\u0443, \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 LIBAVUTIL_FILES \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u0443\u0442\u0438 \u043a\u043e \u0432\u0441\u0435\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 avutils, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c LIBAVUTIL_FILES := $(sort $(LIBAVUTIL_LIB_ARCH_ASM_FILES)) $(sort $(LIBAVUTIL_LIB_ARCH_C_FILES)) $(sort $(LIBAVUTIL_LIB_ARCH_S_FILES)) $(sort $(LIBAVUTIL_LIB_ASM_FILES)) $(sort $(LIBAVUTIL_LIB_C_FILES)) $(sort $(LIBAVUTIL_LIB_S_FILES)) $(sort $(LIBAVUTIL_LIB_CPP_FILES))  # \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 # \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 LOCAL_SRC_FILES := $(LIBAVUTIL_FILES) # \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u043f\u043e\u043a \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 LOCAL_C_INCLUDES += $(LOCAL_PATH)\/$(FFMPEG_DIR) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavutil\/$(TARGET_ARCH) # \u0433\u0434\u0435-\u0442\u043e \u0432 FFmpeg \u0438\u0441\u043e\u043f\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a zlib \u0438 log, \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u043c\u044b \u0435\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c LOCAL_LDLIBS += -lz -llog # \u0434\u0430\u0435\u043c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 libavutil.so LOCAL_MODULE := avutil # \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435, \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 TARGET_ARCH \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f # \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 LOCAL_CFLAGS \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 # \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043d\u0438\u0445 \u0431\u044b\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u044b \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0431, \u0433\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0438 \u0442.\u043f. ifeq ($(TARGET_ARCH),arm)     LOCAL_CFLAGS += -O3 -fpic -DANDROID     LOCAL_ARM_MODE := arm else ifeq ($(TARGET_ARCH),x86)     LOCAL_CFLAGS += -O3 -fpic -DANDROID     # \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0434\u043b\u044f x86 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e yasm \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \tLOCAL_STATIC_LIBRARIES += avutil_asm else ifeq ($(TARGET_ARCH),mips) \tLOCAL_CFLAGS += -O3 -DANDROID -Wfatal-errors -Wno-deprecated -std=c99 -fomit-frame-pointer -mips32r2 -mdsp -mdspr2 -mhard-float -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=missing-prototypes -Werror=return-type -Werror=vla endif  # \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c make-\u0444\u0430\u0439\u043b \u0438\u0437 NDK, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u043c shared-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0438\u043b\u0438 *.so \u0444\u0430\u0439\u043b include $(BUILD_SHARED_LIBRARY) ################################################################################ # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c FFmpeg avcodec.so include $(CLEAR_VARS)  LIBAVCODEC_LIB_ARCH_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavcodec\/$(TARGET_ARCH)\/*.asm) LIBAVCODEC_LIB_ARCH_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavcodec\/$(TARGET_ARCH)\/*.c) LIBAVCODEC_LIB_ARCH_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavcodec\/$(TARGET_ARCH)\/*.S) LIBAVCODEC_LIB_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavcodec\/*.asm) LIBAVCODEC_LIB_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavcodec\/*.c) LIBAVCODEC_LIB_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavcodec\/*.S) LIBAVCODEC_LIB_CPP_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavcodec\/*.cpp)  LIBAVCODEC_LIB_ARCH_ASM_FILES := $(subst jni\/,,$(LIBAVCODEC_LIB_ARCH_ASM_FILES)) LIBAVCODEC_LIB_ARCH_C_FILES := $(subst jni\/,,$(LIBAVCODEC_LIB_ARCH_C_FILES)) LIBAVCODEC_LIB_ARCH_S_FILES := $(subst jni\/,,$(LIBAVCODEC_LIB_ARCH_S_FILES)) LIBAVCODEC_LIB_ASM_FILES := $(subst jni\/,,$(LIBAVCODEC_LIB_ASM_FILES)) LIBAVCODEC_LIB_C_FILES := $(subst jni\/,,$(LIBAVCODEC_LIB_C_FILES)) LIBAVCODEC_LIB_S_FILES := $(subst jni\/,,$(LIBAVCODEC_LIB_S_FILES)) LIBAVCODEC_LIB_CPP_FILES := $(subst jni\/,,$(LIBAVCODEC_LIB_CPP_FILES))  include  $(LOCAL_PATH)\/libavcodec_ignore.mk  LIBAVCODEC_FILES := $(sort $(LIBAVCODEC_LIB_ARCH_ASM_FILES)) $(sort $(LIBAVCODEC_LIB_ARCH_C_FILES)) $(sort $(LIBAVCODEC_LIB_ARCH_S_FILES)) $(sort $(LIBAVCODEC_LIB_ASM_FILES)) $(sort $(LIBAVCODEC_LIB_C_FILES)) $(sort $(LIBAVCODEC_LIB_S_FILES)) $(sort $(LIBAVCODEC_LIB_CPP_FILES))  LOCAL_SRC_FILES := $(LIBAVCODEC_FILES) LOCAL_C_INCLUDES += $(LOCAL_PATH)\/$(FFMPEG_DIR) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavcodec $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavcodec\/$(TARGET_ARCH) LOCAL_LDLIBS += -lz -llog # \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0434\u0443\u043b\u0438 ffmpeg \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430, \u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0443\u0436\u0435 \u0441\u043a\u043e\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439,  # \u044d\u0442\u043e \u043d\u0430\u0434\u043e, \u0447\u0442\u043e\u0431\u044b \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a \u043d\u0435 \u0440\u0443\u0433\u0430\u043b\u0441\u044f \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 LOCAL_SHARED_LIBRARIES += libavutil LOCAL_MODULE := avcodec ifeq ($(TARGET_ARCH),arm)     LOCAL_CFLAGS += -O3 -fpic -DANDROID     LOCAL_ARM_MODE := arm else ifeq ($(TARGET_ARCH),x86) \t LOCAL_CFLAGS += -O3 -fno-pic -DANDROID      LOCAL_STATIC_LIBRARIES += avutil_asm avcodec_asm      LOCAL_SHARED_LIBRARIES += libavutil_asm libavcodec_asm else ifeq ($(TARGET_ARCH),mips) \tLOCAL_CFLAGS += -O3 -DANDROID -Wfatal-errors -Wno-deprecated -std=c99 -fomit-frame-pointer -mips32r2 -mdsp -mdspr2 -mhard-float -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=missing-prototypes -Werror=return-type -Werror=vla endif  include $(BUILD_SHARED_LIBRARY) ################################################################################ # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c FFmpeg avformat.so include $(CLEAR_VARS)  LIBAVFORMAT_LIB_ARCH_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavformat\/$(TARGET_ARCH)\/*.asm) LIBAVFORMAT_LIB_ARCH_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavformat\/$(TARGET_ARCH)\/*.c) LIBAVFORMAT_LIB_ARCH_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavformat\/$(TARGET_ARCH)\/*.S) LIBAVFORMAT_LIB_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavformat\/*.asm) LIBAVFORMAT_LIB_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavformat\/*.c) LIBAVFORMAT_LIB_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavformat\/*.S) LIBAVFORMAT_LIB_CPP_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavformat\/*.cpp)  LIBAVFORMAT_LIB_ARCH_ASM_FILES := $(subst jni\/,,$(LIBAVFORMAT_LIB_ARCH_ASM_FILES)) LIBAVFORMAT_LIB_ARCH_C_FILES := $(subst jni\/,,$(LIBAVFORMAT_LIB_ARCH_C_FILES)) LIBAVFORMAT_LIB_ARCH_S_FILES := $(subst jni\/,,$(LIBAVFORMAT_LIB_ARCH_S_FILES)) LIBAVFORMAT_LIB_ASM_FILES := $(subst jni\/,,$(LIBAVFORMAT_LIB_ASM_FILES)) LIBAVFORMAT_LIB_C_FILES := $(subst jni\/,,$(LIBAVFORMAT_LIB_C_FILES)) LIBAVFORMAT_LIB_S_FILES := $(subst jni\/,,$(LIBAVFORMAT_LIB_S_FILES)) LIBAVFORMAT_LIB_CPP_FILES := $(subst jni\/,,$(LIBAVFORMAT_LIB_CPP_FILES))  include  $(LOCAL_PATH)\/libavformat_ignore.mk  LIBAVFORMAT_FILES := $(sort $(LIBAVFORMAT_LIB_ARCH_ASM_FILES)) $(sort $(LIBAVFORMAT_LIB_ARCH_C_FILES)) $(sort $(LIBAVFORMAT_LIB_ARCH_S_FILES)) $(sort $(LIBAVFORMAT_LIB_ASM_FILES)) $(sort $(LIBAVFORMAT_LIB_C_FILES)) $(sort $(LIBAVFORMAT_LIB_S_FILES)) $(sort $(LIBAVFORMAT_LIB_CPP_FILES))  LOCAL_SRC_FILES := $(LIBAVFORMAT_FILES) LOCAL_C_INCLUDES += $(LOCAL_PATH)\/$(FFMPEG_DIR) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavformat $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavformat\/$(TARGET_ARCH) LOCAL_LDLIBS += -lz -llog LOCAL_SHARED_LIBRARIES += libavutil libavcodec LOCAL_MODULE := avformat ifeq ($(TARGET_ARCH),arm)     LOCAL_CFLAGS += -O3 -fpic -DANDROID     LOCAL_ARM_MODE := arm else ifeq ($(TARGET_ARCH),x86) \tLOCAL_CFLAGS += -O3 -fpic -DANDROID else ifeq ($(TARGET_ARCH),mips) \tLOCAL_CFLAGS += -O3 -DANDROID -Wfatal-errors -Wno-deprecated -std=c99 -fomit-frame-pointer -mips32r2 -mdsp -mdspr2 -mhard-float -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=missing-prototypes -Werror=return-type -Werror=vla endif  include $(BUILD_SHARED_LIBRARY) ################################################################################ # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c FFmpeg swscale.so include $(CLEAR_VARS)  LIBSWSCALE_LIB_ARCH_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswscale\/$(TARGET_ARCH)\/*.asm) LIBSWSCALE_LIB_ARCH_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswscale\/$(TARGET_ARCH)\/*.c) LIBSWSCALE_LIB_ARCH_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswscale\/$(TARGET_ARCH)\/*.S) LIBSWSCALE_LIB_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswscale\/*.asm) LIBSWSCALE_LIB_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswscale\/*.c) LIBSWSCALE_LIB_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswscale\/*.S) LIBSWSCALE_LIB_CPP_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswscale\/*.cpp)  LIBSWSCALE_LIB_ARCH_ASM_FILES := $(subst jni\/,,$(LIBSWSCALE_LIB_ARCH_ASM_FILES)) LIBSWSCALE_LIB_ARCH_C_FILES := $(subst jni\/,,$(LIBSWSCALE_LIB_ARCH_C_FILES)) LIBSWSCALE_LIB_ARCH_S_FILES := $(subst jni\/,,$(LIBSWSCALE_LIB_ARCH_S_FILES)) LIBSWSCALE_LIB_ASM_FILES := $(subst jni\/,,$(LIBSWSCALE_LIB_ASM_FILES)) LIBSWSCALE_LIB_C_FILES := $(subst jni\/,,$(LIBSWSCALE_LIB_C_FILES)) LIBSWSCALE_LIB_S_FILES := $(subst jni\/,,$(LIBSWSCALE_LIB_S_FILES)) LIBSWSCALE_LIB_CPP_FILES := $(subst jni\/,,$(LIBSWSCALE_LIB_CPP_FILES))  include  $(LOCAL_PATH)\/libswscale_ignore.mk  LIBSWSCALE_FILES := $(sort $(LIBSWSCALE_LIB_ARCH_ASM_FILES)) $(sort $(LIBSWSCALE_LIB_ARCH_C_FILES)) $(sort $(LIBSWSCALE_LIB_ARCH_S_FILES)) $(sort $(LIBSWSCALE_LIB_ASM_FILES)) $(sort $(LIBSWSCALE_LIB_C_FILES)) $(sort $(LIBSWSCALE_LIB_S_FILES)) $(sort $(LIBSWSCALE_LIB_CPP_FILES))  LOCAL_SRC_FILES := $(LIBSWSCALE_FILES) LOCAL_C_INCLUDES += $(LOCAL_PATH)\/$(FFMPEG_DIR) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswscale $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswscale\/$(TARGET_ARCH) LOCAL_LDLIBS += -lz -llog LOCAL_SHARED_LIBRARIES += libavutil LOCAL_MODULE := swscale ifeq ($(TARGET_ARCH),arm)     LOCAL_CFLAGS += -O3 -fpic -DANDROID     LOCAL_ARM_MODE := arm else ifeq ($(TARGET_ARCH),x86) \tLOCAL_CFLAGS += -O3 -fno-pic -DANDROID     LOCAL_STATIC_LIBRARIES += avutil_asm swscale_asm else ifeq ($(TARGET_ARCH),mips) \tLOCAL_CFLAGS += -O3 -DANDROID -Wfatal-errors -Wno-deprecated -std=c99 -fomit-frame-pointer -mips32r2 -mdsp -mdspr2 -mhard-float -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=missing-prototypes -Werror=return-type -Werror=vla endif  include $(BUILD_SHARED_LIBRARY) ################################################################################ # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c FFmpeg postproc.so include $(CLEAR_VARS)  LIBPOSTPROC_LIB_ARCH_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libpostproc\/$(TARGET_ARCH)\/*.asm) LIBPOSTPROC_LIB_ARCH_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libpostproc\/$(TARGET_ARCH)\/*.c) LIBPOSTPROC_LIB_ARCH_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libpostproc\/$(TARGET_ARCH)\/*.S) LIBPOSTPROC_LIB_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libpostproc\/*.asm) LIBPOSTPROC_LIB_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libpostproc\/*.c) LIBPOSTPROC_LIB_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libpostproc\/*.S) LIBPOSTPROC_LIB_CPP_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libpostproc\/*.cpp)  LIBPOSTPROC_LIB_ARCH_ASM_FILES := $(subst jni\/,,$(LIBPOSTPROC_LIB_ARCH_ASM_FILES)) LIBPOSTPROC_LIB_ARCH_C_FILES := $(subst jni\/,,$(LIBPOSTPROC_LIB_ARCH_C_FILES)) LIBPOSTPROC_LIB_ARCH_S_FILES := $(subst jni\/,,$(LIBPOSTPROC_LIB_ARCH_S_FILES)) LIBPOSTPROC_LIB_ASM_FILES := $(subst jni\/,,$(LIBPOSTPROC_LIB_ASM_FILES)) LIBPOSTPROC_LIB_C_FILES := $(subst jni\/,,$(LIBPOSTPROC_LIB_C_FILES)) LIBPOSTPROC_LIB_S_FILES := $(subst jni\/,,$(LIBPOSTPROC_LIB_S_FILES)) LIBPOSTPROC_LIB_CPP_FILES := $(subst jni\/,,$(LIBPOSTPROC_LIB_CPP_FILES))  include  $(LOCAL_PATH)\/libpostproc_ignore.mk  LIBPOSTPROC_FILES := $(sort $(LIBPOSTPROC_LIB_ARCH_ASM_FILES)) $(sort $(LIBPOSTPROC_LIB_ARCH_C_FILES)) $(sort $(LIBPOSTPROC_LIB_ARCH_S_FILES)) $(sort $(LIBPOSTPROC_LIB_ASM_FILES)) $(sort $(LIBPOSTPROC_LIB_C_FILES)) $(sort $(LIBPOSTPROC_LIB_S_FILES)) $(sort $(LIBPOSTPROC_LIB_CPP_FILES))  LOCAL_SRC_FILES := $(LIBPOSTPROC_FILES) LOCAL_C_INCLUDES += $(LOCAL_PATH)\/$(FFMPEG_DIR) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libpostproc $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libpostproc\/$(TARGET_ARCH) LOCAL_LDLIBS += -lz -llog LOCAL_SHARED_LIBRARIES += libavutil LOCAL_MODULE := postproc ifeq ($(TARGET_ARCH),arm)     LOCAL_CFLAGS += -O3 -fpic -DANDROID     LOCAL_ARM_MODE := arm else ifeq ($(TARGET_ARCH),x86) \tLOCAL_CFLAGS += -O3 -fno-pic -DANDROID else ifeq ($(TARGET_ARCH),mips) \tLOCAL_CFLAGS += -O3 -DANDROID -Wfatal-errors -Wno-deprecated -std=c99 -fomit-frame-pointer -mips32r2 -mdsp -mdspr2 -mhard-float -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=missing-prototypes -Werror=return-type -Werror=vla endif  include $(BUILD_SHARED_LIBRARY) ################################################################################ # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c FFmpeg swresample.so include $(CLEAR_VARS)  LIBSWRESAMPLE_LIB_ARCH_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswresample\/$(TARGET_ARCH)\/*.asm) LIBSWRESAMPLE_LIB_ARCH_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswresample\/$(TARGET_ARCH)\/*.c) LIBSWRESAMPLE_LIB_ARCH_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswresample\/$(TARGET_ARCH)\/*.S) LIBSWRESAMPLE_LIB_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswresample\/*.asm) LIBSWRESAMPLE_LIB_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswresample\/*.c) LIBSWRESAMPLE_LIB_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswresample\/*.S) LIBSWRESAMPLE_LIB_CPP_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswresample\/*.cpp)  LIBSWRESAMPLE_LIB_ARCH_ASM_FILES := $(subst jni\/,,$(LIBSWRESAMPLE_LIB_ARCH_ASM_FILES)) LIBSWRESAMPLE_LIB_ARCH_C_FILES := $(subst jni\/,,$(LIBSWRESAMPLE_LIB_ARCH_C_FILES)) LIBSWRESAMPLE_LIB_ARCH_S_FILES := $(subst jni\/,,$(LIBSWRESAMPLE_LIB_ARCH_S_FILES)) LIBSWRESAMPLE_LIB_ASM_FILES := $(subst jni\/,,$(LIBSWRESAMPLE_LIB_ASM_FILES)) LIBSWRESAMPLE_LIB_C_FILES := $(subst jni\/,,$(LIBSWRESAMPLE_LIB_C_FILES)) LIBSWRESAMPLE_LIB_S_FILES := $(subst jni\/,,$(LIBSWRESAMPLE_LIB_S_FILES)) LIBSWRESAMPLE_LIB_CPP_FILES := $(subst jni\/,,$(LIBSWRESAMPLE_LIB_CPP_FILES))  include  $(LOCAL_PATH)\/libswresample_ignore.mk  LIBSWRESAMPLE_FILES := $(sort $(LIBSWRESAMPLE_LIB_ARCH_ASM_FILES)) $(sort $(LIBSWRESAMPLE_LIB_ARCH_C_FILES)) $(sort $(LIBSWRESAMPLE_LIB_ARCH_S_FILES)) $(sort $(LIBSWRESAMPLE_LIB_ASM_FILES)) $(sort $(LIBSWRESAMPLE_LIB_C_FILES)) $(sort $(LIBSWRESAMPLE_LIB_S_FILES)) $(sort $(LIBSWRESAMPLE_LIB_CPP_FILES))  LOCAL_SRC_FILES := $(LIBSWRESAMPLE_FILES) LOCAL_C_INCLUDES += $(LOCAL_PATH)\/$(FFMPEG_DIR) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswresample $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libswresample\/$(TARGET_ARCH) LOCAL_LDLIBS += -lz -llog LOCAL_SHARED_LIBRARIES += libavutil LOCAL_MODULE := swresample ifeq ($(TARGET_ARCH),arm)     LOCAL_CFLAGS += -O3 -fpic -DANDROID     LOCAL_ARM_MODE := arm else ifeq ($(TARGET_ARCH),x86) \tLOCAL_CFLAGS += -O3 -fpic -DANDROID     LOCAL_STATIC_LIBRARIES += avutil_asm swresample_asm else ifeq ($(TARGET_ARCH),mips) \tLOCAL_CFLAGS += -O3 -DANDROID -Wfatal-errors -Wno-deprecated -std=c99 -fomit-frame-pointer -mips32r2 -mdsp -mdspr2 -mhard-float -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=missing-prototypes -Werror=return-type -Werror=vla endif  include $(BUILD_SHARED_LIBRARY) ################################################################################ # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c FFmpeg avresample.so include $(CLEAR_VARS)  LIBAVRESAMPLE_LIB_ARCH_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavresample\/$(TARGET_ARCH)\/*.asm) LIBAVRESAMPLE_LIB_ARCH_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavresample\/$(TARGET_ARCH)\/*.c) LIBAVRESAMPLE_LIB_ARCH_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavresample\/$(TARGET_ARCH)\/*.S) LIBAVRESAMPLE_LIB_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavresample\/*.asm) LIBAVRESAMPLE_LIB_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavresample\/*.c) LIBAVRESAMPLE_LIB_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavresample\/*.S) LIBAVRESAMPLE_LIB_CPP_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavresample\/*.cpp)  LIBAVRESAMPLE_LIB_ARCH_ASM_FILES := $(subst jni\/,,$(LIBAVRESAMPLE_LIB_ARCH_ASM_FILES)) LIBAVRESAMPLE_LIB_ARCH_C_FILES := $(subst jni\/,,$(LIBAVRESAMPLE_LIB_ARCH_C_FILES)) LIBAVRESAMPLE_LIB_ARCH_S_FILES := $(subst jni\/,,$(LIBAVRESAMPLE_LIB_ARCH_S_FILES)) LIBAVRESAMPLE_LIB_ASM_FILES := $(subst jni\/,,$(LIBAVRESAMPLE_LIB_ASM_FILES)) LIBAVRESAMPLE_LIB_C_FILES := $(subst jni\/,,$(LIBAVRESAMPLE_LIB_C_FILES)) LIBAVRESAMPLE_LIB_S_FILES := $(subst jni\/,,$(LIBAVRESAMPLE_LIB_S_FILES)) LIBAVRESAMPLE_LIB_CPP_FILES := $(subst jni\/,,$(LIBAVRESAMPLE_LIB_CPP_FILES))  include  $(LOCAL_PATH)\/libavresample_ignore.mk  LIBAVRESAMPLE_FILES := $(sort $(LIBAVRESAMPLE_LIB_ARCH_ASM_FILES)) $(sort $(LIBAVRESAMPLE_LIB_ARCH_C_FILES)) $(sort $(LIBAVRESAMPLE_LIB_ARCH_S_FILES)) $(sort $(LIBAVRESAMPLE_LIB_ASM_FILES)) $(sort $(LIBAVRESAMPLE_LIB_C_FILES)) $(sort $(LIBAVRESAMPLE_LIB_S_FILES)) $(sort $(LIBAVRESAMPLE_LIB_CPP_FILES))  LOCAL_SRC_FILES := $(LIBAVRESAMPLE_FILES) LOCAL_C_INCLUDES += $(LOCAL_PATH)\/$(FFMPEG_DIR) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavresample $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavresample\/$(TARGET_ARCH) LOCAL_LDLIBS += -lz -llog LOCAL_SHARED_LIBRARIES += libavutil LOCAL_MODULE := avresample ifeq ($(TARGET_ARCH),arm)     LOCAL_CFLAGS += -O3 -fpic -DANDROID     LOCAL_ARM_MODE := arm else ifeq ($(TARGET_ARCH),x86) \tLOCAL_CFLAGS += -O3 -fpic -DANDROID     LOCAL_STATIC_LIBRARIES += avutil_asm avresample_asm else ifeq ($(TARGET_ARCH),mips) \tLOCAL_CFLAGS += -O3 -DANDROID -Wfatal-errors -Wno-deprecated -std=c99 -fomit-frame-pointer -mips32r2 -mdsp -mdspr2 -mhard-float -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=missing-prototypes -Werror=return-type -Werror=vla endif  include $(BUILD_SHARED_LIBRARY) ################################################################################ # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c OpenCV include $(CLEAR_VARS)  OPENCV_CAMERA_MODULES := off OPENCV_INSTALL_MODULES := on  include $(OPENCVROOT)\/sdk\/native\/jni\/OpenCV.mk ################################################################################ # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c FFmpeg avfilter.so include $(CLEAR_VARS)  LIBAVFILTER_LIB_ARCH_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/$(TARGET_ARCH)\/*.asm) LIBAVFILTER_LIB_ARCH_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/$(TARGET_ARCH)\/*.c) LIBAVFILTER_LIB_ARCH_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/$(TARGET_ARCH)\/*.S) LIBAVFILTER_LIB_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/*.asm) LIBAVFILTER_LIB_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/*.c) LIBAVFILTER_LIB_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/*.S) LIBAVFILTER_LIB_CPP_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/*.cpp) LIBAVFILTER_LIB_EX_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/libmpcodecs\/*.c)  LIBAVFILTER_LIB_ARCH_ASM_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_ARCH_ASM_FILES)) LIBAVFILTER_LIB_ARCH_C_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_ARCH_C_FILES)) LIBAVFILTER_LIB_ARCH_S_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_ARCH_S_FILES)) LIBAVFILTER_LIB_ASM_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_ASM_FILES)) LIBAVFILTER_LIB_C_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_C_FILES)) LIBAVFILTER_LIB_S_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_S_FILES)) LIBAVFILTER_LIB_CPP_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_CPP_FILES)) LIBAVFILTER_LIB_EX_C_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_EX_C_FILES))  include  $(LOCAL_PATH)\/libavfilter_ignore.mk  LIBAVFILTER_FILES := $(sort $(LIBAVFILTER_LIB_ARCH_ASM_FILES)) $(sort $(LIBAVFILTER_LIB_ARCH_C_FILES)) $(sort $(LIBAVFILTER_LIB_ARCH_S_FILES)) $(sort $(LIBAVFILTER_LIB_ASM_FILES)) $(sort $(LIBAVFILTER_LIB_C_FILES)) $(sort $(LIBAVFILTER_LIB_S_FILES)) $(sort $(LIBAVFILTER_LIB_CPP_FILES)) $(sort $(LIBAVFILTER_LIB_EX_C_FILES))  LOCAL_SRC_FILES := $(LIBAVFILTER_FILES) LOCAL_C_INCLUDES += $(OPENCVROOT)\/sdk\/native\/jni\/include $(LOCAL_PATH)\/$(FFMPEG_DIR) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/$(TARGET_ARCH) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/libmpcodecs $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/libmpcodecs\/libvo LOCAL_LDLIBS += -lz -llog LOCAL_SHARED_LIBRARIES += libavutil libavcodec libavformat libswresample libpostproc libswscale libavresample libopencv_java LOCAL_MODULE := avfilter ifeq ($(TARGET_ARCH),arm)     LOCAL_CFLAGS += -D__STDC_CONSTANT_MACROS -O3 -fpic -DANDROID      LOCAL_ARM_MODE := arm else ifeq ($(TARGET_ARCH),x86) \tLOCAL_CFLAGS += -D__STDC_CONSTANT_MACROS -O3 -fno-pic -DANDROID     LOCAL_STATIC_LIBRARIES += avutil_asm avfilter_asm  else ifeq ($(TARGET_ARCH),mips) \tLOCAL_CFLAGS += -D__STDC_CONSTANT_MACROS -O3 -DANDROID -Wfatal-errors -Wno-deprecated -std=c99 -fomit-frame-pointer -mips32r2 -mdsp -mdspr2 -mhard-float -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=missing-prototypes -Werror=return-type -Werror=vla endif  include $(BUILD_SHARED_LIBRARY) ################################################################################ # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c FFmpeg avdevice.so include $(CLEAR_VARS)  LIBAVDEVICE_LIB_ARCH_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavdevice\/$(TARGET_ARCH)\/*.asm) LIBAVDEVICE_LIB_ARCH_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavdevice\/$(TARGET_ARCH)\/*.c) LIBAVDEVICE_LIB_ARCH_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavdevice\/$(TARGET_ARCH)\/*.S) LIBAVDEVICE_LIB_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavdevice\/*.asm) LIBAVDEVICE_LIB_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavdevice\/*.c) LIBAVDEVICE_LIB_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavdevice\/*.S) LIBAVDEVICE_LIB_CPP_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavdevice\/*.cpp)  LIBAVDEVICE_LIB_ARCH_ASM_FILES := $(subst jni\/,,$(LIBAVDEVICE_LIB_ARCH_ASM_FILES)) LIBAVDEVICE_LIB_ARCH_C_FILES := $(subst jni\/,,$(LIBAVDEVICE_LIB_ARCH_C_FILES)) LIBAVDEVICE_LIB_ARCH_S_FILES := $(subst jni\/,,$(LIBAVDEVICE_LIB_ARCH_S_FILES)) LIBAVDEVICE_LIB_ASM_FILES := $(subst jni\/,,$(LIBAVDEVICE_LIB_ASM_FILES)) LIBAVDEVICE_LIB_C_FILES := $(subst jni\/,,$(LIBAVDEVICE_LIB_C_FILES)) LIBAVDEVICE_LIB_S_FILES := $(subst jni\/,,$(LIBAVDEVICE_LIB_S_FILES)) LIBAVDEVICE_LIB_CPP_FILES := $(subst jni\/,,$(LIBAVDEVICE_LIB_CPP_FILES))  include  $(LOCAL_PATH)\/libavdevice_ignore.mk  LIBAVDEVICE_FILES := $(sort $(LIBAVDEVICE_LIB_ARCH_ASM_FILES)) $(sort $(LIBAVDEVICE_LIB_ARCH_C_FILES)) $(sort $(LIBAVDEVICE_LIB_ARCH_S_FILES)) $(sort $(LIBAVDEVICE_LIB_ASM_FILES)) $(sort $(LIBAVDEVICE_LIB_C_FILES)) $(sort $(LIBAVDEVICE_LIB_S_FILES)) $(sort $(LIBAVDEVICE_LIB_CPP_FILES))  LOCAL_SRC_FILES := $(LIBAVDEVICE_FILES) LOCAL_C_INCLUDES += $(LOCAL_PATH)\/$(FFMPEG_DIR) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavdevice $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavdevice\/$(TARGET_ARCH) LOCAL_LDLIBS += -lz -llog LOCAL_SHARED_LIBRARIES += libavutil libavcodec libavformat libavfilter LOCAL_MODULE := avdevice ifeq ($(TARGET_ARCH),arm)     LOCAL_CFLAGS += -O3 -fpic -DANDROID     LOCAL_ARM_MODE := arm else ifeq ($(TARGET_ARCH),x86) \tLOCAL_CFLAGS += -O3 -fpic -DANDROID else ifeq ($(TARGET_ARCH),mips) \tLOCAL_CFLAGS += -O3 -DANDROID -Wfatal-errors -Wno-deprecated -std=c99 -fomit-frame-pointer -mips32r2 -mdsp -mdspr2 -mhard-float -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=missing-prototypes -Werror=return-type -Werror=vla endif  include $(BUILD_SHARED_LIBRARY) ################################################################################ # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c ffmpeg.exe \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u0430\u043a *.so \u0444\u0430\u0439\u043b include $(CLEAR_VARS)  LOCAL_SRC_FILES  := $(subst jni\/,,$(LOCAL_PATH)\/$(FFMPEG_DIR)\/cmdutils.c) $(subst jni\/,,$(LOCAL_PATH)\/$(FFMPEG_DIR)\/ffmpeg.c) $(subst jni\/,,$(LOCAL_PATH)\/$(FFMPEG_DIR)\/ffmpeg_opt.c) $(subst jni\/,,$(LOCAL_PATH)\/$(FFMPEG_DIR)\/ffmpeg_filter.c) LOCAL_C_INCLUDES += $(LOCAL_PATH)\/$(FFMPEG_DIR) $(OPENCVROOT)\/sdk\/native\/jni\/include LOCAL_LDLIBS += -llog -ldl LOCAL_SHARED_LIBRARIES += libavcodec libavfilter libavformat libavresample libavutil libpostproc libswresample libswscale libopencv_java LOCAL_MODULE := ffmpeg ifeq ($(TARGET_ARCH),arm)     LOCAL_CFLAGS += -D__STDC_CONSTANT_MACROS -O3 -DANDROID -DCONFIG_ARM_ARCH -fpic     LOCAL_ARM_MODE := arm else ifeq ($(TARGET_ARCH),x86) \tLOCAL_CFLAGS += -D__STDC_CONSTANT_MACROS -O3 -DANDROID -DCONFIG_X86_ARCH -fpic else ifeq ($(TARGET_ARCH),mips) \tLOCAL_CFLAGS += -D__STDC_CONSTANT_MACROS -O3 -DANDROID -Wfatal-errors -Wno-deprecated -std=c99 -fomit-frame-pointer -mips32r2 -mdsp -mdspr2 -mhard-float -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=return-type -Werror=vla endif  include $(BUILD_SHARED_LIBRARY) <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Application.mk &#8212; \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cmake\"># \u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u0432 \u043a\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c STL APP_STL := gnustl_static # \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0444\u043b\u0430\u0433\u0438 APP_CPPFLAGS := -frtti -fexceptions # \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432\u043c\u0435\u0441\u0442\u0435, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0432 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: &quot;APP_ABI := armeabi x86 mips&quot; # \u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b APP_ABI := armeabi # APP_ABI := x86 # APP_ABI := mips APP_PLATFORM := android-9 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">libavfilter_ignore.mk &#8212; \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cmake\"># \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b: af_ladspa.c, asrc_flite.c, deshake_opencl.c, f_zmq.c, unsharp_opencl.c, unsharp_opencl_kernel.c, vf_drawtext.c, vf_frei0r.c, vf_libopencv.c, vf_subtitles.c, vf_vidstabdetect.c, vf_vidstabtransform.c, vidstabutils.c  LIBAVFILTER_LIB_FILEPATH_af_ladspa_c := $(FFMPEG_DIR)\/libavfilter\/af_ladspa.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_af_ladspa_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_asrc_flite_c := $(FFMPEG_DIR)\/libavfilter\/asrc_flite.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_asrc_flite_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_deshake_opencl_c := $(FFMPEG_DIR)\/libavfilter\/deshake_opencl.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_deshake_opencl_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_f_zmq_c := $(FFMPEG_DIR)\/libavfilter\/f_zmq.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_f_zmq_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_unsharp_opencl_c := $(FFMPEG_DIR)\/libavfilter\/unsharp_opencl.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_unsharp_opencl_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_unsharp_opencl_kernel_c := $(FFMPEG_DIR)\/libavfilter\/unsharp_opencl_kernel.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_unsharp_opencl_kernel_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_vf_drawtext_c := $(FFMPEG_DIR)\/libavfilter\/vf_drawtext.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_vf_drawtext_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_vf_frei0r_c := $(FFMPEG_DIR)\/libavfilter\/vf_frei0r.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_vf_frei0r_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_vf_libopencv_c := $(FFMPEG_DIR)\/libavfilter\/vf_libopencv.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_vf_libopencv_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_vf_subtitles_c := $(FFMPEG_DIR)\/libavfilter\/vf_subtitles.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_vf_subtitles_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_vf_vidstabdetect_c := $(FFMPEG_DIR)\/libavfilter\/vf_vidstabdetect.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_vf_vidstabdetect_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_vf_vidstabtransform_c := $(FFMPEG_DIR)\/libavfilter\/vf_vidstabtransform.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_vf_vidstabtransform_c),,$(LIBAVFILTER_LIB_C_FILES))  LIBAVFILTER_LIB_FILEPATH_vidstabutils_c := $(FFMPEG_DIR)\/libavfilter\/vidstabutils.c LIBAVFILTER_LIB_C_FILES := $(subst $(LIBAVFILTER_LIB_FILEPATH_vidstabutils_c),,$(LIBAVFILTER_LIB_C_FILES)) <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">yasm_compile_asm_libavfilter.bat &#8212; \u043f\u0440\u0438\u043c\u0435\u0440 bat-\u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 *.asm \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f x86<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">REM \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c *.asm \u0444\u0430\u0439\u043b\u044b libavfilter, \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 'libavfilter\\x86' REM &quot;-f elf&quot; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c &quot;error: binary object format does not support external references&quot; REM \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f -D \u0444\u043b\u0430\u0433\u043e\u0432 \u0432\u0437\u044f\u0442\u044b \u0438\u0437 \u0444\u0430\u0439\u043b\u044b config.h &quot;D:\\yasm\\yasm-1.3.0-win64.exe&quot; -f elf -D ARCH_X86_64=0 -D HAVE_ALIGNED_STACK=1 -D ARCH_X86_32=1 -D HAVE_CPUNOP=1 -D HAVE_AVX_EXTERNAL=1 -I D:\\MyProject\\jni\\ffmpeg-2.1.3 -o af_volume.o af_volume.asm &quot;D:\\yasm\\yasm-1.3.0-win64.exe&quot; -f elf -D ARCH_X86_64=0 -D HAVE_ALIGNED_STACK=1 -D ARCH_X86_32=1 -D HAVE_CPUNOP=1 -D HAVE_AVX_EXTERNAL=1 -I D:\\MyProject\\jni\\ffmpeg-2.1.3 -o vf_gradfun.o vf_gradfun.asm &quot;D:\\yasm\\yasm-1.3.0-win64.exe&quot; -f elf -D ARCH_X86_64=0 -D HAVE_ALIGNED_STACK=1 -D ARCH_X86_32=1 -D HAVE_CPUNOP=1 -D HAVE_AVX_EXTERNAL=1 -I D:\\MyProject\\jni\\ffmpeg-2.1.3 -o vf_hqdn3d.o vf_hqdn3d.asm &quot;D:\\yasm\\yasm-1.3.0-win64.exe&quot; -f elf -D ARCH_X86_64=0 -D HAVE_ALIGNED_STACK=1 -D ARCH_X86_32=1 -D HAVE_CPUNOP=1 -D HAVE_AVX_EXTERNAL=1 -I D:\\MyProject\\jni\\ffmpeg-2.1.3 -o vf_pullup.o vf_pullup.asm &quot;D:\\yasm\\yasm-1.3.0-win64.exe&quot; -f elf -D ARCH_X86_64=0 -D HAVE_ALIGNED_STACK=1 -D ARCH_X86_32=1 -D HAVE_CPUNOP=1 -D HAVE_AVX_EXTERNAL=1 -I D:\\MyProject\\jni\\ffmpeg-2.1.3 -o vf_yadif.o vf_yadif.asm &quot;D:\\yasm\\yasm-1.3.0-win64.exe&quot; -f elf -D ARCH_X86_64=0 -D HAVE_ALIGNED_STACK=1 -D ARCH_X86_32=1 -D HAVE_CPUNOP=1 -D HAVE_AVX_EXTERNAL=1 -I D:\\MyProject\\jni\\ffmpeg-2.1.3 -o yadif-10.o yadif-10.asm &quot;D:\\yasm\\yasm-1.3.0-win64.exe&quot; -f elf -D ARCH_X86_64=0 -D HAVE_ALIGNED_STACK=1 -D ARCH_X86_32=1 -D HAVE_CPUNOP=1 -D HAVE_AVX_EXTERNAL=1 -I D:\\MyProject\\jni\\ffmpeg-2.1.3 -o yadif-16.o yadif-16.asm  &quot;D:\\ndk\\android-ndk-r9c\\toolchains\\x86-4.6\\prebuilt\\windows-x86_64\\bin\\i686-linux-android-ar.exe&quot; rvs libavfilter_asm.a af_volume.o vf_gradfun.o vf_hqdn3d.o vf_pullup.o vf_yadif.o yadif-10.o yadif-16.o  mkdir &quot;D:\\MyProject\\obj\\local\\x86\\objs\\avfilter\\ffmpeg-2.1.3\\libavfilter\\x86&quot; move libavfilter_asm.a &quot;D:\\MyProject\\obj\\local\\x86\\objs\\avfilter\\ffmpeg-2.1.3\\libavfilter\\x86\\&quot;  del *.o <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Android.mk &#8212; \u043f\u0440\u0438\u043c\u0435\u0440 make-\u0444\u0430\u0439\u043b\u0430, \u0433\u0434\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043c\u043e\u0434\u0443\u043b\u044c avfilter, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 *.so &#8212; \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cmake\">################################################################################ LOCAL_PATH := $(call my-dir) FFMPEG_DIR := ffmpeg-2.1.3  ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libavutil LOCAL_SRC_FILES := ..\/prebuild\/armeabi\/release\/libavutil.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libavcodec LOCAL_SRC_FILES := ..\/prebuild\/armeabi\/release\/libavcodec.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libavformat LOCAL_SRC_FILES := ..\/prebuild\/armeabi\/release\/libavformat.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libswscale LOCAL_SRC_FILES := ..\/prebuild\/armeabi\/release\/libswscale.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libpostproc LOCAL_SRC_FILES := ..\/prebuild\/armeabi\/release\/libpostproc.so   include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libswresample LOCAL_SRC_FILES := ..\/prebuild\/armeabi\/release\/libswresample.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libavresample LOCAL_SRC_FILES := ..\/prebuild\/armeabi\/release\/libavresample.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  OPENCV_CAMERA_MODULES := off OPENCV_INSTALL_MODULES := on  include $(OPENCVROOT)\/sdk\/native\/jni\/OpenCV.mk ################################################################################ # \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u044c avfilter.so include $(CLEAR_VARS)  LIBAVFILTER_LIB_ARCH_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/$(TARGET_ARCH)\/*.asm) LIBAVFILTER_LIB_ARCH_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/$(TARGET_ARCH)\/*.c) LIBAVFILTER_LIB_ARCH_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/$(TARGET_ARCH)\/*.S) LIBAVFILTER_LIB_ASM_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/*.asm) LIBAVFILTER_LIB_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/*.c) LIBAVFILTER_LIB_S_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/*.S) LIBAVFILTER_LIB_CPP_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/*.cpp) LIBAVFILTER_LIB_EX_C_FILES := $(wildcard $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/libmpcodecs\/*.c)  LIBAVFILTER_LIB_ARCH_ASM_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_ARCH_ASM_FILES)) LIBAVFILTER_LIB_ARCH_C_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_ARCH_C_FILES)) LIBAVFILTER_LIB_ARCH_S_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_ARCH_S_FILES)) LIBAVFILTER_LIB_ASM_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_ASM_FILES)) LIBAVFILTER_LIB_C_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_C_FILES)) LIBAVFILTER_LIB_S_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_S_FILES)) LIBAVFILTER_LIB_CPP_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_CPP_FILES)) LIBAVFILTER_LIB_EX_C_FILES := $(subst jni\/,,$(LIBAVFILTER_LIB_EX_C_FILES))  include  $(LOCAL_PATH)\/libavfilter_ignore.mk  LIBAVFILTER_FILES := $(sort $(LIBAVFILTER_LIB_ARCH_ASM_FILES)) $(sort $(LIBAVFILTER_LIB_ARCH_C_FILES)) $(sort $(LIBAVFILTER_LIB_ARCH_S_FILES)) $(sort $(LIBAVFILTER_LIB_ASM_FILES)) $(sort $(LIBAVFILTER_LIB_C_FILES)) $(sort $(LIBAVFILTER_LIB_S_FILES)) $(sort $(LIBAVFILTER_LIB_CPP_FILES)) $(sort $(LIBAVFILTER_LIB_EX_C_FILES))  LOCAL_SRC_FILES := $(LIBAVFILTER_FILES) LOCAL_C_INCLUDES += $(OPENCVROOT)\/sdk\/native\/jni\/include $(LOCAL_PATH)\/$(FFMPEG_DIR) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/$(TARGET_ARCH) $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/libmpcodecs $(LOCAL_PATH)\/$(FFMPEG_DIR)\/libavfilter\/libmpcodecs\/libvo LOCAL_LDLIBS += -lz -llog LOCAL_SHARED_LIBRARIES += libavutil libavcodec libavformat libswresample libpostproc libswscale libavresample libopencv_java LOCAL_MODULE := avfilter LOCAL_CFLAGS += -D__STDC_CONSTANT_MACROS -O3 -fpic -DANDROID LOCAL_ARM_MODE := arm  include $(BUILD_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libavdevice LOCAL_SRC_FILES := ..\/prebuild\/armeabi\/release\/libavdevice.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_SRC_FILES  := $(subst jni\/,,$(LOCAL_PATH)\/$(FFMPEG_DIR)\/cmdutils.c) $(subst jni\/,,$(LOCAL_PATH)\/$(FFMPEG_DIR)\/ffmpeg.c) $(subst jni\/,,$(LOCAL_PATH)\/$(FFMPEG_DIR)\/ffmpeg_opt.c) $(subst jni\/,,$(LOCAL_PATH)\/$(FFMPEG_DIR)\/ffmpeg_filter.c) LOCAL_C_INCLUDES += $(LOCAL_PATH)\/$(FFMPEG_DIR) $(OPENCVROOT)\/sdk\/native\/jni\/include LOCAL_LDLIBS += -llog -ldl LOCAL_SHARED_LIBRARIES += libavcodec libavfilter libavformat libavresample libavutil libpostproc libswresample libswscale libopencv_java LOCAL_CFLAGS += -D__STDC_CONSTANT_MACROS -O3 -DANDROID -DCONFIG_ARM_ARCH -fpic LOCAL_MODULE := ffmpeg LOCAL_ARM_MODE := arm  include $(BUILD_SHARED_LIBRARY) <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/div>\n<\/div>\n<p>  \u042d\u0442\u0438 make-\u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 \u00abjni\u00bb. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043a\u0430\u043a \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/259\/728\/644\/2597286446d84bf29dd1967c9a0d17c8.png\"\/><\/p>\n<p>  \u041c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u0442\u0438\u043d\u044b. \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c Project Build, \u0438 \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e, \u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f (\u0443 \u043c\u0435\u043d\u044f \u043e\u043a\u043e\u043b\u043e \u0447\u0430\u0441\u0430) \u0432 \u043f\u0430\u043f\u043a\u0435 \u00ablibs\u00bb \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u043f\u0430\u043f\u043a\u0438 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440 \u0438 \u0437\u0430\u0432\u0435\u0442\u043d\u044b\u0435 *.so \u0444\u0430\u0439\u043b\u044b (\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0444\u0430\u0439\u043b libopencv_java.so \u2014 \u044d\u0442\u043e \u0444\u0430\u0439\u043b \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c OpenCV.mk \u0438 \u0444\u0430\u0439\u043b libffmpeg.so \u2013 \u044d\u0442\u043e \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b ffmpeg.exe, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u043a\u0430\u043a *.so \u0444\u0430\u0439\u043b):<\/p>\n<p>  <img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/b77\/f4e\/6e4\/b77f4e6e4fa44995a1ce335f40d65c70.png\"\/><\/p>\n<p>  \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u044d\u0442\u0438 *.so \u0444\u0430\u0439\u043b\u044b, \u043f\u043e\u0442\u043e\u043c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u0434 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435.<\/p>\n<h3>4. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c FFmpeg \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/h3>\n<p>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c *.so \u0444\u0430\u0439\u043b\u044b, \u0442\u043e \u043f\u043e\u0440\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e. \u041c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0436\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439. \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0433\u0434\u0435 \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438 FFmpeg (\u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e \u0441\u0442\u0430\u0442\u044c\u044e \u00abOpenCV Introduction into Android Development\u00bb).<\/p>\n<p>  \u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0442\u043e\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438 FFmpeg \u0444\u0430\u0439\u043b\u044b: \u0442\u0430\u043c \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0430\u043f\u043a\u0430 jni, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0436\u0430\u0442\u044c Android.mk \u0438 Application.mk, \u0442\u0430\u043a \u0436\u0435 \u0432 \u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u043a\u043e\u0434\u043e\u043c \u043d\u0430 C++ \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u043c\u0438 \u0440\u0430\u043d\u0435\u0435 *.so \u0444\u0430\u0439\u043b\u043e\u0432. \u041d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 Java-\u043a\u043e\u0434\u0430.<\/p>\n<p>  \u0423\u0441\u043b\u043e\u0432\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c Activity, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0430, \u0438 \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u044d\u0442\u0443 \u043a\u043d\u043e\u043f\u043a\u0443. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">\/\/ \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 - \u0438\u043c\u044f \u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 C++ \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 Java \u043a\u043e\u0434\u0430 package com.example.myproject;  \/\/ \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 - \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 C++ \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 Java \u043a\u043e\u0434\u0430 public class MyActivity {     &lt;...&gt;      \/\/ \u0433\u0434\u0435-\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0436\u0435 \u0444\u0430\u0439\u043b\u0435 \u043d\u0430\u0434\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c native-\u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043a \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f     private static native void nativeFFmpegTest();      &lt;...&gt;      public void OnClick()     {         \/\/ \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u043c *.so \u0444\u0430\u0439\u043b\u044b, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u0435\u0444\u0438\u043a\u0441 &quot;lib&quot; \u043d\u0435 \u043f\u0438\u0448\u0435\u0442\u0441\u044f!         System.loadLibrary(&quot;opencv_java&quot;);         System.loadLibrary(&quot;avutil&quot;);         System.loadLibrary(&quot;avcodec&quot;);         System.loadLibrary(&quot;avformat&quot;);         System.loadLibrary(&quot;avresample&quot;);         System.loadLibrary(&quot;postproc&quot;);         System.loadLibrary(&quot;swresample&quot;);         System.loadLibrary(&quot;swscale&quot;);         System.loadLibrary(&quot;avfilter&quot;);         System.loadLibrary(&quot;ffmpeg&quot;);         \/\/ \u044d\u0442\u043e\u0442 *.so \u043c\u043e\u0434\u0443\u043b\u044c, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 Android.mk \u0444\u0430\u0439\u043b \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0442\u0430\u043c \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f         System.loadLibrary(&quot;myproject&quot;);              \/\/ \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c native-\u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u043d\u0430 C++, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0434 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a FFmpeg         nativeFFmpegTest();     } } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \u00abjni\u00bb \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b myproject.cpp \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">myproject.cpp<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#include &lt;jni.h&gt; #include &lt;string.h&gt; #include &lt;algorithm&gt; #include &lt;android\/log.h&gt;  \/\/ \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0434\u0435\u0441\u044c NDK \u0431\u0443\u0434\u0435\u0442 \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 Eclipse \u043f\u0443\u0442\u0438 \u043a \u044d\u0442\u0438\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0436\u0430\u0442 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441 \u043a\u043e\u0434\u043e\u043c FFmpeg extern &quot;C&quot; { #include &quot;libavcodec\/avcodec.h&quot; #include &quot;libavformat\/avformat.h&quot; #include &quot;libavutil\/opt.h&quot; #include &quot;libswscale\/swscale.h&quot; #include &quot;libavfilter\/avfilter.h&quot; #include &quot;libavutil\/log.h&quot; #include &quot;libavutil\/imgutils.h&quot; }  \/\/ Extermal Functions Declaration extern &quot;C&quot; {     \/\/ \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u043c\u044b \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b\u0438 main() \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 ffmpeg.c \u0432 ffmpeg_main() \u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u043e\u043d\u0430 \u0438 \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f     int ffmpeg_main(int argc, char **argv); }  \/\/ JNI Functions Declarations extern &quot;C&quot; {     JNIEXPORT void JNICALL Java_com_example_myproject_MyActivity_nativeFFmpegTest(JNIEnv * _jenv, jclass _this); }  JNIEXPORT void JNICALL Java_com_example_myproject_MyActivity_nativeFFmpegTest(JNIEnv * _jenv, jclass _this) {     int argc = 5;     \/\/ \u0437\u0434\u0435\u0441\u044c \u043f\u0443\u0442\u044c \u043a \u0444\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b\u0443 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f, \u0437\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u0443 \u0447\u0442\u043e-\u043d\u0438\u0443\u0431\u0434\u044c \u0438 \u043f\u0440\u043e\u043f\u0438\u0448\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044c \u043f\u0443\u0442\u044c \u043a \u044d\u0442\u043e\u043c\u0439 \u0444\u0430\u0439\u043b\u0443     \/\/ FFmpeg \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0446\u0435\u043b\u0443\u044e \u0442\u0443\u0447\u0443 \u043a\u043e\u0434\u0435\u043a\u043e\u0432 \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c mp4     char* argv[5] = { &quot;ffmpeg&quot;, &quot;-i&quot;, &quot;\/\/storage\/\/extSdCard\/\/DCIM\/\/Camera\/\/video.mp4&quot;, &quot;-an&quot;, &quot;\/\/storage\/\/extSdCard\/\/DCIM\/\/Camera\/\/video_no_audio.mp4&quot;};      \/\/ \u0432\u044b\u0437\u043e\u0432 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u044d\u0442\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 ffmpeg.exe \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:     \/\/ &gt; ffmpeg.exe -i &quot;storage\/extSdCard\/DCIM\/Camera\/video.mp4&quot; -an &quot;storage\/extSdCard\/DCIM\/Camera\/video_no_audio.mp4&quot;     \/\/ \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 -an \u0433\u043e\u0432\u043e\u0440\u0438\u0442 ffmpeg \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0430\u0443\u0434\u0438\u043e \u043f\u043e\u0434\u0442\u043e\u043a \u0438\u0437 \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0440\u043e\u0447\u0435 \u0443\u0431\u0440\u0430\u0442\u044c \u0437\u0432\u0443\u043a \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 video_no_audio.mp4     ffmpeg_main(argc, argv); } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0422\u0430\u043c \u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b Android.mk \u0438 Application.mk:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Application.mk<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cmake\">APP_STL := gnustl_static APP_CPPFLAGS := -frtti -fexceptions APP_ABI := armeabi # APP_ABI := x86 # APP_ABI := mips APP_PLATFORM := android-9 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Android.mk<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cmake\">################################################################################ LOCAL_PATH := $(call my-dir)  # \u0441\u043f\u0435\u0440\u0432\u0430 \u043c\u044b \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448\u0438 *.so \u0444\u0430\u0439\u043b\u044b ################################################################################ include $(CLEAR_VARS)  OPENCV_CAMERA_MODULES := off OPENCV_INSTALL_MODULES := on  include $(OPENCVROOT)\/sdk\/native\/jni\/OpenCV.mk ################################################################################ include $(CLEAR_VARS)   LOCAL_MODULE := libavcodec LOCAL_SRC_FILES := ..\/prebuild\/ffmpeg\/$(TARGET_ARCH)\/release\/libavcodec.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libavfilter LOCAL_SRC_FILES := ..\/prebuild\/ffmpeg\/$(TARGET_ARCH)\/release\/libavfilter.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libavformat LOCAL_SRC_FILES := ..\/prebuild\/ffmpeg\/$(TARGET_ARCH)\/release\/libavformat.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libavresample LOCAL_SRC_FILES := ..\/prebuild\/ffmpeg\/$(TARGET_ARCH)\/release\/libavresample.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libavutil LOCAL_SRC_FILES := ..\/prebuild\/ffmpeg\/$(TARGET_ARCH)\/release\/libavutil.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libpostproc LOCAL_SRC_FILES := ..\/prebuild\/ffmpeg\/$(TARGET_ARCH)\/release\/libpostproc.so   include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libswresample LOCAL_SRC_FILES := ..\/prebuild\/ffmpeg\/$(TARGET_ARCH)\/release\/libswresample.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libswscale LOCAL_SRC_FILES := ..\/prebuild\/ffmpeg\/$(TARGET_ARCH)\/release\/libswscale.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ include $(CLEAR_VARS)  LOCAL_MODULE := libffmpeg LOCAL_SRC_FILES := ..\/prebuild\/ffmpeg\/$(TARGET_ARCH)\/release\/libffmpeg.so  include $(PREBUILT_SHARED_LIBRARY) ################################################################################ # \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c myproject.cpp \u0432 libmyproject.so include $(CLEAR_VARS)  LOCAL_SRC_FILES  := myproject.cpp LOCAL_C_INCLUDES += $(LOCAL_PATH) $(FFMPEGANDROIDROOT) $(OPENCVROOT)\/sdk\/native\/jni\/include LOCAL_LDLIBS += -llog -ldl LOCAL_SHARED_LIBRARIES += libavcodec libavfilter libavformat libavresample libavutil libpostproc libswresample libswscale libopencv_java libffmpeg LOCAL_CFLAGS += -D__STDC_CONSTANT_MACROS -O3 -DANDROID ifeq ($(TARGET_ARCH),arm) \tLOCAL_CFLAGS += -DCONFIG_ARM_ARCH -fpic else ifeq ($(TARGET_ARCH),x86) \tLOCAL_CFLAGS += -DCONFIG_X86_ARCH -fpic else ifeq ($(TARGET_ARCH),mips) \tLOCAL_CFLAGS += -DCONFIG_MIPS_ARCH -Wfatal-errors -Wno-deprecated -std=c99 -fomit-frame-pointer -mips32r2 -mdsp -mdspr2 -mhard-float -g -Wdeclaration-after-statement -Wall -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=return-type -Werror=vla endif LOCAL_MODULE := myproject  include $(BUILD_SHARED_LIBRARY) <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u043a\u0430\u043c\u0435\u0440\u0443 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0440\u043e\u043b\u0438\u043a \u0441\u043e \u0437\u0432\u0443\u043a\u043e\u043c, \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a \u00abstorage\/extSdCard\/DCIM\/Camera\/video.mp4\u00bb, \u0438\u043b\u0438 \u043f\u0440\u043e\u043f\u0438\u0448\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0443\u0442\u044c \u0432 myproject.cpp.<\/p>\n<p>  \u0412\u0441\u0435! \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435, \u043d\u0430\u0436\u0438\u043c\u0430\u0439\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443, \u0438, \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0440\u044f\u0434\u043e\u043c \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c video.mp4 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0444\u0430\u0439\u043b video_no_audio.mp4 \u0431\u0435\u0437 \u0430\u0443\u0434\u0438\u043e \u043f\u043e\u0442\u043e\u043a\u0430. \u0415\u0441\u043b\u0438 \u043e\u043d \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f, \u0442\u043e FFmpeg \u043f\u043e\u0434 Android \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442!<\/p>\n<h3>5. \u0418\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c FFmpeg \u0438 OpenCV<\/h3>\n<p>  \u0418\u0442\u0430\u043a, \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 FFmpeg \u0438 \u0437\u043d\u0430\u0435\u043c, \u043a\u0430\u043a \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 Java \u043a\u043e\u0434\u0435 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043a FFmpeg OpenCV.<\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0433\u043e\u0432\u043e\u0440\u044e, \u043a\u043e\u0432\u044b\u0440\u044f\u043b\u0441\u044f \u044f \u0432 \u043a\u043e\u0434\u0435 FFmpeg \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e. \u041d\u0430\u0448\u0435\u043b \u0446\u0438\u043a\u043b, \u0433\u0434\u0435 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u0434\u0440\u044b \u0438\u0437 \u0432\u0438\u0434\u0435\u043e, \u0438\u0437\u0443\u0447\u0438\u043b \u0435\u0433\u043e \u043e\u0442 \u0438 \u0434\u043e. \u041f\u0440\u0438\u043a\u0438\u0434\u044b\u0432\u0430\u043b, \u0433\u0434\u0435 \u0432\u0441\u0435 \u0436\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u043b \u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 OpenCV. \u041f\u043e\u0434 \u043a\u043e\u043d\u0435\u0446 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u0431\u044b\u043b\u043e \u043e\u0442\u0447\u0430\u044f\u043b\u0441\u044f. <\/p>\n<p>  \u0418 \u0432\u0434\u0440\u0443\u0433 \u043c\u0435\u043d\u044f \u043e\u0441\u0435\u043d\u0438\u043b\u043e \u2014 \u0442\u0430\u043a \u0432\u0435\u0434\u044c \u0432 FFmpeg \u0435\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u044b! \u0424\u0438\u043b\u044c\u0442\u0440\u044b \u2014 \u044d\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f-\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0438 \u0438\u043c \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u0442\u043e\u043a\u0430. \u041a\u0430\u043a \u0440\u0430\u0437 \u0437\u0434\u0435\u0441\u044c \u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043a\u0430\u0434\u0440\u043e\u0432\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u0442\u043e\u043a\u0430. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0445\u043e\u0442\u0435\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 \u0441 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0435\u0439 \u0438 OpenCV-\u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0412 \u043d\u0435\u043c \u0441\u043c\u043e\u0433 \u0431\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043e. \u041d\u043e \u043f\u043e\u0442\u043e\u043c \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043a\u043e\u0434. <\/p>\n<p>  \u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u0435\u043b \u0444\u0438\u043b\u044c\u0442\u0440 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u00abffmpeg-2.1.3\\libavfilter\\vf_scale.c\u00bb, \u0432\u0435\u0434\u044c \u043c\u043e\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0434\u0440\u044b \u0434\u043b\u044f \u0432\u0438\u0434\u0435\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043a\u0430\u0434\u0440\u0430 \u0432\u0438\u0434\u0435\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u044b\u0431\u0440\u0430\u043b \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 300&#215;300, \u0430 \u0432\u0438\u0434\u0435\u043e, \u0433\u0434\u0435 \u043e\u043d \u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0433\u043b\u0430\u0437\u0430\u043c\u0438, \u0441\u043d\u044f\u043b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 640&#215;480. \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u2014 \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c \u0433\u043b\u0430\u0437\u0430 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u0430\u043d\u0434\u044b. \u0422\u0430\u043a \u0432\u043e\u0442, \u043c\u044b\u0441\u043b\u044c \u0432\u0437\u044f\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0440\u0435\u0448\u0430\u043b\u0430 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u0430\u0434\u0440\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u0430\u0434\u0440 \u0441\u043e\u0431\u043e\u0439. <\/p>\n<p>  \u042f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u044d\u0442\u043e, \u043d\u0430\u0433\u043b\u043e \u043e\u0431\u043c\u0430\u043d\u0443\u0432 \u0444\u0438\u043b\u044c\u0442\u0440 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u0447\u0435\u0440\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u044e ffmpeg_process() \u0437\u0430\u0434\u0430\u0432\u0430\u043b \u0435\u043c\u0443 \u0442\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u0435\u043c\u0443 \u043d\u0430\u0434\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432\u0438\u0434\u0435\u043e \u0441 640&#215;480 \u0434\u043e 300&#215;300. \u041d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u0434\u0430 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044f \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u043a\u043e\u0434, \u0433\u0434\u0435 \u0438\u0437 \u043a\u0430\u0434\u0440\u0430 640&#215;480 \u0432\u044b\u0440\u0435\u0437\u0430\u044e\u0442\u0441\u044f \u0433\u043b\u0430\u0437\u0430, \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f 300&#215;300. \u0418 \u0434\u0430\u043b\u044c\u0448\u0435 \u044d\u0442\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u0430\u043d\u0434\u044b \u0441 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0431\u0443\u0444\u0435\u0440 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u0430, \u0438 \u0444\u0438\u043b\u044c\u0442\u0440 \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 \u043a\u0430\u0434\u0440 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u043e\u0442\u043e\u043a \u043f\u043e \u0432\u0441\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c. \u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f OpenCV \u0438 FFmpeg.<\/p>\n<p>  \u0420\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u0430 \u0442\u0430\u043a: \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0435 \u0444\u0430\u0439\u043b vf_scale.c, \u0442\u043e \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f filter_frame(). \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438 \u0435\u0441\u0442\u044c \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 callback, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432\u0438\u0434\u0435\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430. \u0423 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u00abin\u00bb \u0442\u0438\u043f\u0430 AVFrame* \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u044b\u0439 \u043a\u0430\u0434\u0440 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e. \u041d\u0430\u043c \u043d\u0430\u0434\u043e \u044d\u0442\u043e\u0442 \u043a\u0430\u0434\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u0441 OpenCV \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f FFmpeg \u0441 OpenCV<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">\/\/ \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 _in - \u043a\u0430\u0434\u0440 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 640x480, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 _out - \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043a\u0430\u0434\u0440 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 300x300 void convertFFmpegAVFrameToOpenCVMat(AVFrame* _in, AVFrame* _out) {     \/\/ \u0448\u0438\u0440\u0438\u043d\u0430 \u043a\u0430\u0434\u0440\u0430 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e (\u044d\u0442\u043e 640 \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430)     int videoFrameWidth = _in-&gt;width;     \/\/ \u0432\u044b\u0441\u043e\u0442\u0430 \u043a\u0430\u0434\u0440\u0430 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e (\u044d\u0442\u043e 480 \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430)     int videoFrameHeight = _in-&gt;height;     \/\/ \u044d\u0442\u043e \u043a\u043e\u0434 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043a\u0430\u0434\u0440\u0430, \u0435\u0433\u043e \u043c\u044b \u0438 \u0431\u0443\u0434\u0435\u043c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 AV_PIX_FMT_BGRA, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c OpenCV     int videoFrameFormat = _in-&gt;format;          \/\/ SwsContext - \u044d\u0442\u043e \u0442\u0438\u043f \u0438\u0437 FFmpeg \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438, \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c,      \/\/ \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0438\u0434\u0435\u043e \u043a\u0430\u0434\u0440 \u0438\u0437 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 videoFrameFormat \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 AV_PIX_FMT_BGRA     SwsContext* avFrameToMatConvertContext = NULL;     avFrameToMatConvertContext = sws_getCachedContext(avFrameToMatConvertContext,                                                        videoFrameWidth,                                                        videoFrameHeight,                                                        (enum AVPixelFormat) videoFrameFormat,                                                        videoFrameWidth,                                                       videoFrameHeight,                                                        AV_PIX_FMT_BGRA,                                                        SWS_BICUBIC,                                                        NULL,                                                        NULL,                                                        NULL);          \/\/ \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 AVFrame* \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043a\u0430\u0434\u0440 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 AV_PIX_FMT_BGRA     AVFrame* avFrameWithOpenCVCompatibleData = av_frame_alloc();     \/\/ \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u044b\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 (\u043e\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u0430\u0434\u0440\u0430)     int avFrameWithOpenCVCompatibleDataBufferSize = avpicture_get_size(AV_PIX_FMT_BGRA, videoFrameWidth, videoFrameHeight);     \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0431\u0443\u0444\u0435\u0440 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0435\u0433\u043e \u0432 avFrameWithOpenCVCompatibleData     uint8_t* avFrameWithOpenCVCompatibleDataBuffer = (uint8_t *) av_malloc((uint64_t) (avFrameWithOpenCVCompatibleDataBufferSize * sizeof(uint8_t)));     avpicture_fill((AVPicture*) avFrameWithOpenCVCompatibleData, avFrameWithOpenCVCompatibleDataBuffer, AV_PIX_FMT_BGRA, videoFrameWidth, videoFrameHeight);     avFrameWithOpenCVCompatibleData-&gt;height = videoFrameWidth;     avFrameWithOpenCVCompatibleData-&gt;width = videoFrameHeight;      \/\/ \u0437\u0434\u0435\u0441\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u0430\u0434\u0440 \u0438\u0437 _in \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 AV_PIX_FMT_BGRA \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e avFrameWithOpenCVCompatibleData      sws_scale(avFrameToMatConvertContext, _in-&gt;data, _in-&gt;linesize, 0, _in-&gt;height, avFrameWithOpenCVCompatibleData-&gt;data, avFrameWithOpenCVCompatibleData-&gt;linesize);     \/\/ \u0437\u0434\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u043b\u0433\u043e\u0436\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 OpenCV Mat \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u0430\u0434\u0440 \u0438\u0437 FFmpeg AVFrame     cv::Mat* cvVideoFrame = new cv::Mat(avFrameWithOpenCVCompatibleData-&gt;height, avFrameWithOpenCVCompatibleData-&gt;width, CV_8UC4, avFrameWithOpenCVCompatibleData-&gt;data[0]);      \/\/ \u0442\u0435\u043f\u0435\u0440\u044c \u0441 cvVideoFrame \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 OpenCV,      \/\/ \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Facegood,      \/\/ \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u044b\u0440\u0435\u0437\u0430\u044e\u0442\u0441\u044f \u0438\u0437 cvVideoFrame \u0433\u043b\u0430\u0437\u0430 \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 300x300     cvResultFrame = cv::imread(&quot;panda_300x300.jpg&quot;, -1);     &lt;\u0432\u044b\u0440\u0435\u0437\u0430\u0435\u043c \u0438\u0437 cvVideoFrame \u0433\u043b\u0430\u0437\u0430 \u0438 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0438\u0445 \u043d\u0430 cvResultFrame&gt;              \/\/ \u043e\u0447\u0438\u0449\u0430\u0435\u043c\u0441\u044f, \u043e\u043d\u0438 \u043d\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b     av_free(avFrameWithOpenCVCompatibleDataBuffer);     av_frame_free(&avFrameWithOpenCVCompatibleData);     delete cvVideoFrame;              \/\/ \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c cvResultFrame \u0432 _out     \/\/ \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442 cvResultFrame \u0441 BGRA \u043d\u0430 YUV_I420     cvtColor(cvResultFrame, cvResultFrame, CV_BGRA2YUV_I420);          \/\/ \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439 \u0432 AVFrame* _out     size_t imageYPlaneSize = _out-&gt;width * _out-&gt;height;     size_t imageUPlaneSize = imageYPlaneSize \/ 4;     size_t imageVPlaneSize = imageUPlaneSize;     int imageHalfWidth = _out-&gt;width \/ 2;     int imageHalfHeight = _out-&gt;height \/ 2;     for (int i = 0; i &lt; _out-&gt;height; i++)     {         memcpy(_out-&gt;data[0] + i * _out-&gt;linesize[0], cvResultFrame.data + i * _out-&gt;width, _out-&gt;width);         if (i &lt; imageHalfHeight)         {             memcpy(_out-&gt;data[1] + i * _out-&gt;linesize[1], cvResultFrame.data + imageYPlaneSize + i * imageHalfWidth, imageHalfWidth);             memcpy(_out-&gt;data[2] + i * _out-&gt;linesize[2], cvResultFrame.data + imageYPlaneSize + imageUPlaneSize + i * imageHalfWidth, imageHalfWidth);         }     } } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412\u043e\u0442 \u0438 \u0432\u0441\u0435! \u0414\u0430\u043b\u044c\u0448\u0435 \u0444\u0438\u043b\u044c\u0442\u0440 vf_scale \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u0434\u0440 \u0438\u0437 _out \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u0438\u0434\u0435\u043e\u043f\u043e\u0442\u043e\u043a, \u0433\u0434\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u0430\u0434\u0440\u043e\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0432\u0443\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043f\u0430\u043d\u0434\u044b \u0441 \u0432\u044b\u0440\u0435\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u0432\u0430 \u0433\u043b\u0430\u0437\u0430 \u0438 \u0440\u043e\u0442):<\/p>\n<p>  <img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/f34\/a8e\/3e7\/f34a8e3e7b8b4a99afc4a01e64539adb.jpg\"\/><\/p>\n<p>  \u041d\u0430\u0441\u0447\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u043f\u043e\u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u0442\u043e\u043a\u0430, \u0442\u043e \u0434\u0430\u0436\u0435 \u043d\u0430 \u0441\u0440\u0435\u0434\u043d\u0438\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u043e\u043b\u0438\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u2014 \u0432\u0441\u0435 \u0436\u0435 FFmpeg \u0438 OpenCV \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u042f \u0441\u0430\u043c \u0438\u043c\u0435\u044e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u0430\u0447\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 FFmpeg \u043f\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u0441\u0442\u0430\u0442\u044c\u044f\u043c \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u0425\u043e\u0442\u044f \u044f \u0438 \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0432\u0441\u0435 \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c, \u043d\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0430\u0431\u044b\u043b \u043f\u0440\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043d\u044e\u0430\u043d\u0441\u044b, \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0438\u043d\u044f\u044e\u0441\u044c \u0437\u0430 \u044d\u0442\u043e. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c FFmpeg \u043f\u043e \u043c\u043e\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u0433\u0434\u0435-\u0442\u043e \u0437\u0430\u0441\u0442\u0440\u044f\u043b\u0438 \u2014 \u043f\u0438\u0448\u0438\u0442\u0435, \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0432\u0440\u0435\u043c\u044f \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u0430\u0448\u0438\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u043c.<\/p>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \t\t\t<\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/254737\/\"> http:\/\/habrahabr.ru\/post\/254737\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p> \t\t\t\u042d\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0432 Windows \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0438\u0434\u0435\u043e \u0438 \u0430\u0443\u0434\u0438\u043e FFmpeg \u043f\u043e\u0434 Android \u0432 Eclipse \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e NDK. \u0412\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0441\u0432\u044f\u0437\u0430\u0442\u044c FFmpeg \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 OpenCV \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0451 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 Java-\u043a\u043e\u0434\u0435 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412\u0441\u0451 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0437\u0430\u0432\u044f\u0437\u0430\u043d \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u044d\u0442\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438. \u0418\u0442\u0430\u043a, \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-254386","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/254386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=254386"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/254386\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=254386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=254386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=254386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}