{"id":1575,"date":"2024-09-18T07:34:32","date_gmt":"2024-09-18T07:34:32","guid":{"rendered":"http:\/\/www.recologypower.com:9080\/?p=1575"},"modified":"2024-09-18T07:34:33","modified_gmt":"2024-09-18T07:34:33","slug":"%e3%80%90ffmpeg%e3%80%91%e5%9b%9b%e3%80%81linux%e7%bc%96%e8%af%91ffmpeg-so%e5%90%88%e5%b9%b6so%e7%af%87","status":"publish","type":"post","link":"http:\/\/www.recologypower.com:9080\/?p=1575","title":{"rendered":"\u3010ffmpeg\u3011\u56db\u3001linux\u7f16\u8bd1ffmpeg.so\u5408\u5e76so\u7bc7"},"content":{"rendered":"\n<p>\u524d\u8a00\uff1a\u5728\u524d\u51e0\u7bc7\u6587\u7ae0\u5df2\u7ecf\u4ecb\u7ecd\u4e86\uff0c\u5982\u4f55\u8fdb\u884c\u7f16\u8bd1<a href=\"https:\/\/so.csdn.net\/so\/search?q=ffmpeg&amp;spm=1001.2101.3001.7020\">ffmpeg<\/a>.so\u7684\u4e00\u4e2a\u5b8c\u6574\u8fc7\u7a0b\u3002\u4f46\u662f\u7f16\u8bd1\u51fa\u7684\u662f7\u4e2a\u72ec\u7acb\u6a21\u5757\u7684<a rel=\"noreferrer noopener\" href=\"https:\/\/so.csdn.net\/so\/search?q=so%E6%96%87%E4%BB%B6&amp;spm=1001.2101.3001.7020\" target=\"_blank\">so\u6587\u4ef6<\/a>\uff0c\u4f7f\u7528\u8d77\u6765\u8f83\u4e3a\u4e0d\u4fbf\u3002\u672c\u6587\u5c06\u5728\u4e0a\u4e00\u7bc7\u6587\u7ae0\u7684\u57fa\u7840\u4e0a\u8fdb\u884cso\u7684\u5408\u5e76\u4ecb\u7ecd\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u7f16\u5199\u811a\u672c<\/h2>\n\n\n\n<p>\u6ce8\u610f\uff1a\u672c\u6587\u6240\u8ff0\u4f9d\u7136\u662f\u53cc\u67b6\u6784\u7f16\u8bd1\uff0c\u4f46\u6240\u8c13\u5408\u5e76so\uff0c\u5e76\u4e0d\u662f\u5408\u5e76\u4e24\u4e2a\u67b6\u6784\u7684so\uff0c\u800c\u662f\u5206\u522b\u5728\u81ea\u5df1\u7684\u67b6\u6784\u4e0b\uff0c\u8fdb\u884c\u591a\u4e2affmpeg\u7684.a\u9759\u6001\u5e93\u5408\u5e76\u6210\u52a8\u6001\u5e93so\u7684\u8fc7\u7a0b\u3002\u5373\u672c\u6587\u4e24\u4e2a\u67b6\u6784\u6765\u8bf4\uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u8fdb\u884c\u4e862\u6b21\u3002<\/p>\n\n\n\n<p>\u5728\u524d\u51e0\u7bc7\u6587\u7ae0\u4e2d\u7684ffmpeg-4.2.2\u6e90\u7801\u76ee\u5f55\u4e0b\u65b0\u5efa\u4e00\u4e2a\u7f16\u8bd1\u811a\u672c\uff1abuild_android_v8v7_comileso.sh\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\r\nmake clean\r\nAPI=21\r\nNDK=\/home\/liuzihui\/softwaresCus\/ndkr21\/android-ndk-r21e\r\nTOOLCHAIN=$NDK\/toolchains\/llvm\/prebuilt\/linux-x86_64\r\nSYSROOT=$TOOLCHAIN\/sysroot\r\nADDITIONAL_CONFIGURE_FLAG=\"--enable-avdevice --enable-avcodec --enable-avformat --enable-swresample --enable-swscale --enable-postproc --enable-avfilter\"\r\nfunction build_android {\r\n  echo \"===========================1========================\"\r\n  .\/configure \\\r\n  --prefix=$OUTPUT \\\r\n  --target-os=android \\\r\n  --arch=$ARCH \\\r\n  --cpu=$CPU \\\r\n  --enable-asm \\\r\n  --enable-neon \\\r\n  --enable-cross-compile \\\r\n  --disable-shared \\\r\n  --enable-static \\\r\n  --disable-doc \\\r\n  --disable-ffplay \\\r\n  --disable-ffprobe \\\r\n  --disable-symver \\\r\n  --disable-ffmpeg \\\r\n  --sysroot=$SYSROOT \\\r\n  --cross-prefix=$CROSS_PREFIX \\\r\n  --cc=$CC \\\r\n  --cxx=$CXX \\\r\n  --extra-cflags=\"-fPIC\" \\\r\n  $ADDITIONAL_CONFIGURE_FLAG\r\n  echo \"===========================2=====================\"\r\n  make clean\r\n  echo \"=============================${CC}===============\"\r\n  make -j4\r\n  make install\r\n  $COMBILE_TOOLCHAIN_LD \\\r\n-rpath-link=$COMBILE_PLATFORM\/usr\/lib \\\r\n-L$COMBILE_PLATFORM\/usr\/lib \\\r\n-L$OUTPUT\/lib \\\r\n-soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \\\r\n$OUTPUT\/libffmpeg.so \\\r\n    libavcodec\/libavcodec.a \\\r\n    libavfilter\/libavfilter.a \\\r\n    libswresample\/libswresample.a \\\r\n    libavformat\/libavformat.a \\\r\n    libavutil\/libavutil.a \\\r\n    libavdevice\/libavdevice.a \\\r\n    libswscale\/libswscale.a \\\r\n    -lc -lm -lz -ldl -llog --dynamic-linker=\/system\/bin\/linker \\\r\n    $COMBILE_TOOLCHAIN_GCC\r\n}\r\n \r\n#arm64-v8a\r\nARCH=arm64\r\nCPU=armv8-a\r\nCPU_INSTRUCT_COMMON=aarch64-linux-android\r\nOUTPUT=\/home\/liuzihui\/softwaresCus\/ffmpegSource\/ffmpeg-4.2.2\/android\/$CPU\r\nCROSS_PREFIX=$TOOLCHAIN\/bin\/$CPU_INSTRUCT_COMMON-    #AR AS LD\u7b49\u901a\u7528\r\nCC=$TOOLCHAIN\/bin\/aarch64-linux-android$API-clang     #CC\u5355\u72ec\u6307\u5b9a\uff0c\u975e\u901a\u7528(\u56e0\u4e3andk\u4e2dCC\u4e0eAR\u8def\u5f84\u4e0d\u540c\uff0c\u540e\u540c\u7406)\r\nCXX=$TOOLCHAIN\/bin\/aarch64-linux-android$API-clang++  #CXX\u5355\u72ec\u6307\u5b9a\uff0c\u975e\u901a\u7528\r\nCOMBILE_PLATFORM=$NDK\/platforms\/android-$API\/arch-arm64 #\r\nCOMBILE_TOOLCHAIN_LD=$NDK\/toolchains\/$CPU_INSTRUCT_COMMON-4.9\/prebuilt\/linux-x86_64\/bin\/$CPU_INSTRUCT_COMMON-ld\r\nCOMBILE_TOOLCHAIN_GCC=$NDK\/toolchains\/$CPU_INSTRUCT_COMMON-4.9\/prebuilt\/linux-x86_64\/lib\/gcc\/$CPU_INSTRUCT_COMMON\/4.9.x\/libgcc.a\r\nbuild_android\r\n \r\n#armeabi-v7a\r\nARCH=arm\r\nCPU=armv7-a\r\nCPU_INSTRUCT_COMMON=arm-linux-androideabi\r\nOUTPUT=\/home\/liuzihui\/softwaresCus\/ffmpegSource\/ffmpeg-4.2.2\/android\/$CPU\r\nCROSS_PREFIX=$TOOLCHAIN\/bin\/$CPU_INSTRUCT_COMMON-       #AR AS LD\u7b49\u901a\u7528\r\nCC=$TOOLCHAIN\/bin\/armv7a-linux-androideabi$API-clang     #CC\u5355\u72ec\u6307\u5b9a\uff0c\u975e\u901a\u7528\r\nCXX=$TOOLCHAIN\/bin\/armv7a-linux-androideabi$API-clang++  #CXX\u5355\u72ec\u6307\u5b9a\uff0c\u975e\u901a\u7528\r\nCOMBILE_PLATFORM=$NDK\/platforms\/android-$API\/arch-arm\r\nCOMBILE_TOOLCHAIN_LD=$NDK\/toolchains\/$CPU_INSTRUCT_COMMON-4.9\/prebuilt\/linux-x86_64\/bin\/$CPU_INSTRUCT_COMMON-ld\r\nCOMBILE_TOOLCHAIN_GCC=$NDK\/toolchains\/$CPU_INSTRUCT_COMMON-4.9\/prebuilt\/linux-x86_64\/lib\/gcc\/$CPU_INSTRUCT_COMMON\/4.9.x\/libgcc.a\r\nbuild_android\r\n \r<\/code><\/pre>\n\n\n\n<p>\u8bf4\u660e\uff1a<\/p>\n\n\n\n<p>1\u3001\u601d\u8def\u662f\u7528 &#8211;disable-shared &#8211;enable-static \u5148\u751f\u62107\u4e2a.a\uff08\u9759\u6001\u5e93\uff09\uff0c\u7136\u540e\u518d\u5229\u7528\u811a\u672c\u5408\u5e76\u6210\u4e00\u4e2aso\uff1b<\/p>\n\n\n\n<p>2\u3001\u5728\u5408\u5e76so\u65b9\u9762\uff0c\u6211\u4eec\u5728 make install\u540e\u9762\u8ffd\u52a0\u4e86\u4e00\u4e9b\u811a\u672c\uff0c\u867d\u7136ndk17\u4ee5\u540e\u5728\u7f16\u8bd1ffmpeg.so\u4f7f\u7528clang\uff0c\u4f46\u662f\u5408\u5e76so\u8fd9\u5757\uff0c\u9002\u7528\u6027\u66f4\u5f3a\u7684gcc\u5728\u8fd9\u91cc\u6d3e\u4e0a\u4e86\u7528\u573a\u3002<\/p>\n\n\n\n<p>3\u3001-L\u6307\u5b9a\u4e86\u5408\u5e76so\u6700\u7ec8\u751f\u6210\u7684\u5730\u65b9\uff0c\u6f14\u793a\u9879\u76ee\u91cc\uff08\u5bf9\u4e8earmv8a\u67b6\u6784\u6765\u8bf4\uff09\u662f\uff1a\/home\/liuzihui\/softwaresCus\/ffmpegSource\/ffmpeg-4.2.2\/android\/armv8-a\/lib<\/p>\n\n\n\n<p><strong>\u4e8c\u3001\u6267\u884c\u811a\u672c<\/strong><\/p>\n\n\n\n<p>\u5728\u524d\u51e0\u7bc7\u6587\u7ae0\u4e2d\u7684ffmpeg-4.2.2\u6e90\u7801\u76ee\u5f55\u4e0b\uff0c\u7ec8\u7aef\u547d\u4ee4\uff1a\u8d4b\u4e88\u811a\u672c\u6743\u9650\u548c\u6267\u884c\u811a\u672c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x build_android_v8v7_comileso.sh\r\n.\/build_android_v8v7_comileso.sh<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"536\" height=\"172\" src=\"http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-7.png\" alt=\"\" class=\"wp-image-1576\" srcset=\"http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-7.png 536w, http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-7-300x96.png 300w\" sizes=\"(max-width: 536px) 100vw, 536px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"789\" height=\"220\" src=\"http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-8.png\" alt=\"\" class=\"wp-image-1577\" srcset=\"http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-8.png 789w, http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-8-300x84.png 300w, http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-8-768x214.png 768w, http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-8-600x167.png 600w\" sizes=\"(max-width: 789px) 100vw, 789px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"758\" height=\"302\" src=\"http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-9.png\" alt=\"\" class=\"wp-image-1578\" srcset=\"http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-9.png 758w, http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-9-300x120.png 300w, http:\/\/www.recologypower.com:9080\/wp-content\/uploads\/2024\/09\/image-9-600x239.png 600w\" sizes=\"(max-width: 758px) 100vw, 758px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<div class=\"slide-text-bg2\">\n<h3>\u524d\u8a00\uff1a\u5728\u524d\u51e0\u7bc7\u6587\u7ae0\u5df2\u7ecf\u4ecb\u7ecd\u4e86\uff0c\u5982\u4f55\u8fdb\u884c\u7f16<\/h3>\n<\/div>\n<div class=\"flex-btn-div\"><a href=\"http:\/\/www.recologypower.com:9080\/?p=1575\" class=\"btn1 flex-btn\">\u9605\u8bfb\u66f4\u591a<\/a><\/div>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[154],"tags":[],"_links":{"self":[{"href":"http:\/\/www.recologypower.com:9080\/index.php?rest_route=\/wp\/v2\/posts\/1575"}],"collection":[{"href":"http:\/\/www.recologypower.com:9080\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.recologypower.com:9080\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.recologypower.com:9080\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.recologypower.com:9080\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1575"}],"version-history":[{"count":1,"href":"http:\/\/www.recologypower.com:9080\/index.php?rest_route=\/wp\/v2\/posts\/1575\/revisions"}],"predecessor-version":[{"id":1579,"href":"http:\/\/www.recologypower.com:9080\/index.php?rest_route=\/wp\/v2\/posts\/1575\/revisions\/1579"}],"wp:attachment":[{"href":"http:\/\/www.recologypower.com:9080\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1575"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.recologypower.com:9080\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1575"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.recologypower.com:9080\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}