{"id":54973,"date":"2026-09-22T12:32:19","date_gmt":"2026-09-22T04:32:19","guid":{"rendered":"https:\/\/www.zhidianwl.com\/zhidian\/?p=54973"},"modified":"2026-09-22T12:32:19","modified_gmt":"2026-09-22T04:32:19","slug":"ios%e6%89%93%e5%8c%85ffmpeg%e6%b3%a8%e6%84%8f%e4%bb%80%e4%b9%88%e5%91%a2%ef%bc%9f","status":"publish","type":"post","link":"https:\/\/www.zhidianwl.com\/zhidian\/2026\/54973\/","title":{"rendered":"ios\u6253\u5305ffmpeg\u6ce8\u610f\u4ec0\u4e48\u5462\uff1f"},"content":{"rendered":"<p><a href=\"https:\/\/www.applebyme.ltd\/ios-dabao-1148.html\">ios\u6253\u5305\u652f\u6301swift<\/a>          <\/p>\n<p>\u5728iOS\u5e73\u53f0\u4e0a\u4f7f\u7528FFmpeg\u8fdb\u884c\u89c6\u9891\u7f16\u89e3\u7801\u662f\u4e00\u9879\u5e38\u89c1\u7684\u9700\u6c42\u3002\u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u5728iOS\u4e2d\u6253\u5305FFmpeg\uff0c\u5e76\u89e3\u91ca\u8be5\u8fc7\u7a0b\u7684\u539f\u7406\u3002<\/p>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u9700\u8981\u4e86\u89e3\u4e00\u4e9b\u57fa\u672c\u77e5\u8bc6\u3002FF<\/p>\n<p><figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn.myapp.ltd\/ag\/100\/ios\/87.jpg\" \/><\/figure>\n<\/p>\n<p>mpeg\u662f\u4e00\u4e2a\u5f00\u6e90\u7684\u591a\u5a92\u4f53\u6846\u67b6\uff0c\u53ef\u4ee5\u7528\u4e8e\u5904\u7406\u97f3\u9891\u548c\u89c6\u9891\uff0c\u5305\u62ec\u89e3\u7801\u3001\u7f16\u7801\u3001\u5904\u7406\u548c\u6d41\u5a92\u4f53\u7b49\u3002\u5b83\u63d0\u4f9b\u4e86\u4e00\u7ec4\u8de8\u5e73\u53f0\u7684\u5de5\u5177\u548c\u5e93\uff0c\u53ef\u4ee5\u5728\u5404\u79cd\u5e73\u53f0\u4e0a\u5b9e\u73b0\u97f3\u89c6\u9891\u76f8\u5173\u7684\u529f\u80fd\u3002\u5728iOS\u4e0a\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06FFmpeg\u96c6\u6210\u5230\u6211\u4eec\u7684\u9879\u76ee\u4e2d\uff0c\u4ee5\u5b9e\u73b0\u89c6\u9891\u7f16\u89e3\u7801\u7684\u529f\u80fd\u3002<\/p>\n<p>\u4e0b\u9762\u662f\u6253\u5305FFmpeg\u7684\u6b65\u9aa4\uff1a<\/p>\n<p>\u6b65\u9aa41\uff1a\u4e0b\u8f7dFFmpeg\u6e90\u7801<\/p>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u9700\u8981\u4eceFFmpeg\u7684\u5b98\u65b9\u7f51\u7ad9\uff08https:\/\/www.ffmpeg.org\/\uff09\u4e0b\u8f7d\u6700\u65b0\u7248\u672c\u7684\u6e90\u7801\u3002\u89e3\u538b\u7f29\u4e0b\u8f7d\u7684\u538b\u7f29\u6587\u4ef6\uff0c\u5e76\u5c06\u5176\u653e\u7f6e\u5728\u4e00\u4e2a\u9002\u5f53\u7684\u4f4d\u7f6e\u3002\u5728\u672c\u4f8b\u4e2d\uff0c\u6211\u4eec\u5c06\u6e90\u7801\u653e\u5728\u540d\u4e3a\u201cFFmpeg\u201d\u7684\u6587\u4ef6\u5939\u4e2d\u3002<\/p>\n<p>\u6b65\u9aa42\uff1a\u521b\u5efaXcode\u9879\u76ee<\/p>\n<p>\u5728Xcode\u4e2d\u521b\u5efa\u4e00\u4e2a\u65b0\u7684iOS\u9879\u76ee\u3002\u9009\u62e9\u201cSingle View App\u201d\u6a21\u677f\uff0c\u5e76\u8bbe\u7f6e\u76f8\u5173\u9009\u9879\uff0c\u5982\u9879\u76ee\u540d\u79f0\u3001\u7ec4\u7ec7\u6807\u8bc6\u7b26\u7b49\u3002<\/p>\n<p>\u6b65\u9aa43\uff1a\u96c6\u6210FFmpeg<\/p>\n<p>\u5728\u6211\u4eec\u7684Xcode\u9879\u76ee\u4e2d\uff0c\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a\u201cffmpeg\u201d\u7684\u6587\u4ef6\u5939\uff0c\u5e76\u5c06\u4ece\u6e90\u7801\u4e2d\u63d0\u53d6\u7684\u5305\u542b\u5934\u6587\u4ef6\u7684\u6587\u4ef6\u5939\uff08\u540d\u4e3a\u201cinclude\u201d\uff09\u62f7\u8d1d\u5230\u6b64\u6587\u4ef6\u5939\u4e2d\u3002<\/p>\n<p>\u7136\u540e\uff0c\u5c06\u6e90\u7801\u4e2d\u7684\u5e93\u6587\u4ef6\uff08\u540d\u4e3a\u201clibavcodec.a\u201d\u3001\u201clibavformat.a\u201d\u7b49\uff09\u62f7\u8d1d\u5230\u6211\u4eec\u7684Xcode\u9879\u76ee\u4e2d\u3002\u6211\u4eec\u53ef\u4ee5\u5c06\u8fd9\u4e9b\u6587\u4ef6\u76f4\u63a5\u62d6\u653e\u5230\u9879\u76ee\u5bfc\u822a\u5668\u4e2d\u7684\u201cFrameworks\u201d\u7ec4\u4e2d\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u9700\u8981\u5728\u9879\u76ee\u7684Build Settings\u4e2d\u6dfb\u52a0\u5e93\u641c\u7d22\u8def\u5f84\u3002\u5728\u201cLibrary Search Paths\u201d\u4e2d\uff0c\u6dfb\u52a0\u201c$(PROJECT_DIR)\/ffmpeg\u201d\u8def\u5f84\u3002<\/p>\n<p>\u6700\u540e\uff0c\u6211\u4eec\u9700\u8981\u6dfb\u52a0FFmpeg\u7684\u5934\u6587\u4ef6\u641c\u7d22\u8def\u5f84\u3002\u5728\u201cHeader Search Paths\u201d\u4e2d\uff0c\u6dfb\u52a0\u201c$(PROJECT_DIR)\/ffmpeg\/include\u201d\u8def\u5f84\u3002<\/p>\n<p>\u6b65\u9aa44\uff1a\u914d\u7f6e\u7f16\u8bd1\u9009\u9879<\/p>\n<p>\u6253\u5f00\u9879\u76ee\u7684Build Phases\u8bbe\u7f6e\u9875\u9762\uff0c\u5c55\u5f00\u201cLink Binary With Libraries\u201d\u9009\u9879\u5361\uff0c\u5e76\u70b9\u51fb\u201c+\u201d\u6309\u94ae\u3002\u7136\u540e\u9009\u62e9FFmpeg\u6e90\u7801\u6587\u4ef6\u5939\u4e2d\u7684\u5e93\u6587\u4ef6\uff0c\u4ee5\u6dfb\u52a0\u5b83\u4eec\u5230\u6211\u4eec\u7684\u9879\u76ee\u4e2d\u3002<\/p>\n<p>\u6b65\u9aa45\uff1a\u5bfc\u5165FFmpeg\u5934\u6587\u4ef6<\/p>\n<p>\u4e3a\u4e86\u5728\u6211\u4eec\u7684\u4ee3\u7801\u4e2d\u4f7f\u7528FFmpeg\u7684\u529f\u80fd\uff0c\u6211\u4eec\u9700\u8981\u5bfc\u5165\u76f8\u5173\u7684\u5934\u6587\u4ef6\u3002\u6211\u4eec\u53ef\u4ee5\u5728\u9700\u8981\u7684\u5730\u65b9\u4f7f\u7528\u4ee5\u4e0b\u65b9\u5f0f\u5bfc\u5165\u5934\u6587\u4ef6\uff1a<\/p>\n<p>&#8220;`objc<\/p>\n<p>#include &#8220;libavcodec\/avcodec.h&#8221;<\/p>\n<p>#include &#8220;libavformat\/avformat.h&#8221;<\/p>\n<p>#include &#8220;libswscale\/swscale.h&#8221;<\/p>\n<p>&#8220;`<\/p>\n<p>\u6b65\u9aa46\uff1a\u4f7f\u7528FFmpeg<\/p>\n<p>\u73b0\u5728\uff0c\u6211\u4eec\u5df2\u7ecf\u6210\u529f\u5730\u5c06FFmpeg\u96c6\u6210\u5230\u6211\u4eec\u7684iOS\u9879\u76ee\u4e2d\uff0c\u5e76\u53ef\u4ee5\u4f7f\u7528\u5176\u529f\u80fd\u4e86\u3002\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528FFmpeg\u7684API\u6765\u5b9e\u73b0\u5404\u79cd\u97f3\u89c6\u9891\u76f8\u5173\u7684\u64cd\u4f5c\uff0c\u5982\u89e3\u7801\u3001\u7f16\u7801\u3001\u5904\u7406\u548c\u6d41\u5a92\u4f53\u7b49\u3002<\/p>\n<p>\u4f8b\u5982\uff0c\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\u4ee3\u7801\uff0c\u7528\u4e8e\u5c06\u89c6\u9891\u6587\u4ef6\u89e3\u7801\u4e3a\u539f\u59cb\u7684YUV\u50cf\u7d20\u6570\u636e\uff1a<\/p>\n<p>&#8220;`objc<\/p>\n<p>AVFormatContext *formatContext = avformat_alloc_context();<\/p>\n<p>avformat_open_input(&amp;formatContext, &#8220;input.mp4&#8221;, NULL, NULL);<\/p>\n<p>avformat_find_stream_info(formatContext, NULL);<\/p>\n<p>int videoStream = -1;<\/p>\n<p>for (int i = 0; i nb_streams; i++) {<\/p>\n<p>    if (formatContext-&gt;streams[i]-&gt;codecpar-&gt;codec_type == AVMEDIA_TYPE_VIDEO) {<\/p>\n<p>        videoStream = i;<\/p>\n<p>        break;<\/p>\n<p>    }<\/p>\n<p>}<\/p>\n<p>AVCodecParameters *codecParameters = formatContext-&gt;streams[videoStream]-&gt;codecpar;<\/p>\n<p>AVCodec *codec = avcodec_find_decoder(codecParameters-&gt;codec_id);<\/p>\n<p>AVCodecContext *codecContext = avcodec_alloc_context3(codec);<\/p>\n<p>avcodec_parameters_to_context(codecContext, codecParameters);<a href=\"https:\/\/www.applebyme.ltd\/ios-dabao-1019.html\">ios\u6253\u5305\u65f6\u9047\u5230\u7684has<\/a><\/p>\n<p>avcodec_open2(codecContext, codec, NULL);<\/p>\n<p>AVPacket *packet = av_packet_alloc();<\/p>\n<p>AVFrame *frame = av_frame_alloc();<\/p>\n<p>while (av_read_frame(formatContext, packet) &gt;= 0) {<\/p>\n<p>    if (packet-&gt;stream_index == videoStream) {<\/p>\n<p>        avcodec_send_packet(codecContext, packet);<\/p>\n<p>        avcodec_receive_frame(codecContext, frame);<\/p>\n<p>        \/\/ \u5728\u8fd9\u91cc\u5904\u7406YUV\u50cf\u7d20\u6570\u636e<\/p>\n<p>    }<\/p>\n<p>    av_packet_unref(packet);<\/p>\n<p>}<\/p>\n<p>av_frame_free(&amp;frame);<\/p>\n<p>av_packet_free(&amp;packet);<\/p>\n<p>avcodec_free_context(&amp;codecContext);<\/p>\n<p>avformat_close_input(&amp;formatContext);<\/p>\n<p>&#8220;`<\/p>\n<p>\u4ee5\u4e0a\u662f\u4f7f\u7528FFmpeg\u8fdb\u884c\u89c6\u9891\u89e3\u7801\u7684\u4e00\u4e2a\u7b80\u5355\u793a\u4f8b\u3002\u901a\u8fc7\u8c03\u7528\u76f8\u5e94\u7684API\u51fd\u6570\uff0c\u6211\u4eec\u53ef\u4ee5\u6839\u636e\u9700\u8981\u5b9e\u73b0\u5404\u79cd\u529f\u80fd\u3002<\/p>\n<p>\u603b\u7ed3\uff1a<\/p>\n<p>\u672c\u6587\u4ecb\u7ecd\u4e86\u5728iOS\u4e2d\u6253\u5305FFmpeg\u7684\u6b65\u9aa4\u548c\u539f\u7406\u3002\u901a\u8fc7\u96c6\u6210FFmpeg\uff0c\u5e76\u4f7f\u7528\u5176\u63d0\u4f9b\u7684API\u51fd\u6570\uff0c\u6211\u4eec\u53ef\u4ee5\u5728iOS\u9879\u76ee\u4e2d\u5b9e\u73b0\u4e30\u5bcc\u7684\u97f3\u89c6\u9891\u76f8\u5173\u529f\u80fd\u3002\u4ece\u89e3\u7801\u89c6\u9891\u5230\u7f16\u7801\u97f3\u9891\uff0cFFmpeg\u4e3a\u6211\u4eec\u63d0\u4f9b\u4e86\u4e00\u6574\u5957\u529f\u80fd\u5f3a\u5927\u7684\u5de5\u5177\u548c\u5e93\u3002\u5e0c\u671b\u8fd9\u7bc7\u6587\u7ae0\u5bf9\u4f60\u6709\u6240\u5e2e\u52a9\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728iOS\u5e73\u53f0\u4e0a\u4f7f\u7528FFmpeg\u8fdb\u884c\u89c6\u9891\u7f16\u89e3\u7801\u662f\u4e00\u9879\u5e38\u89c1\u7684\u9700\u6c42\u3002\u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u5728iOS\u4e2d\u6253\u5305FFmpeg\uff0c\u5e76\u89e3\u91ca\u8be5\u8fc7\u7a0b\u7684\u539f\u7406\u3002\u9996\u5148\uff0c\u6211\u4eec\u9700\u8981\u4e86\u89e3\u4e00\u4e9b\u57fa\u672c\u77e5\u8bc6\u3002FFmpeg\u662f\u4e00\u4e2a\u5f00\u6e90\u7684\u591a\u5a92\u4f53\u6846\u67b6\uff0c\u53ef\u4ee5\u7528<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[15989,41569,301,1066,322],"class_list":["post-54973","post","type-post","status-publish","format-standard","hentry","category-zuoapp","tag-ios","tag-vue-ios","tag-301","tag-1066","tag-322"],"_links":{"self":[{"href":"https:\/\/www.zhidianwl.com\/zhidian\/wp-json\/wp\/v2\/posts\/54973","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhidianwl.com\/zhidian\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zhidianwl.com\/zhidian\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhidianwl.com\/zhidian\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zhidianwl.com\/zhidian\/wp-json\/wp\/v2\/comments?post=54973"}],"version-history":[{"count":1,"href":"https:\/\/www.zhidianwl.com\/zhidian\/wp-json\/wp\/v2\/posts\/54973\/revisions"}],"predecessor-version":[{"id":55002,"href":"https:\/\/www.zhidianwl.com\/zhidian\/wp-json\/wp\/v2\/posts\/54973\/revisions\/55002"}],"wp:attachment":[{"href":"https:\/\/www.zhidianwl.com\/zhidian\/wp-json\/wp\/v2\/media?parent=54973"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zhidianwl.com\/zhidian\/wp-json\/wp\/v2\/categories?post=54973"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhidianwl.com\/zhidian\/wp-json\/wp\/v2\/tags?post=54973"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}