{
  "version": "https://jsonfeed.org/version/1", 
  "title": "FFmpeg", 
  "description": "\u4e00\u4e2a\u5b8c\u6574\u7684\uff0c\u8de8\u5e73\u53f0\u7684\u97f3\u89c6\u9891\u5f55\u5236\u3001\u8f6c\u6362\u548c\u4f20\u8f93\u89e3\u51b3\u65b9\u6848", 
  "home_page_url": "https://www.v2ex.com/go/ffmpeg", 
  "feed_url": "https://www.v2ex.com/feed/ffmpeg.json", 
  "icon": "https://cdn.v2ex.com/navatar/e205/ee2a/910_large.png?m=1589098075", 
  "favicon": "https://cdn.v2ex.com/navatar/e205/ee2a/910_normal.png?m=1589098075", 
  "items": [
    {
      "author": {
        "url": "https://www.v2ex.com/member/FH0", 
        "name": "FH0", 
        "avatar": "https://cdn.v2ex.com/gravatar/e5ca2f9f97e7a7fe504c074376438957?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1201015", 
      "date_modified": "2026-03-25T06:53:46+00:00", 
      "content_html": "<p>\u4eca\u5929\u7a81\u53d1\u5947\u60f3\u7528 gpt-5.4-xhigh \u5206\u6790\u4e86\u4e00\u4e0b\uff0c\u539f\u6765\u662f\u6ca1\u6709\u52a0\u4e0a AVFMT_FLAG_NOPARSE \u8fd9\u4e2a\u6807\u5fd7\u4f4d\uff0c\u6240\u4ee5 ffmpeg \u9ed8\u8ba4\u9700\u8981\u7b49\u5f85\u4e0b\u4e00\u5e27\u7684\u8d77\u59cb\u7801\u3002</p>\n<p>\u73b0\u5728\u5b9e\u65f6\u6027\u6ca1\u95ee\u9898\u4e86\uff0c\u6211\u5df2\u7ecf\u628a\u9879\u76ee\u4e2d\u81ea\u5df1\u7684\u534f\u8bae\u5220\u6389\u4e86\u3002\u539f\u6765\u4e0d\u662f\u6211\u89e3\u51b3\u4e86\u4e00\u4e2a\u5927\u96be\u9898\uff0c\u800c\u662f ffmpeg \u65e9\u5df2\u5b89\u6392\u597d\u7684\u4e00\u5207\u88ab\u6211\u5ffd\u89c6\u4e86\u3002</p>\n<p><a href=\"https://www.v2ex.com/t/1167069\" rel=\"nofollow\">https://www.v2ex.com/t/1167069</a></p>\n", 
      "date_published": "2026-03-25T06:52:49+00:00", 
      "title": "[FFmpeg \u7684\u5b9e\u65f6\u6027\u592a\u7cdf\u7cd5\u4e86] \u540e\u7eed", 
      "id": "https://www.v2ex.com/t/1201015"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/yoyoluck", 
        "name": "yoyoluck", 
        "avatar": "https://cdn.v2ex.com/avatar/2e9c/cfa5/631565_large.png?m=1765964412"
      }, 
      "url": "https://www.v2ex.com/t/1179557", 
      "date_modified": "2025-12-17T11:26:46+00:00", 
      "content_html": "<p>\u6709\u670b\u53cb\u641e\u8fc7 ffmpeg qsv \u786c\u4ef6\u7f16\u7801\u5417\uff1f\n\u6700\u8fd1\u6709\u4e00\u4e2a\u4efb\u52a1\uff0c\u9700\u8981\u5c06\u97f3\u89c6\u9891\u7ecf\u8fc7 ffmpeg \u5e93\u7f16\u7801\u6210 h264/h265 \u4e4b\u540e\u9001\u5230\u6d77\u5eb7\u7684\u786c\u76d8\u5f55\u50cf\u673a\n\u76ee\u524d\u9047\u5230\u95ee\u9898\u662f \u4f7f\u7528 libx264 \u8f6f\u7f16\u7801\u7684\u6570\u636e\u901a\u8fc7 rtsp \u9001\u5230\u6d77\u5eb7\u5f55\u50cf\u673a\u80fd\u6b63\u5e38\u663e\u793a\n\u901a\u8fc7 intel \u7684 qsv \u786c\u4ef6\u7f16\u7801\u7684 h264/h265 \u7b49\u9001\u5230\u6d77\u5eb7\u5f55\u50cf\u673a\u53ea\u80fd\u663e\u793a\u51fa\u5173\u952e\u5e27\uff0c\u5176\u4ed6 P \u5e27\u65e0\u6cd5\u663e\u793a\uff08\u6ca1\u6709 B \u5e27\uff09\uff0c\u901a\u8fc7\u82f1\u4f1f\u8fbe\u663e\u5361\u786c\u4ef6\u7f16\u7801\u7684 h264/h265 \u9001\u5230\u6d77\u5eb7\u80fd\u6b63\u5e38\u663e\u793a\u3002\n\u4ee5\u4e0a\u6240\u6709\u7f16\u7801\u540e\u7684\u6570\u636e\u90fd\u662f\u901a\u8fc7 rtsp \u670d\u52a1\u63a8\u9001\u7684\uff0c\u6240\u6709\u7684\u5728 vlc \u7b49\u64ad\u653e\u5668\u4e0a\u90fd\u80fd\u6b63\u5e38\u663e\u793a\u3002\n\u76ee\u524d\u5927\u90e8\u5206\u90fd\u662f\u6838\u663e\uff0c\u6240\u4ee5\u60f3\u89e3\u51b3 qsv \u786c\u4ef6\u7f16\u7801\u95ee\u9898\n\u4e0b\u9762\u662f\u90e8\u5206\u521d\u59cb\u5316\u4ee3\u7801\uff0c\u6709\u507f\u534f\u52a9</p>\n<pre><code class=\"language-c++\">    // \u67e5\u627e\u7f16\u7801\u5668\uff08\u652f\u6301\u786c\u4ef6\u7f16\u7801\uff09\n    video_codec_ = FindBestEncoder(config_.use_hardware_encoding);\n    // \u68c0\u67e5\u662f\u5426\u4f7f\u7528\u4e86\u786c\u4ef6\u7f16\u7801\u5668\n    video_using_hardware_ = (strcmp(video_codec_-&gt;name, \"libx264\") != 0 &amp;&amp; strcmp(video_codec_-&gt;name, \"libx265\") != 0);\n    // \u521b\u5efa\u7f16\u7801\u5668\u4e0a\u4e0b\u6587\n    video_codec_ctx_ = avcodec_alloc_context3(video_codec_);\n    // \u8bbe\u7f6e\u7f16\u7801\u53c2\u6570\n    video_codec_ctx_-&gt;width = config_.width;\n    video_codec_ctx_-&gt;height = config_.height;\n    video_codec_ctx_-&gt;time_base.num = 1;\n    video_codec_ctx_-&gt;time_base.den = config_.fps;\n    video_codec_ctx_-&gt;framerate.num = config_.fps;\n    video_codec_ctx_-&gt;framerate.den = 1;\n    video_codec_ctx_-&gt;bit_rate = config_.bitrate;\n    video_codec_ctx_-&gt;gop_size = config_.fps * 3; // \u6bcf 3 \u79d2\u4e00\u4e2a\u5173\u952e\u5e27\n    video_codec_ctx_-&gt;has_b_frames = 0;\n    video_codec_ctx_-&gt;max_b_frames = 0;\n    video_codec_ctx_-&gt;refs = 1;\n\n    // \u6839\u636e\u7f16\u7801\u5668\u7c7b\u578b\u8bbe\u7f6e\u50cf\u7d20\u683c\u5f0f\n    if (video_using_hardware_)\n    {\n        // \u786c\u4ef6\u7f16\u7801\u5668\u4f7f\u7528 NV12 \u683c\u5f0f\uff08 QSV \u3001NVENC \u3001AMF \u90fd\u652f\u6301\uff09\n        video_codec_ctx_-&gt;pix_fmt = AV_PIX_FMT_NV12;\n    }\n    else\n    {\n        // \u8f6f\u4ef6\u7f16\u7801\u5668\u4f7f\u7528 YUV420P\n        video_codec_ctx_-&gt;pix_fmt = AV_PIX_FMT_YUV420P;\n    }\n\n    video_codec_ctx_-&gt;flags = AV_CODEC_FLAG_LOW_DELAY | AV_CODEC_FLAG_GLOBAL_HEADER;\n    video_codec_ctx_-&gt;rc_buffer_size = config_.bitrate; // \u7f13\u51b2\u533a\u5927\u5c0f\u7b49\u4e8e\u7801\u7387\n    video_codec_ctx_-&gt;rc_max_rate = config_.bitrate; // \u6700\u5927\u7801\u7387\n    video_codec_ctx_-&gt;rc_min_rate = config_.bitrate/5; // \u6700\u5c0f\u7801\u7387\n\n    if (!video_using_hardware_)\n    {\n        // \u8f6f\u4ef6\u7f16\u7801\u5668\u7279\u5b9a\u53c2\u6570\n        video_codec_ctx_-&gt;thread_count = 4;\n        if (strcmp(video_codec_-&gt;name, \"libx264\") == 0)\n        {\n            // libx264 \u7279\u5b9a\u9009\u9879\n            if (!config_.preset.isEmpty())\n            {\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"preset\", config_.preset.toStdString().c_str(), 0);\n            }\n\n            if (!config_.tune.isEmpty())\n            {\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"tune\", config_.tune.toStdString().c_str(), 0);\n            }\n\n            if (!config_.profile.isEmpty())\n            {\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"profile\", config_.profile.toStdString().c_str(), 0);\n            }\n\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"x264opts\", \"bframes=0:rc-lookahead=0:scenecut=0\", 0);\n        }\n        else if (strcmp(video_codec_-&gt;name, \"libx265\") == 0)\n        {\n            // libx265 \u7279\u5b9a\u9009\u9879\n            if (!config_.preset.isEmpty())\n            {\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"preset\", config_.preset.toStdString().c_str(), 0);\n            }\n\n            if (!config_.tune.isEmpty())\n            {\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"tune\", config_.tune.toStdString().c_str(), 0);\n            }\n\n            // H.265 \u7684 profile: main, main10, main-intra \u7b49\n            if (!config_.profile.isEmpty())\n            {\n                QString profile_to_use = config_.profile;\n\n                // \u68c0\u67e5 profile \u662f\u5426\u4e0e H.265 \u517c\u5bb9\n                // H.264 \u7684 profile (baseline, high) \u4e0d\u80fd\u7528\u4e8e H.265\n                if (profile_to_use == \"baseline\" || profile_to_use == \"high\")\n                {\n                    profile_to_use = \"main\";  // H.265 \u7684\u9ed8\u8ba4 profile\n                    LOG(WARNING) &lt;&lt; \"H.265 \u4e0d\u652f\u6301 profile \\\"\" &lt;&lt; config_.profile.toStdString()\n                                 &lt;&lt; \"\\\", \u5df2\u81ea\u52a8\u8c03\u6574\u4e3a \\\"main\\\"\";\n                }\n\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"profile\", profile_to_use.toStdString().c_str(), 0);\n            }\n\n            // H.265 \u4f4e\u5ef6\u8fdf\u53c2\u6570\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"x265-params\",\n                       \"bframes=0:rc-lookahead=0:scenecut=0:aq-mode=0\", 0);\n        }\n    }\n    else\n    {\n        // \u786c\u4ef6\u7f16\u7801\u5668\u7279\u5b9a\u53c2\u6570\n        const char* codec_name = video_codec_-&gt;name;\n\n        if (strcmp(codec_name, \"h264_qsv\") == 0 || strcmp(codec_name, \"hevc_qsv\") == 0)\n        {\n            // Intel QSV \u7f16\u7801\u5668\u53c2\u6570\n            // QSV \u7684 preset \u503c: veryfast, faster, fast, medium, slow, slower, veryslow\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"preset\", \"veryfast\", 0);\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"async_depth\", \"1\", 0); // \u4f4e\u5ef6\u8fdf\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"look_ahead\", \"0\", 0);  // \u5173\u95ed\u524d\u77bb\n\n            // H.264 \u4e13\u7528\uff1a\u6dfb\u52a0\u4e25\u683c\u7684\u517c\u5bb9\u6027\u53c2\u6570\u4ee5\u89e3\u51b3\u6d77\u5eb7\u5f55\u50cf\u673a\u64ad\u653e\u95ee\u9898\n            if (strcmp(codec_name, \"h264_qsv\") == 0)\n            {\n                // \u5f3a\u5236\u4f7f\u7528 baseline profile \uff08\u5982\u679c\u914d\u7f6e\u4e2d\u6307\u5b9a\u4e86\uff09\n                if (!config_.profile.isEmpty())\n                {\n                    av_opt_set(video_codec_ctx_-&gt;priv_data, \"profile\", config_.profile.toStdString().c_str(), 0);\n                }\n\n                // \u5f3a\u5236 CAVLC \u71b5\u7f16\u7801\uff08 baseline profile \u5fc5\u9700\uff0cH.264 \u6807\u51c6\uff09\n                // QSV \u9ed8\u8ba4\u53ef\u80fd\u4f7f\u7528 CABAC \uff0c\u8fd9\u4f1a\u5bfc\u81f4\u4e0d\u517c\u5bb9 baseline profile\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"cavlc\", \"1\", 0);\n\n                // \u8bbe\u7f6e H.264 level \uff08 40 = level 4.0 \uff0c\u652f\u6301 1080p@30fps \uff09\n                // \u4e0e NVENC \u4fdd\u6301\u4e00\u81f4\uff0c\u63d0\u9ad8\u517c\u5bb9\u6027\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"level\", \"40\", 0);\n\n                // \u7981\u7528 B \u5e27\u7b56\u7565\uff08\u786e\u4fdd\u771f\u6b63\u4e0d\u4f7f\u7528 B \u5e27\uff09\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"b_strategy\", \"0\", 0);\n\n                // \u7981\u7528\u81ea\u9002\u5e94 I \u5e27\u548c B \u5e27\uff08\u63d0\u9ad8 GOP \u7ed3\u6784\u7684\u4e00\u81f4\u6027\uff09\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"adaptive_i\", \"0\", 0);\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"adaptive_b\", \"0\", 0);\n\n                // \u4e25\u683c\u7684 GOP \u7ed3\u6784\uff08\u4e0d\u5141\u8bb8\u52a8\u6001\u8c03\u6574\u5173\u952e\u5e27\u4f4d\u7f6e\uff09\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"strict_gop\", \"1\", 0);\n\n                // \u4f4e\u5ef6\u8fdf\u6a21\u5f0f\uff08\u7c7b\u4f3c NVENC \u7684 zerolatency \uff09\n                av_opt_set(video_codec_ctx_-&gt;priv_data, \"low_delay_brc\", \"1\", 0);\n\n                LOG(INFO) &lt;&lt; \"Intel QSV H.264 \u7f16\u7801\u5668\uff1a\u5df2\u542f\u7528\u6d77\u5eb7\u5f55\u50cf\u673a\u517c\u5bb9\u6a21\u5f0f\uff08 baseline+CAVLC+level4.0 \uff09\";\n            }\n        }\n        else if (strcmp(codec_name, \"h264_nvenc\") == 0 || strcmp(codec_name, \"hevc_nvenc\") == 0)\n        {\n            // NVIDIA NVENC \u7f16\u7801\u5668\u53c2\u6570\n            // NVENC \u7684 preset: default, slow, medium, fast, hp, hq, bd, ll, llhq, llhp, lossless, losslesshp\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"preset\", \"llhp\", 0);  // \u4f4e\u5ef6\u8fdf\u9ad8\u6027\u80fd\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"zerolatency\", \"1\", 0);\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"delay\", \"0\", 0);\n        }\n        else if (strcmp(codec_name, \"h264_amf\") == 0 || strcmp(codec_name, \"hevc_amf\") == 0)\n        {\n            // AMD AMF \u7f16\u7801\u5668\u53c2\u6570\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"usage\", \"lowlatency\", 0);\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"quality\", \"speed\", 0);\n        }\n        else if (strcmp(codec_name, \"h264_mf\") == 0)\n        {\n            // Windows Media Foundation \u7f16\u7801\u5668\u53c2\u6570\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"rate_control\", \"cbr\", 0);\n        }\n\n        // NVENC \u7684 profile \u8bbe\u7f6e\uff08 QSV \u5df2\u5728\u4e0a\u9762\u5355\u72ec\u8bbe\u7f6e\uff09\n        if (!config_.profile.isEmpty() &amp;&amp; strcmp(codec_name, \"h264_nvenc\") == 0)\n        {\n            // NVENC \u652f\u6301\u6807\u51c6 H.264 profiles: baseline, main, high\n            av_opt_set(video_codec_ctx_-&gt;priv_data, \"profile\", config_.profile.toStdString().c_str(), 0);\n        }\n    }\n\n    // \u521d\u59cb\u5316\u786c\u4ef6\u52a0\u901f\u4e0a\u4e0b\u6587\uff08\u5982\u679c\u4f7f\u7528\u786c\u4ef6\u7f16\u7801\uff09\n    if (!InitializeHardwareContext())\n    {\n        LOG(ERROR) &lt;&lt; \"\u786c\u4ef6\u52a0\u901f\u4e0a\u4e0b\u6587\u521d\u59cb\u5316\u5931\u8d25\";\n        return false;\n    }\n\n    // \u6253\u5f00\u7f16\u7801\u5668\n    int ret = avcodec_open2(video_codec_ctx_, video_codec_, nullptr);\n    if (ret &lt; 0)\n    {\n        char errbuf[AV_ERROR_MAX_STRING_SIZE];\n        av_strerror(ret, errbuf, sizeof(errbuf));\n        LOG(ERROR) &lt;&lt; \"\u65e0\u6cd5\u6253\u5f00\u7f16\u7801\u5668: \" &lt;&lt; errbuf;\n        return false;\n    }\n</code></pre>\n", 
      "date_published": "2025-12-17T09:43:56+00:00", 
      "title": "intel qsv ffmpeg \u7f16\u7801\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1179557"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/FH0", 
        "name": "FH0", 
        "avatar": "https://cdn.v2ex.com/gravatar/e5ca2f9f97e7a7fe504c074376438957?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1167069", 
      "date_modified": "2025-10-21T00:26:55+00:00", 
      "content_html": "<p>\u5728\u7528 FFmpeg RTP \u4f20\u8f93 H.264 \uff0c\u672c\u6765\u60f3\u7740\u53d1\u4e00\u4e2a\u5e27\u5c31\u80fd\u6536\u5230\u4e00\u4e2a\u5e27\uff0c\u4f46\u6d4b\u8bd5\u8001\u662f\u53cd\u9988\u5ef6\u8fdf\u9ad8\uff0c\u6211\u5c31\u81ea\u5df1\u6d4b\u8bd5\u4e86\u4e00\u4e0b\u3002</p>\n<p>\u7ed3\u679c\u53d1\u73b0\u8981\u63a5\u6536 n \u4e2a\u5e27\uff0c\u5fc5\u987b\u53d1\u9001 n + 2 \u4e2a\u5e27\uff0c\u96be\u9876\u3002\u4e0b\u9762\u7684\u4f8b\u5b50\u4e4b\u6240\u4ee5\u80fd\u6536\u5230\u4e24\u4e2a\u662f\u56e0\u4e3a\u7b2c\u4e8c\u4e2a\u8d85\u65f6\u4e86\uff0c\u6211\u4e5f\u4e0d\u61c2\u4e3a\u4ec0\u4e48\u8d85\u65f6\u5c31\u80fd\u6536\u5230\u7b2c\u4e8c\u4e2a\u5305\u3002</p>\n<p>\u770b\u6765\u5f97\u53c2\u8003 RTP \u81ea\u5df1\u9020\u8f6e\u5b50\u4e86\u3002</p>\n<pre><code>10-20 16:27:34.582 I sdp: v=0\no=- 0 0 IN IP4 127.0.0.1\ns=No Name\nc=IN IP4 239.0.0.1\nt=0 0\na=tool:libavformat 61.1.100\nm=video 16384 RTP/AVP 96\na=rtpmap:96 H264/90000\na=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAHqzZQKAv+XARAAADAAEAAAMAMg8WLZY=,aOvjyyLA; profile-level-id=64001E\n\n10-20 16:27:34.583 I send packet, pts: 0\n10-20 16:27:34.600 I send packet, pts: 16666\n10-20 16:27:34.617 I send packet, pts: 33332\n10-20 16:27:34.617 I pkt pts: -9223372036854775808\n10-20 16:27:44.629 I pkt pts: 1500\n</code></pre>\n", 
      "date_published": "2025-10-20T08:35:08+00:00", 
      "title": "FFmpeg \u7684\u5b9e\u65f6\u6027\u592a\u7cdf\u7cd5\u4e86", 
      "id": "https://www.v2ex.com/t/1167069"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/airchaoz", 
        "name": "airchaoz", 
        "avatar": "https://cdn.v2ex.com/avatar/751f/96b9/275674_large.png?m=1748572675"
      }, 
      "url": "https://www.v2ex.com/t/1131548", 
      "date_modified": "2025-05-14T11:35:59+00:00", 
      "content_html": "<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/i3N05Av.jpeg\"/>\n\u6211\u5bf9 ffmpeg \u7684\u5370\u8c61\u5c31\u662f\u4e00\u4e2a\u5f00\u6e90\u97f3\u89c6\u9891\u7f16\u89e3\u7801\u7a0b\u5e8f\uff0c\u5bf9\u5176\u5f71\u54cd\u529b\u8ba4\u8bc6\u8f83\u5c11\u3002\u80fd\u7ed9\u6211\u8fd9\u4e2a\u95e8\u5916\u6c49\u8bb2\u8bb2\u5230\u5e95\u6709\u591a\u725b\u5417</p>\n", 
      "date_published": "2025-05-13T13:55:23+00:00", 
      "title": "\u65e9\u5c31\u542c\u8bf4\u8fc7 ffmpeg\uff0c\u4f46\u662f\u4e00\u76f4\u4e0d\u77e5\u9053\u6709\u591a\u725b", 
      "id": "https://www.v2ex.com/t/1131548"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/MOranonline", 
        "name": "MOranonline", 
        "avatar": "https://cdn.v2ex.com/gravatar/f965be003d31aa501d4849367582d14e?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1121476", 
      "title": "\u4f7f\u7528 FFmpeg \u548c GPU \u5b9e\u73b0\u6700\u7b80\u201c\u56fe\u7247+\u65e0\u635f\u97f3\u9891=\u89c6\u9891\u201d\u7684\u65b9\u6cd5", 
      "id": "https://www.v2ex.com/t/1121476", 
      "date_published": "2025-03-27T04:47:37+00:00", 
      "content_html": "<blockquote>\n<p>\u9700\u6c42\uff1a\u641c\u96c6\u5230\u7684\u65e0\u635f\u97f3\u4e50\u592a\u5360\u7a7a\u95f4\uff0c\u51b3\u5b9a\u4f20\u5230 B \u7ad9<del>\u7f51\u76d8</del>\u3002\u4f46 pr \u5bfc\u51fa\u592a\u592a\u592a\u8017\u65f6\uff0c\u4e8e\u662f\u4f7f\u7528 FFmepeg \u7684 GPU \u52a0\u901f </p>\n</blockquote>\n<p>\u524d\u7f6e\u6761\u4ef6\u6e05\u5355<br/>\n1.\u652f\u6301 NVENC \u7684 NVIDIA \u663e\u5361\n\u786e\u8ba4\u662f\u5426\u652f\u6301 NVENC\uff1a\n\u5728 CMD \u4e2d\u6267\u884c\uff1a</p>\n<pre><code>nvidia-smi\n</code></pre>\n<p>\u6216\u901a\u8fc7 <a href=\"https://developer.nvidia.com/video-encode-decode-gpu-support-matrix\" rel=\"nofollow\">NVIDIA \u5b98\u65b9\u5217\u8868</a> \u67e5\u8be2\u60a8\u7684\u663e\u5361\u578b\u53f7\u3002<br/>\n2.\u66f4\u65b0\u5230\u6700\u65b0 NVIDIA \u663e\u5361\u9a71\u52a8 <br/>\n3.\u652f\u6301 <code>h264_nvenc</code> \u7684 FFmpeg \u7248\u672c <br/></p>\n<ul>\n<li><a href=\"https://www.gyan.dev/ffmpeg/builds/\" rel=\"nofollow\">FFmpeg \u5b98\u7f51</a></li>\n<li>\u68c0\u67e5 FFmpeg \u662f\u5426\u652f\u6301 <code>h264_nvenc</code>\uff1a</li>\n</ul>\n<ul><li>I think 1969 was second best.</li></ul>\n<pre><code>ffmpeg -encoders | findstr \"h264_nvenc\"\n</code></pre>\n<p>\u5982\u679c\u8f93\u51fa\u4e2d\u6709 <code>h264_nvenc</code>\uff0c\u5219\u652f\u6301\u3002<br/></p>\n<hr/>\n<p>\u5f00\u59cb\uff1a<br/>\n1.\u5c06 FFmpeg \u7684 bin \u76ee\u5f55\u52a0\u5165\u73af\u5883\u53d8\u91cf<br/>\n2.\u8f93\u5165<br/></p>\n<pre><code>ffmpeg -hwaccel cuda -threads 24 -loop 1 -i \"picture.png\" -i \"music.flac\" -vf \"hwupload\" -c:v h264_nvenc -preset 0 -cq 23 -rc constqp -c:a flac -shortest \"output.mkv\"\n</code></pre>\n<p>\u89e3\u6790\uff1a<br/></p>\n<ul>\n<li><code>ffmpeg</code>\uff1a\u5f00\u6e90\u547d\u4ee4\u884c\u5de5\u5177</li>\n<li><code>-hwaccel cuda</code>\uff1a\u542f\u7528 CUDA \u786c\u4ef6\u52a0\u901f\uff0c\u5229\u7528 NVIDIA \u663e\u5361\u7684 CUDA \u6838\u5fc3\u6765\u52a0\u901f\u89c6\u9891\u5904\u7406\uff0c\u4ece\u800c\u63d0\u9ad8\u5904\u7406\u6548\u7387\u3002</li>\n<li><code>-threads 24</code>\uff1a\u8bbe\u7f6e\u5904\u7406\u65f6\u4f7f\u7528\u7684\u7ebf\u7a0b\u6570\u4e3a 24 \u4e2a\uff0c\u591a\u7ebf\u7a0b\u52a0\u5feb\u5904\u7406\u901f\u5ea6\uff0c\u6839\u636e\u7535\u8111\u914d\u7f6e\u589e\u51cf\u3002</li>\n<li><code>-loop 1</code>\uff1a\u4f7f\u8f93\u5165\u7684\u56fe\u50cf\u5faa\u73af\u64ad\u653e\uff0c\u8fd9\u91cc\u8bbe\u7f6e\u5faa\u73af\u6b21\u6570\u4e3a 1 \u6b21\uff0c\u8ba9\u56fe\u50cf\u6301\u7eed\u663e\u793a\u3002</li>\n<li><code>-i \"picture.png\"</code>\uff1a\u6307\u5b9a\u8f93\u5165\u6587\u4ef6\u4e3a\u540d\u4e3a<code>picture.png</code>\u7684\u56fe\u50cf\u6587\u4ef6\u3002</li>\n<li><code>-i \"music.flac\"</code>\uff1a\u6307\u5b9a\u8f93\u5165\u6587\u4ef6\u4e3a\u540d\u4e3a<code>music.flac</code>\u7684\u97f3\u9891\u6587\u4ef6\u3002</li>\n<li><code>-vf \"hwupload\"</code>\uff1a\u89c6\u9891\u6ee4\u955c\uff0c\u5c06\u8f93\u5165\u89c6\u9891\u6570\u636e\u4e0a\u4f20\u5230\u786c\u4ef6\u8bbe\u5907\uff08\u8fd9\u91cc\u4e0e\u524d\u9762\u7684\u786c\u4ef6\u52a0\u901f\u76f8\u5173\uff09\uff0c\u4ee5\u4fbf\u540e\u7eed\u5728\u786c\u4ef6\u4e0a\u8fdb\u884c\u5904\u7406\u3002</li>\n<li><code>-c:v h264_nvenc</code>\uff1a\u6307\u5b9a\u89c6\u9891\u7f16\u7801\u683c\u5f0f\u4e3a H.264 \uff0c\u5e76\u4f7f\u7528 NVIDIA NVENC \u7f16\u7801\u5668\u8fdb\u884c\u7f16\u7801\uff0c\u5229\u7528 NVIDIA \u663e\u5361\u7684\u7f16\u7801\u80fd\u529b\u6765\u751f\u6210\u89c6\u9891\u6d41\u3002</li>\n<li><code>-preset 0</code>\uff1a\u8bbe\u7f6e\u7f16\u7801\u9884\u8bbe\uff0c0 \u662f\u6700\u5feb\u4f46\u89c6\u9891\u8d28\u91cf\u6700\u5dee\uff0c\u53ef\u4ee5\u6309\u9700\u63d0\u9ad8\u3002</li>\n<li><code>-cq 23</code>\uff1a\u8bbe\u7f6e\u6052\u5b9a\u8d28\u91cf\u56e0\u5b50\u4e3a 23 \u3002\u6052\u5b9a\u8d28\u91cf\u56e0\u5b50\u6a21\u5f0f\u4e0b\uff0c\u7f16\u7801\u5668\u4f1a\u5c1d\u8bd5\u4fdd\u6301\u8f93\u51fa\u89c6\u9891\u8d28\u91cf\u6052\u5b9a\uff0c\u901a\u8fc7\u8c03\u6574\u7801\u7387\u6765\u9002\u5e94\u4e0d\u540c\u7684\u573a\u666f\u590d\u6742\u5ea6\u3002\u8f83\u4f4e\u7684 CQ \u503c\u901a\u5e38\u610f\u5473\u7740\u66f4\u9ad8\u7684\u8d28\u91cf\uff0c\u4f46\u53ef\u80fd\u4ea7\u751f\u66f4\u5927\u7684\u6587\u4ef6\u3002</li>\n<li><code>-rc constqp</code>\uff1a\u6307\u5b9a\u4f7f\u7528\u6052\u5b9a QP \uff08\u91cf\u5316\u53c2\u6570\uff09\u6a21\u5f0f\u8fdb\u884c\u7f16\u7801\uff0c\u4e0e<code>-cq</code>\u7c7b\u4f3c\uff0c\u7528\u4e8e\u63a7\u5236\u89c6\u9891\u8d28\u91cf\u3002</li>\n<li><code>-c:a flac</code>\uff1a\u6307\u5b9a\u97f3\u9891\u7f16\u7801\u683c\u5f0f\u4e3a FLAC \uff0c\u4fdd\u6301\u97f3\u9891\u7684\u539f\u59cb\u7f16\u7801\u683c\u5f0f\u4e0d\u53d8</li>\n<li><code>-shortest</code>\uff1a\u4f7f\u8f93\u51fa\u89c6\u9891\u7684\u65f6\u957f\u4e0e\u8f93\u5165\u4e2d\u6700\u77ed\u7684\u6d41\u7684\u65f6\u957f\u76f8\u540c\uff0c\u5373\u5f53\u97f3\u9891\u548c\u89c6\u9891\u65f6\u957f\u4e0d\u540c\u65f6\uff0c\u4ee5\u6700\u77ed\u7684\u65f6\u957f\u4e3a\u51c6\u6765\u751f\u6210\u8f93\u51fa\u89c6\u9891\uff0c\u786e\u4fdd\u97f3\u9891\u548c\u89c6\u9891\u540c\u6b65\u7ed3\u675f\u3002</li>\n<li><code>\"output.mkv\"</code>\uff1a\u6307\u5b9a\u8f93\u51fa\u6587\u4ef6\u540d\u4e3a<code>output.mkv</code>\uff0c\u7136\u540e\u53d1\u5230 B \u7ad9\u7f51\u76d8\u5c31\u884c\u4e86\u3002</li>\n</ul>\n<hr/>\n<p>\u6279\u91cf\u5904\u7406\uff1a<br/>\n\u89c6\u9891\u6309\u987a\u5e8f\u6570\u5b57\u91cd\u547d\u540d\uff08\u5982 <code>video1.mp4</code>, <code>video2.mp4</code> \u7b49\uff09\uff0c\u4e14\u9700\u8981\u4e0e\u5bf9\u5e94\u7684\u56fe\u7247\uff08\u5982 <code>pic1.png</code>, <code>pic2.png</code>\uff09</p>\n<p>1.\u6bcf\u4e2a\u89c6\u9891\u5173\u8054\u4e00\u5f20\u56fe\u7247</p>\n<pre><code class=\"language-batch\">@echo off\nset \"input_dir=.\\videos\"       # \u89c6\u9891\u5b58\u653e\u76ee\u5f55\uff08\u5982\u5df2\u91cd\u547d\u540d\u7684 video1.mp4 \uff09\nset \"image_dir=.\\images\"       # \u56fe\u7247\u5b58\u653e\u76ee\u5f55\uff08\u9700\u8981\u540c\u540d\u7684 pic1.png \u7b49\uff09\nset \"output_dir=.\\outputs\"     # \u8f93\u51fa\u76ee\u5f55\n\nfor %%a in (\"%input_dir%\\*.mp4\") do (\n    set \"video_file=%%~nxa\"\n    set \"prefix=%%~na\"\n    ffmpeg -hwaccel cuda -threads 24 -i \"%%a\" -i \"%image_dir%\\pic%%~na.png\" ^  # \u6ce8\u610f\uff1a\u8fd9\u91cc\u7684\u56fe\u7247\u540d\u683c\u5f0f\u53ef\u81ea\u5b9a\u4e49\uff08\u5982 pic1.png \u9700\u66ff\u6362\u4e3a pic##\u5339\u914d\u4f60\u7684\u547d\u540d\uff09\n    -filter_complex \"[0:v]scale=trunc(iw/2)*2:trunc(ih/2)*2[vid]; [vid][1:v] overlay=10:10\" ^  # \u56fe\u7247\u53e0\u52a0\u5728\u5de6\u4e0a\u89d2\uff08 10 \u50cf\u7d20\u504f\u79fb\uff09\n    -c:v h264_nvenc -preset 0 -cq 23 -rc constqp ^ \n    -c:a copy ^  # \u97f3\u9891\u76f4\u63a5\u590d\u5236\uff08\u52a0\u901f\u5904\u7406\uff09\n    \"%output_dir%\\output_%%~na.mkv\"\n)\n</code></pre>\n<p>2.\u6240\u6709\u89c6\u9891\u4f7f\u7528\u540c\u4e00\u5f20\u80cc\u666f\u56fe\u7247</p>\n<pre><code class=\"language-batch\">@echo off\nset \"input_dir=.\\videos\"       # \u89c6\u9891\u76ee\u5f55\nset \"image_file=.\\background.png\"  # \u56fa\u5b9a\u80cc\u666f\u56fe\u7247\u8def\u5f84\nset \"output_dir=.\\outputs\"\n\nfor %%a in (\"%input_dir%\\*.mp4\") do (\n    ffmpeg -hwaccel cuda -threads 24 -i \"%%a\" -loop 1 -i \"%image_file%\" ^  # \u5faa\u73af\u64ad\u653e\u56fe\u7247\n    -filter_complex \"[0:v]scale=trunc(iw/2)*2:trunc(ih/2)*2[vid]; [1:v]scale=trunc(iw/2)*2:trunc(ih/2)*2[img]; [vid][img] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2\" ^  # \u56fe\u7247\u5c45\u4e2d\u53e0\u52a0\n    -c:v h264_nvenc -preset 0 -cq 23 -rc constqp ^ \n    -c:a copy \n    \"%output_dir%\\output_%%~na.mkv\"\n)\n</code></pre>\n<p>3.\u6ce8\u610f\u4e8b\u9879</p>\n<ul>\n<li>\u786e\u4fdd\u6240\u6709\u89c6\u9891/\u56fe\u7247\u683c\u5f0f\u88ab FFmpeg \u652f\u6301(jpg \u683c\u5f0f\u56fe\u7247\u9700\u8981\u989d\u5916\u547d\u4ee4\u8f6c\u6362)</li>\n<li>\u82e5\u89c6\u9891\u540d\u5305\u542b\u7a7a\u683c/\u7b26\u53f7\uff0c\u9700\u7528\u5f15\u53f7\u5305\u88f9\u8def\u5f84\uff1a</li>\n<li>\u6279\u5904\u7406\u811a\u672c\u9ed8\u8ba4\u987a\u5e8f\u6267\u884c\uff0c\u53ef\u901a\u8fc7\u591a\u7ebf\u7a0b\u5316\u8fdb\u7a0b\uff08\u5982 GNU Parallel \uff09\u63d0\u901f<del>\u7535\u8111\u5305\u625b\u4e0d\u4f4f\u5427</del><br/>\n4.\u6548\u679c\u793a\u4f8b</li>\n</ul>\n<pre><code class=\"language-text\"># \u8f93\u5165\u89c6\u9891\u76ee\u5f55\uff1a\nvideos/\n\u251c\u2500\u2500 video1.mp4\n\u251c\u2500\u2500 video2.mp4\n\u2514\u2500\u2500 video3.mp4\n\n# \u8f93\u5165\u56fe\u7247\u76ee\u5f55\uff08\u573a\u666f 1 \uff09\uff1a\nimages/\n\u251c\u2500\u2500 pic1.png\n\u251c\u2500\u2500 pic2.png\n\u2514\u2500\u2500 pic3.png\n\n# \u8f93\u51fa\u76ee\u5f55\uff1a\noutputs/\n\u251c\u2500\u2500 output_video1.mkv\n\u251c\u2500\u2500 output_video2.mkv\n\u2514\u2500\u2500 output_video3.mkv\n</code></pre>\n<p>5.\u81ea\u52a8\u5316</p>\n<h4><strong>(1) \u4fdd\u5b58\u4e3a\u6279\u5904\u7406\u6587\u4ef6\uff08 Windows \uff09</strong></h4>\n<pre><code class=\"language-batch\"># \u4fdd\u5b58\u4e3a batch_process.bat \uff0c\u53cc\u51fb\u8fd0\u884c\u5373\u53ef\u3002\n</code></pre>\n<h4><strong>(2) \u53ef\u89c6\u5316\u8fdb\u5ea6\u6761\uff08\u53ef\u9009\uff09</strong></h4>\n<pre><code class=\"language-batch\">echo Processing videos: \nFOR /L %i IN (1,1,50) DO (\n    echo %i%%\n    ping localhost -n 1 &gt;nul\n)\n</code></pre>\n<p>\u7136\u540e\u53ef\u4ee5<strong>\u5feb\u901f\u5b8c\u6210\u6279\u91cf\u89c6\u9891\u4e0e\u56fe\u7247\u7684\u5408\u6210\u5904\u7406</strong>,\u4f20\u5230 B \u7ad9<del>\u7f51\u76d8</del>\u3002\u5982\u9700\u8fdb\u4e00\u6b65\u5b9a\u5236\uff08\u5982\u52a8\u6001\u56fe\u7247\u900f\u660e\u5ea6\u3001\u56fe\u7247/\u89c6\u9891\u5c3a\u5bf8\u8c03\u6574\u3001\u4e0d\u540c\u53e0\u52a0\u6548\u679c\u3001\u97f3\u8f68\u6df7\u97f3\u7b49\uff09\u81ea\u884c\u6dfb\u52a0\u547d\u4ee4<br/>\n\u4f7f\u7528\u5f00\u6e90\u7684 B \u7ad9\u97f3\u9891\u64ad\u653e\u5668<a href=\"https://github.com/kenmingwang/azusa-player\" rel=\"nofollow\">\u7535\u6893\u64ad\u653e\u5668</a><br/>\u7136\u540e\u5b8c\u7f8e\u97f3\u4e50\u8f6f\u4ef6 get\u2606 daze</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/chenliang0571", 
        "name": "chenliang0571", 
        "avatar": "https://cdn.v2ex.com/avatar/a472/370c/28502_large.png?m=1736635938"
      }, 
      "url": "https://www.v2ex.com/t/1104441", 
      "title": "FFmpegKit has been officially retired. There will be no further ffmpeg-kit releases.", 
      "id": "https://www.v2ex.com/t/1104441", 
      "date_published": "2025-01-11T22:53:47+00:00", 
      "content_html": "<p>\u4e0d\u77e5\u9053\u4e3a\u4ec0\u4e48\uff0c\u8fde\u53d1\u4e0d\u5230\u7b2c\u4e09\u65b9\u5305\u5e73\u53f0\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u90fd\u4e0d\u4fdd\u7559\u3002  </p>\n<p><a href=\"https://github.com/arthenica/ffmpeg-kit\" rel=\"nofollow\">https://github.com/arthenica/ffmpeg-kit</a></p>\n<p>FFmpegKit has been officially retired. There will be no further <code>ffmpeg-kit</code> releases. </p>\n<p>All previously released <code>ffmpeg-kit</code> binaries will be removed according to the following schedule.</p>\n<table>\n<thead>\n<tr>\n<th>FFmpegKit Version</th>\n<th>Available Until</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Less than 6.0</td>\n<td>February 1st, 2025</td>\n</tr>\n<tr>\n<td>6.0</td>\n<td>April 1st, 2025</td>\n</tr>\n</tbody></table>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/litaomn", 
        "name": "litaomn", 
        "avatar": "https://cdn.v2ex.com/gravatar/274eb618c9cd58c77955d180763ba2dd?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1104123", 
      "date_modified": "2025-01-10T05:08:08+00:00", 
      "content_html": "<p>\u89c6\u9891\u65f6\u957f 5 \u79d2,\u4f46\u662f\u64ad\u653e 1 \u79d2\u81ea\u52a8\u7ed3\u675f,\u540e\u9762 4 \u79d2\u81ea\u52a8\u622a\u65ad\u4e86,\u5e94\u8be5\u662f\u7528 ffmpeg \u7ecf\u8fc7\u5904\u7406\u7684,\u60f3\u77e5\u9053\u539f\u7406,\u53ef\u4ee5\u4ed8\u8d39.\n\u89c6\u9891\u5730\u5740:<a href=\"https://share.feijipan.com/s/GaE97j6z\" rel=\"nofollow\">https://share.feijipan.com/s/GaE97j6z</a></p>\n", 
      "date_published": "2025-01-10T05:06:17+00:00", 
      "title": "\u6709\u6ca1\u6709\u7cbe\u901a ffmpeg \u7684\u5927\u4f6c\u5e2e\u6211\u770b\u4e0b\u8fd9\u4e2a\u89c6\u9891\u662f\u600e\u4e48\u5236\u4f5c\u7684", 
      "id": "https://www.v2ex.com/t/1104123"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/lslqtz", 
        "name": "lslqtz", 
        "avatar": "https://cdn.v2ex.com/avatar/c8aa/9aa7/152083_large.png?m=1735670770"
      }, 
      "url": "https://www.v2ex.com/t/1102154", 
      "date_modified": "2025-01-02T16:24:12+00:00", 
      "content_html": "<p>\u6700\u8fd1\u8bd5\u7740\u5199\u4e86\u4e00\u4efd\u7b80\u5355\u7684\u4e2a\u4eba\u7528\u9014\u7684\u8f6c\u7801\u70b9\u64ad\u670d\u52a1\u7aef, \u5b8c\u6210\u4e86\u4e4b\u524d\u7684\u60f3\u6cd5, \u5b83\u80fd\u628a\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u4e0b\u7684\u89c6\u9891\u8f6c\u4e3a m3u \u5207\u7247\u7528\u4e8e\u70b9\u64ad. \u4e3b\u8981\u662f\u7531\u4e8e\u90e8\u5206 BDMV \u89c6\u9891\u7801\u7387\u8fc7\u9ad8, \u5f88\u96be\u8fdc\u7a0b\u70b9\u64ad NAS \u4e0a\u7684\u5185\u5bb9. Jellyfin \u7b49\u5a92\u4f53\u5e93\u65b9\u6848\u4e0d\u5728\u8003\u8651\u8303\u56f4.</p>\n<p>\u4e3a\u4e86\u5b9e\u73b0\u6d4f\u89c8\u5668 seek \u7684\u6548\u679c, \u9009\u62e9\u7531\u670d\u52a1\u7aef\u901a\u8fc7 PTS \u65f6\u95f4\u70b9\u548c timeBase \u6765\u6839\u636e\u5173\u952e\u5e27\u63d0\u524d\u751f\u6210\u5207\u7247\u8303\u56f4, \u5728\u8bf7\u6c42\u5bf9\u5e94\u5207\u7247\u540e\u5b9e\u65f6\u8f6c\u7801\u5230 mpegts (\u5e76\u901a\u8fc7\u6d4f\u89c8\u5668\u9884\u7f13\u51b2\u907f\u514d\u64ad\u653e\u5361\u987f).</p>\n<p>\u4f46\u65e0\u8bba\u5982\u4f55\u8c03\u8282, \u4f3c\u4e4e\u5076\u5c14\u90fd\u4f1a\u51fa\u73b0\u97f3\u9891\u4e0d\u8fde\u7eed\u7684\u95ee\u9898, \u8f6c\u50a8\u540e\u53d1\u73b0\u76ee\u6807\u5207\u7247\u4f3c\u4e4e\u65f6\u95f4\u548c\u8bf7\u6c42\u957f\u5ea6\u4e0d\u5b8c\u5168\u4e00\u81f4, \u8c03\u8282\u591a\u6b21\u53c2\u6570\u4ecd\u672a\u89e3\u51b3\u6b64\u95ee\u9898 (\u4e3a\u4f7f\u5207\u7247\u6709\u8db3\u591f\u8d77\u59cb\u957f\u5ea6\u53ea\u6d4b\u8bd5\u5230 muxdelay \u65b9\u6cd5\u53ef\u7528, -ss/-t \u653e\u4e8e\u8f93\u5165\u4e4b\u540e\u4f3c\u4e4e\u4e5f\u65e0\u679c, \u5305\u62ec -start_at_zero \u7b49\u7684\u66ff\u4ee3\u4e5f\u90fd\u5c1d\u8bd5\u8fc7, \u4f7f\u7528 hls \u6216 segment \u7684\u8bdd\u8f83\u96be\u63a7\u5236\u81ea\u7531\u70b9\u64ad\u8fdb\u5ea6).</p>\n<p>\u7531\u4e8e nodejs \u670d\u52a1\u7aef\u8f83\u96be\u8c03\u7528 FFmpeg API, \u662f\u7528\u7684 \u547d\u4ee4+\u7ba1\u9053 \u7684\u65b9\u5f0f. \u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b, \u6709\u65b9\u6cd5\u53ef\u4ee5\u89e3\u51b3\u6216\u89c4\u907f\u6b64\u95ee\u9898\u5417?</p>\n<p><a href=\"https://github.com/lslqtz/lRTTServer/blob/keyframe/app.js\" rel=\"nofollow\">\u670d\u52a1\u7aef\u7684\u5b8c\u6574\u4ee3\u7801</a>, \u5176\u4e2d\u76f8\u5173\u7684\u4ee3\u7801\u5982\u4e0b:</p>\n<pre><code>\t\tlet args = [\n\t\t\t'-ss', startTimeStr,\n\t\t\t'-t', durationTimeStr,\n\t\t\t'-accurate_seek',\n\t\t\t'-i', videoPath,\n\t\t\t'-map', '0:v:0',\n\t\t\t'-c:v', encoder,\n\t\t\t'-b:v', String(bitrate),\n\t\t\t'-bsf:v', 'h264_mp4toannexb',\n\t\t\t'-avoid_negative_ts', 'make_zero',\n\t\t\t'-start_at_zero',\n\t\t\t'-muxdelay', delayTimeStr,\n\t\t\t'-muxpreload', delayTimeStr,\n\t\t\t'-f', 'mpegts',\n\t\t\t'pipe:1'\n\t\t];\n</code></pre>\n<p>\u8bf7\u6c42\u65b9\u6cd5:<br/>\nm3u: <a href=\"http://127.0.0.1:8082/video/rttPlaylist?videoPath=1.mkv\" rel=\"nofollow\">http://127.0.0.1:8082/video/rttPlaylist?videoPath=1.mkv</a><br/>\nsegment: <a href=\"http://127.0.0.1:8002/video/rttSegment?videoPath=1.mkv&amp;start=0.0000&amp;duration=4.0000\" rel=\"nofollow\">http://127.0.0.1:8002/video/rttSegment?videoPath=1.mkv&amp;start=0.0000&amp;duration=4.0000</a></p>\n<p>(BTW: \u5176\u5b9e\u5927\u90e8\u5206\u662f Gemini \u5199\u7684.)</p>\n", 
      "date_published": "2025-01-02T16:16:00+00:00", 
      "title": "\u4f7f\u7528 FFmpeg \u8bd5\u56fe\u505a\u4e2a\u4eba\u7528\u7684\u8f6c\u7801\u70b9\u64ad\u670d\u52a1\u7aef, \u4f46 mpegts \u591a\u4e2a\u5207\u7247\u95f4\u97f3\u9891\u5076\u5c14\u4e0d\u8fde\u7eed?", 
      "id": "https://www.v2ex.com/t/1102154"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zapper", 
        "name": "zapper", 
        "avatar": "https://cdn.v2ex.com/avatar/c46e/37f7/74212_large.png?m=1758688991"
      }, 
      "url": "https://www.v2ex.com/t/1101957", 
      "title": "\u6c42\u52a9\u5927\u4f6c\u4eec\uff0c FFmpeg \u6307\u4ee4\u62c9\u5b9e\u65f6\u6d41\u8f6c\u63a8\u7684\u6b63\u786e\u59ff\u52bf\u5230\u5e95\u662f\u4ec0\u4e48\uff1f", 
      "id": "https://www.v2ex.com/t/1101957", 
      "date_published": "2025-01-02T03:33:38+00:00", 
      "content_html": "<p>\u5927\u4f6c\u4eec\u597d\uff0c\u6211\u7528</p>\n<pre><code>ffmpeg -re -rtsp_transport tcp -stimeout 5000000 -i rtsp://xxxx -c:v libx264 -f flv rtmp://xxx\n</code></pre>\n<p>\u4e0a\u9762\u8fd9\u4e2a\u6307\u4ee4\uff0c\u5728\u4e00\u5207\u6b63\u5e38\u7684\u65f6\u5019\u6ca1\u6709\u95ee\u9898\uff0c\u4f46\u662f\u5f53\u8f93\u5165\u7684 RTSP \u4e2d\u65ad\u4e86\u4e00\u4f1a\uff0c\u8fd9\u4e2a\u63a8\u6d41\u5c31\u4f1a\u5904\u4e8e\u4e00\u4e2a\u8dd1\u98de\u4e86\u7684\u72b6\u6001\uff0c\u4e0d\u518d\u63a8\u9001\u6709\u6548\u6570\u636e\uff0c\u5e76\u4e14\u8fdb\u7a0b\u4e5f\u6ca1\u6709\u7ec8\u6b62\uff1b\n\u7136\u540e\u6211\u7f51\u4e0a\u641c\u8bf4\u7528<code>rw_timeout</code>\u53c2\u6570\u53ef\u7834\uff0c\u53ef\u662f\u6211\u5c06\u6307\u4ee4\u4fee\u6539\u4e3a</p>\n<pre><code>ffmpeg -re -rtsp_transport tcp -rw_timeout 5000000 -stimeout 5000000 -i rtsp://xxxx -c:v libx264 -f flv rtmp://xxx\n</code></pre>\n<p>\u53ef\u662f\u6574\u4e2a\u6307\u4ee4\u6839\u672c\u8dd1\u4e0d\u8d77\u6765\u3002\u63d0\u793a<code>-rw_timeout</code>\u4e0d\u5b58\u5728\uff0c\u9664\u975e\u8f93\u5165\u6362\u6210 RTMP \uff0c\u4f46\u662f\u52a0\u4e86\u8fd9\u4e2a\u53c2\u6570\u5176\u5b9e\u4e5f\u4e0d\u597d\u4f7f\u3002\n\u7531\u4e8e\u8f93\u51fa\u7684\u5730\u5740\u4e0d\u662f\u6211\u4eec\u81ea\u5df1\u7ba1\u63a7\u7684\uff0c\u6240\u4ee5\u4e0d\u50cf\u4fdd\u5b58\u6587\u4ef6\u4e00\u6837\u80fd\u5b9a\u671f\u68c0\u6d4b\u6587\u4ef6\u5927\u5c0f\u662f\u5426\u53d8\u5316\u6765\u5224\u65ad\u662f\u4e0d\u662f\u5e94\u8be5 kill \u6389\u8fdb\u7a0b\uff0c\u6240\u4ee5\u8981\u600e\u4e48\u624d\u80fd\u5728\u4ed6\u6ca1\u6570\u636e\u4f20\u8f93\u7684\u65f6\u5019\u5e72\u6389\u4ed6\uff0c\u6216\u8005\u80fd\u901a\u8fc7\u914d\u7f6e\u53c2\u6570\u8ba9\u4ed6\u81ea\u5df1\u9000\uff1f</p>\n<p>\u5148\u8c22\u8c22\u5927\u4f6c\u4eec</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/wniming", 
        "name": "wniming", 
        "avatar": "https://cdn.v2ex.com/gravatar/708d900c4d23d905941b0c2cf38b7565?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1101767", 
      "date_modified": "2025-01-01T05:57:21+00:00", 
      "content_html": "<p>linux \u5e73\u53f0\uff0c\u663e\u5361\u662f uhd770 \uff0c\u6e32\u67d3\u8282\u70b9\u662f /dev/dri/renderD128 \uff0c\u8f93\u5165\u6587\u4ef6\u7684\u8def\u5f84\u662f /tmp/h264.mp4 \uff0c\u8f93\u51fa\u6587\u4ef6\u8def\u5f84\u662f /tmp/hevc.mp4 \uff0c\u6709\u5927\u4f6c\u80fd\u7ed9\u4e2a\u80fd\u76f4\u63a5\u7528\u7684\u547d\u4ee4\u5417\uff1f</p>\n<p>\u8f6c\u6362\u7684\u76ee\u7684\u662f\u4e3a\u4e86\u51cf\u5c0f\u6587\u4ef6\u7684\u5927\u5c0f</p>\n", 
      "date_published": "2025-01-01T05:51:56+00:00", 
      "title": "\u5728\u51e0\u4e4e\u4e0d\u635f\u5931\u753b\u8d28\u7684\u524d\u63d0\u4e0b\uff0c\u600e\u4e48\u7528 ffmpeg \u628a h.264 \u683c\u5f0f\u7684\u89c6\u9891\u8f6c\u6362\u6210 h.265 \u683c\u5f0f\u7684?", 
      "id": "https://www.v2ex.com/t/1101767"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jeddida", 
        "name": "jeddida", 
        "avatar": "https://cdn.v2ex.com/gravatar/046acda2903889e54690c5add7fd2442?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1100954", 
      "date_modified": "2024-12-28T13:46:05+00:00", 
      "content_html": "<p>\u4e66\u63a5\u4e0a\u6b21\uff0c\u5927\u4f6c\u4eec\u5efa\u8bae\u6211\u7528\u786c\u4ef6\u52a0\u901f\uff0c\u6211\u73b0\u5728\u6362\u4e86 AMD \u7684\u663e\u5361\uff0c\u5e76\u4e14\u6210\u529f\u5728\u6211\u7684 Linux \u5b89\u88c5\u4e86 ffmpeg \u3002\n\u6211\u8fd0\u884c\uff1affmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -i input.mp4 -vf format=yuv420p,hwupload -c:v h264_vaapi -b:v 1000k output.mp4</p>\n<p>\u53ef\u786c\u4ef6\u52a0\u901f\uff0cCPU \u5360\u7528\u7387\u5f88\u4f4e\u3002\n\u4f46\u662f\u6211\u5728\u6211\u7684 c++\u4ee3\u7801\u91cc\u4f7f\u7528\u6765\u521b\u5efa\uff1aint ret = av_hwdevice_ctx_create = (&amp;hw_device_ctx,AV_HWDEVICE_TYPE_VAAPI,\"/dev/dri/renderD128\");</p>\n<p>\u6211\u6253\u5370\u4e86 ret\uff1a-12 \uff0c\u6211\u67e5\u9605\u4e86\u8d44\u6599\u662f\u56e0\u4e3a\u65e0\u6cd5\u521b\u5efa\u5185\u5b58\u7a7a\u95f4\u5bfc\u81f4\u7684\u3002</p>\n<p>\u5fd8\u4e86\u8bf4\uff0c\u6211\u7528\u7684\u662f qtcreator \uff0c\u6211\u5728 qt \u7684 pro \u6587\u4ef6\u4e86\u5f15\u5165\u4e86-lavcodec -lavformat -lavutil -lswscale \uff0c\u5728\u4e0d\u7528\u786c\u4ef6\u52a0\u901f\u7684\u65f6\u5019\u53ef\u4ee5\u770b\u5230\u89c6\u9891\uff0c\u4e5f\u53ef\u4ee5\u64ad\u653e\uff0c\u4f46\u662f\u7528\u4e86 vaapi \u90a3\u4e2a\u52a0\u901f\u5c31\u4f1a\u6253\u5370-12</p>\n<p>\u6211\u67e5\u9605\u8d44\u6599\u53ef\u80fd\u662f\u6ca1\u6709\u5f15\u5165 libva \u548c libva-drm \u3002</p>\n<p>\u6709\u6ca1\u6709\u5927\u4f6c\u4e86\u89e3\u8fc7\u8fd9\u4e9b\uff01\n\u8dea\u8c22\uff01\u56f0\u6270\u6211\u4e00\u5468\u4e86\uff01\uff08\u6211\u6ca1\u6cd5\u5c1d\u8bd5\u662f\u56e0\u4e3a\u516c\u53f8\u7535\u8111\u5173\u4e86\uff0c\u8fd9\u5468\u672b\u96be\u53d7\u7684\u6211\u554a\uff0c\u89e3\u51b3\u4e0d\u4e86\u95ee\u9898\u6211\u90fd\u7761\u4e0d\u597d\uff09</p>\n", 
      "date_published": "2024-12-28T12:02:58+00:00", 
      "title": "\u6211\u53c8\u6765\u8be2\u95ee ffmpeg \u95ee\u9898\u4e86\uff01\u8fd9\u6b21\u662f\u786c\u4ef6\u52a0\u901f\uff01", 
      "id": "https://www.v2ex.com/t/1100954"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zhengfan2016", 
        "name": "zhengfan2016", 
        "avatar": "https://cdn.v2ex.com/gravatar/df526f138d10cac8c95b274c720a6f55?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1100488", 
      "date_modified": "2024-12-27T01:58:36+00:00", 
      "content_html": "\u5982\u9898\uff0cnodejs \u548c python \u6709\u4ec0\u4e48\u597d\u7528\u7684\u6210\u719f\u7684\u5e93\u5417\uff0c\u7528\u90a3\u79cd\u8bed\u8a00\u5f00\u53d1\u4f1a\u597d\u4e00\u70b9\u554a\ud83d\ude02", 
      "date_published": "2024-12-26T09:01:31+00:00", 
      "title": "\u5927\u4f6c\u4eec\uff0c nodejs \u548c Python \u505a\u7c7b\u4f3c jellyfin \u5b9e\u65f6\u8f6c\u7801\u662f\u4e0d\u662f\u53ea\u80fd\u7528 ffmpeg \u5b9e\u73b0\u4e86", 
      "id": "https://www.v2ex.com/t/1100488"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jeddida", 
        "name": "jeddida", 
        "avatar": "https://cdn.v2ex.com/gravatar/046acda2903889e54690c5add7fd2442?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1100292", 
      "date_modified": "2024-12-26T00:08:28+00:00", 
      "content_html": "<h3>\u521a\u63a5\u89e6 ffmpeg \u60f3\u7740\u5199\u4e00\u4e2a\u64ad\u653e\u5668\u73a9\u73a9\uff0c\u4f46\u662f CPU \u5360\u7528\u7387\u4e00\u76f4\u9ad8\uff0c\u6709\u6ca1\u6709\u5927\u4f6c\u77e5\u9053\u600e\u4e48\u56de\u4e8b\u3002\u6ca1\u6709\u663e\u5361\u3002</h3>\n<p>\u6211\u6d4b\u8bd5\u4e00\u4e2a\u89c6\u9891\u7684\u65f6\u5019\u8fd8\u884c\uff0c\u89c6\u9891\u6570\u91cf\u4e0a\u5230\u4e86 16 \u4e2a\u5c31\u5f00\u59cb\u82b1\u5c4f+\u5361\u987f\u4e86\u3002</p>\n", 
      "date_published": "2024-12-25T12:24:59+00:00", 
      "title": "\u6709\u5927\u4f6c\u5f00\u53d1\u8fc7 ffmpeg \u5417\uff1f\u7528 c++\u8c03\u7528 ffmpeg API \u89e3\u7801\u89c6\u9891\u6d41 CPU \u5360\u7528\u7387\u9ad8\uff0c\u6c42\u89e3\u51b3\u529e\u6cd5", 
      "id": "https://www.v2ex.com/t/1100292"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/mianhk", 
        "name": "mianhk", 
        "avatar": "https://cdn.v2ex.com/gravatar/23f6b6edf117b94992fbd04dc6a31ceb?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1096466", 
      "date_modified": "2024-12-10T08:27:20+00:00", 
      "content_html": "<p>\u5f53\u524d\u4f7f\u7528 ffmpeg \u5f55\u5236 Ubuntu \u5c4f\u5e55\uff0c\u4f7f\u7528 avi \u683c\u5f0f\uff0c\u5f55\u5236\u7684\u8fc7\u7a0b\u9700\u8981\u6bcf\u9694 10 \u5206\u949f\u5207\u5206\u4e00\u4e2a 2 \u5206\u949f\u7684\u89c6\u9891\uff0c\u4f46\u662f\u7ecf\u5e38\u5f55\u4e86\u4e00\u6bb5\u65f6\u95f4\u540e\uff0c\u89c6\u9891\u5207\u5206\u5c31\u6709\u62a5\u9519\uff0c\u4f46\u662f\u7b49\u5f55\u5236\u5b8c\u6210\u540e\uff0c\u7528\u540c\u6837\u7684\u547d\u4ee4\u5207\u5272\u5374\u6ca1\u6709\u62a5\u9519\uff0c\u6709\u5927\u4f6c\u77e5\u9053\u539f\u56e0\u7684\u5417\uff1f\n\u5f55\u5236\u547d\u4ee4\uff1a</p>\n<pre><code>ffmpeg -f alsa -i hw:1,0 -f x11grab -s 1920x1080 -i :0.0 -async 1 ubuntu.avi\n</code></pre>\n", 
      "date_published": "2024-12-10T08:26:13+00:00", 
      "title": "ffmpeg \u89c6\u9891\u5f55\u5236\u5207\u5206\u95ee\u9898\u8bf7\u6559", 
      "id": "https://www.v2ex.com/t/1096466"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/v423", 
        "name": "v423", 
        "avatar": "https://cdn.v2ex.com/gravatar/5f1d766161a89ac2500d26439b822915?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1095204", 
      "title": "\u901a\u8fc7 ffmpeg \u538b\u7f29\u89c6\u9891\u5f88\u6162 \u65f6\u95f4\u654f\u611f\u7684\u9700\u6c42\u8be5\u600e\u4e48\u8bbe\u7f6e\u53c2\u6570\u5462?", 
      "id": "https://www.v2ex.com/t/1095204", 
      "date_published": "2024-12-05T04:20:26+00:00", 
      "content_html": "<p>\u524d\u7aef\u4e0a\u4f20\u7684\u65f6\u5019\u9700\u8981\u9884\u538b\u7f29\n\u5e0c\u671b 1 \u5206\u949f\u7684\u89c6\u9891\u538b\u7f29\u65f6\u95f4\u80fd\u63a7\u5236\u5728 1 \u5206\u949f\u4ee5\u5185, \u540c\u65f6\u4fdd\u8bc1\u753b\u9762\u6e05\u6670\u4e0d\u80fd\u6709\u9a6c\u8d5b\u514b, \u538b\u7f29\u540e\u89c6\u9891\u5728 720p \u4ee5\u4e0a \u7801\u7387 2000k \u4ee5\u4e0a</p>\n<p>\u73b0\u5728\u7684\u65b9\u6848\u662f\u901a\u8fc7 ffmpeg.wasm \u538b\u7f29, \u5b98\u65b9\u6d4b\u8bd5\u7ed3\u679c\u6bd4\u539f\u751f ffmpeg \u6162 10-20 \u500d</p>\n<p>\u9879\u76ee\u4e2d\u6d4b\u8bd5\u53ea\u8981\u6d89\u53ca\u753b\u9762\u8f6c\u7801\u90fd\u662f\u4e25\u91cd\u8d85\u8fc7 1 \u5206\u949f\n\u9000\u800c\u6c42\u5176\u6b21\u5c1d\u8bd5\u7ef4\u6301\u89c6\u9891\u6d41\u53ea\u51cf\u5e27, \u4f46\u662f\u7ef4\u6301\u539f\u89c6\u9891\u6d41\u9700\u8981 copy \u53c2\u6570, \u6b64\u65f6\u65e0\u6cd5\u901a\u8fc7-r \u8bbe\u7f6e\u53c2\u6570, filter \u53ea\u662f\u8fc7\u6ee4\u5668\u65e0\u6cd5\u538b\u7f29\u89c6\u9891\u4f53\u79ef</p>\n<p>\u6628\u5929\u627e\u4e86\u4e00\u4e0b\u5348\u6ca1\u627e\u5230\u53ef\u7528\u7684\u53c2\u6570, \u53ea\u80fd\u8bf7\u6559\u5927\u4f6c\u4e86</p>\n<p>\u53c2\u6570\u5982\u4e0b</p>\n<pre><code class=\"language-js\">const args = [\n    \"-i\",\n    \"input.mov\",\n    \"-preset\",\n    \"ultrafast\",\n    \"-c:a\",\n    \"copy\",\n    \"-c:v\",\n    \"copy\",\n    \"-r\", \"24\",\n    \"output.mp4\"\n]\n</code></pre>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/henix", 
        "name": "henix", 
        "avatar": "https://cdn.v2ex.com/gravatar/41ecaf675f9a963ac47aec132fd468a6?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1091285", 
      "title": "ffmpeg \u5904\u7406\u540e\u89c6\u9891\u65f6\u957f\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1091285", 
      "date_published": "2024-11-20T10:37:25+00:00", 
      "content_html": "<p>\u7528 ffmpeg -t \u5c06\u4e00\u4e2a 10s \u7684\u89c6\u9891\u526a\u88c1\u5230 3s \u540e\uff0c\u64ad\u653e\u65f6\u957f\u6ca1\u95ee\u9898\uff0c\u4f46\u662f\u653e\u8fdb concat \u8fc7\u6ee4\u5668\uff0c\u8fd9\u4e2a\u89c6\u9891\u7247\u6bb5\u5360\u7528\u7684\u957f\u5ea6\u4ecd\u4e3a\u539f\u957f\u5ea6 10s \uff0c\u540e\u9762 7s \u8868\u73b0\u4e3a\u6700\u540e\u4e00\u5e27\u9759\u6b62\u753b\u9762\u3002\u5c1d\u8bd5\u4e86\u5404\u79cd\u65b9\u6cd5\u90fd\u4e0d\u884c\uff0c\u8fd8\u671b\u5927\u795e\u8d50\u6559\u3002</p>\n<p>\u95ee\u9898\u8be6\u7ec6\u63cf\u8ff0\uff1a</p>\n<p>1. \u7528\u5b8c\u5168\u91cd\u7f16\u7801\u7684\u65b9\u6cd5\u5c06\u4e00\u4e2a 10s \u7684\u89c6\u9891\u8f6c\u6362\u4e3a 3.971s \u5e76\u53bb\u6389\u97f3\u9891:</p>\n<p>ffmpeg -t 3.971 -i \"\u52a0\u8f7d.mp4\" -c:v libx264 -tune animation -crf 1 -an loading.mp4</p>\n<p>ffprobe \u7ed3\u679c\u6587\u4ef6 loading.mp4 \u5982\u4e0b\uff1a</p>\n<pre><code>Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'loading.mp4':\n  Metadata:\n    major_brand     : isom\n    minor_version   : 512\n    compatible_brands: isomiso2avc1mp41\n    encoder         : Lavf61.7.100\n  Duration: 00:00:03.98, start: 0.000000, bitrate: 49072 kb/s\n  Stream #0:0[0x1](eng): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 49068 kb/s, 60 fps, 60 tbr, 15360 tbn (default)\n      Metadata:\n        handler_name    : ?Mainconcept Video Media Handler\n        vendor_id       : [0][0][0][0]\n        encoder         : Lavc61.19.100 libx264\n</code></pre>\n<p>\u7591\u70b9\uff1a\u65f6\u957f\u4e3a 3.98 \uff0c\u5df2\u7ecf\u4e0d\u7cbe\u786e\uff1f</p>\n<p>\u539f\u59cb\u89c6\u9891\u7684 ffprobe \uff0c\u662f\u4e0d\u662f\u539f\u59cb\u89c6\u9891\u6709\u4ec0\u4e48\u4e0d\u6b63\u5e38\uff1a</p>\n<pre><code>Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '\u52a0\u8f7d.mp4':\n  Metadata:\n    major_brand     : mp42\n    minor_version   : 0\n    compatible_brands: mp42mp41\n    creation_time   : 2022-03-26T12:31:39.000000Z\n  Duration: 00:00:10.00, start: 0.000000, bitrate: 9763 kb/s\n  Stream #0:0[0x1](eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 9395 kb/s, 60 fps, 60 tbr, 60k tbn (default)\n      Metadata:\n        creation_time   : 2022-03-26T12:31:39.000000Z\n        handler_name    : ?Mainconcept Video Media Handler\n        vendor_id       : [0][0][0][0]\n        encoder         : AVC Coding\n  Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default)\n      Metadata:\n        creation_time   : 2022-03-26T12:31:40.000000Z\n        handler_name    : #Mainconcept MP4 Sound Media Handler\n        vendor_id       : [0][0][0][0]\n</code></pre>\n<p>2. \u5c06\u4e00\u4e2a webm \u89c6\u9891 overlay \u5230\u4e0a\u8ff0\u89c6\u9891\u4e0a\uff0c\u5e76\u52a0\u5165\u97f3\u9891\uff0c\u4e14\u97f3\u89c6\u9891\u90fd\u91cd\u7f16\u7801\uff1a</p>\n<p>\u7591\u70b9\uff1awebm \u89c6\u9891\u7684\u65f6\u957f\u663e\u793a\u4e3a N/A \uff0c\u4f46\u5b9e\u9645\u4e3a 3.5s \u5de6\u53f3</p>\n<p>\u7528\u4e86 -filter_complex chromakey,scale;overlay</p>\n<p>\u7ed3\u679c\u7684 ffprobe \u5982\u4e0b\uff1a</p>\n<pre><code>Input #0, matroska,webm, from 'opening.mkv':\n  Metadata:\n    COMPATIBLE_BRANDS: isomiso2avc1mp41\n    MAJOR_BRAND     : isom\n    MINOR_VERSION   : 512\n    ENCODER         : Lavf61.7.100\n  Duration: 00:00:03.98, start: 0.000000, bitrate: 70572 kb/s\n  Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv420p(tv, bt709, progressive), 1920x1080, 60 fps, 60 tbr, 1k tbn\n      Metadata:\n        ENCODER         : Lavc61.19.100 libx264\n        DURATION        : 00:00:03.984000000\n  Stream #0:1: Audio: flac, 44100 Hz, stereo, s16\n      Metadata:\n        ENCODER         : Lavc61.19.100 flac\n        DURATION        : 00:00:03.970000000\n</code></pre>\n<p>\u8fd9\u4e00\u6b65\u7ed3\u679c\u89c6\u9891\u957f\u5ea6 3.984s</p>\n<p>3. \u5c06\u4e0a\u4e00\u6b65\u7684\u7ed3\u679c\u7528 concat \u52a0\u5230\u53e6\u5916\u4e24\u4e2a\u89c6\u9891\u6d41\u7684\u4e2d\u95f4\uff1a</p>\n<pre><code>-filter_complex\n    \"[10:v]trim=0:3.97[t10v]\",\n    \"[10:a]atrim=0:3.97[t10a]\",\n    \"[fv1t][fa1t][t10v][t10a][fv2t][fa2t]concat=3:1:1\",\n</code></pre>\n<p>\u5176\u4e2d \"[10]\" \u4ee3\u8868\u4e0a\u4e00\u6b65\u7ed3\u679c\u7684\u89c6\u9891\u6d41\u548c\u97f3\u9891\u6d41\uff0c\u5df2\u7ecf\u7528 trim \u5904\u7406</p>\n<p>\u7ed3\u679c\uff1a\u5728\u751f\u6210\u7684\u6587\u4ef6\u4e2d\uff0c\u8fd9\u4e00\u6bb5\u7684\u5b9e\u9645\u5360\u7528\u65f6\u95f4\u4e3a 10s \uff0c\u800c\u4e0d\u662f\u6211\u9700\u8981\u7684 3.971s \uff0c\u540e\u9762 7s \u662f\u6700\u540e\u4e00\u5e27\u9759\u6b62\u753b\u9762\u548c\u9759\u97f3\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/xyzos", 
        "name": "xyzos", 
        "avatar": "https://cdn.v2ex.com/gravatar/84a0e4742b86841ac494759dc341ae5e?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1090588", 
      "date_modified": "2024-11-18T10:30:00+00:00", 
      "content_html": "<p>\u524d\u63d0\uff1a\u5728 windows/linux \u4e0a\uff0c\u4f7f\u7528\u540c\u6837\u4e00\u4e2a ffmpeg \u9759\u6001\u7f16\u8bd1\u7684\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u5bf9\u540c\u6837\u4e00\u4e2a h264 \u7f16\u7801\u7684 mp4 \u6587\u4ef6\u89e3\u7801\uff0c\u89e3\u7801\u547d\u4ee4\u5982\u4e0b\uff1a\n(1) .\\ffmpeg.exe -hwaccel cuda -i E:\\tmp\\1080p_60_10M.mp4 -f null -\n\u89e3\u7801\u5e27\u7387\u4e3a fps=780\n(2) .\\ffmpeg.exe -i E:\\tmp\\1080p_60_10M.mp4 -f null -\n\u89e3\u7801\u5e27\u7387\u4e3a fps=1617</p>\n<p>(1) \u89e3\u7801\u7ed3\u679c:</p>\n<pre><code>  Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'E:\\tmp\\1080p_60_10M.mp4':\n</code></pre>\n<p>Metadata:\nmajor_brand     : isom\nminor_version   : 512\ncompatible_brands: isomiso2avc1mp41\nencoder         : Lavf60.3.100\nDuration: 00:01:36.67, start: 0.000000, bitrate: 10533 kb/s\nStream #0:0<a href=\"und\" rel=\"nofollow\">0x1</a>: Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 10528 kb/s, 60 fps, 60 tbr, 15360 tbn (default)\nMetadata:\nhandler_name    : VideoHandler\nvendor_id       : [0][0][0][0]\nencoder         : Lavc60.3.100 libx264\nStream mapping:\nStream #0:0 -&gt; #0:0 (h264 (native) -&gt; wrapped_avframe (native))\nPress [q] to stop, [?] for help\nOutput #0, null, to 'pipe:':\nMetadata:\nmajor_brand     : isom\nminor_version   : 512\ncompatible_brands: isomiso2avc1mp41\nencoder         : Lavf60.22.101\nStream #0:0(und): Video: wrapped_avframe, nv12(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 60 fps, 60 tbn (default)\nMetadata:\nhandler_name    : VideoHandler\nvendor_id       : [0][0][0][0]\nencoder         : Lavc60.40.100 wrapped_avframe\n[out#0/null @ 0000017e54639b80] video:2719KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown\nframe= 5800 fps=780 q=-0.0 Lsize=N/A time=00:01:36.66 bitrate=N/A speed=  13x</p>\n<pre><code>(2) \u89e3\u7801\u7ed3\u679c:\n\n    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'E:\\tmp\\1080p_60_10M.mp4':\n</code></pre>\n<p>Metadata:\nmajor_brand     : isom\nminor_version   : 512\ncompatible_brands: isomiso2avc1mp41\nencoder         : Lavf60.3.100\nDuration: 00:01:36.67, start: 0.000000, bitrate: 10533 kb/s\nStream #0:0<a href=\"und\" rel=\"nofollow\">0x1</a>: Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 10528 kb/s, 60 fps, 60 tbr, 15360 tbn (default)\nMetadata:\nhandler_name    : VideoHandler\nvendor_id       : [0][0][0][0]\nencoder         : Lavc60.3.100 libx264\nStream mapping:\nStream #0:0 -&gt; #0:0 (h264 (native) -&gt; wrapped_avframe (native))\nPress [q] to stop, [?] for help\nOutput #0, null, to 'pipe:':\nMetadata:\nmajor_brand     : isom\nminor_version   : 512\ncompatible_brands: isomiso2avc1mp41\nencoder         : Lavf60.22.101\nStream #0:0(und): Video: wrapped_avframe, yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 60 fps, 60 tbn (default)\nMetadata:\nhandler_name    : VideoHandler\nvendor_id       : [0][0][0][0]\nencoder         : Lavc60.40.100 wrapped_avframe\n[out#0/null @ 000001f2b2f29c00] video:2719KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown\nframe= 5800 fps=1617 q=-0.0 Lsize=N/A time=00:01:36.66 bitrate=N/A speed=26.9x</p>\n<p>\u95ee\u9898\uff1a\u6307\u5b9a\u4e86 -hwaccel cuda \u53c2\u6570\u8fdb\u884c\u89e3\u7801\u7684 fps \u8981\u6bd4\u4e0d\u6307\u5b9a\u8fd9\u4e2a\u53c2\u6570\u8fdb\u884c\u89e3\u7801\u7684\u5e27\u7387\u5c11\u4e86\u4e00\u500d\uff0c\u81ea\u5df1\u7684\u4e3b\u673a\u662f nvidia \u663e\u5361\uff0c\u8fd9\u4e2a\u53ef\u80fd\u662f\u4ec0\u4e48\u539f\u56e0\uff1f</p>\n", 
      "date_published": "2024-11-18T10:26:55+00:00", 
      "title": "\u8bf7\u6559\u4e00\u4e2a\u5173\u4e8e ffmpeg \u7684\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1090588"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zhwguest", 
        "name": "zhwguest", 
        "avatar": "https://cdn.v2ex.com/avatar/b633/f688/433522_large.png?m=1685067457"
      }, 
      "url": "https://www.v2ex.com/t/1090239", 
      "title": "\u5982\u4f55\u4e0b\u8f7d\u5b98\u65b9\u7684 ffmpeg \u4e8c\u8fdb\u5236\u53d1\u5e03", 
      "id": "https://www.v2ex.com/t/1090239", 
      "date_published": "2024-11-17T04:07:07+00:00", 
      "content_html": "<p>\u9996\u5148\u627e\u5230 ffmpeg \u7684\u5b98\u65b9\u7f51\u7ad9\uff1a <a href=\"https://www.ffmpeg.org/\" rel=\"nofollow\">https://www.ffmpeg.org/</a></p>\n<p>\u7136\u540e\u6839\u636e\u81ea\u5df1\u7684 os \u548c arch \u627e\u5230\u76f8\u5e94\u7684\u5165\u53e3\u56fe\u6807\uff1b</p>\n<p>\u70b9\u51fb\u56fe\u6807\uff0c\u7136\u540e\u63d0\u793a\u8df3\u8f6c\u5230\u7b2c\u4e09\u65b9\u7f51\u7ad9\u8fdb\u884c\u4e0b\u8f7d\uff1f</p>\n<p>\u8fd9\u662f\u4ec0\u4e48\u9b54\u5e7b\u64cd\u4f5c\uff1f</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/crazystory", 
        "name": "crazystory", 
        "avatar": "https://cdn.v2ex.com/gravatar/9ffe86279d96388407c45e563c051568?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1068110", 
      "title": "\u89c6\u9891\u6a21\u677f\u66ff\u6362\u56fe\u7247\uff0c\u6709\u507f", 
      "id": "https://www.v2ex.com/t/1068110", 
      "date_published": "2024-08-27T04:38:37+00:00", 
      "content_html": "<p>\u7814\u7a76\u4e86\u4e00\u661f\u671f\uff0c\u641e\u4e0d\u5b9a\u4e86\uff0c\u6709\u507f\u8bf7\u5927\u4f6c\u5e2e\u5fd9\u89e3\u51b3\u4e0b\u3002\u4ee5\u4e0b\u662f\u9700\u6c42</p>\n<p>\u526a\u6620\u5236\u4f5c 10 \u79d2\u7684\u6a21\u677f\u89c6\u9891\uff0c\u8f6e\u6362 4 \u5f20\u56fe\uff0c\u5177\u6709\u8499\u7248\u548c\u8f6c\u573a\u7279\u6548\u3002\u9700\u8981\u901a\u8fc7 ffmpeg \u5728\u4fdd\u7559\u8499\u7248\u548c\u8f6c\u573a\u7684\u524d\u63d0\u4e0b\u66ff\u6362\u56fe\u7247</p>\n<p>vx YW55ZWZlbmdqaW5nbGluZw==</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jifengg", 
        "name": "jifengg", 
        "avatar": "https://cdn.v2ex.com/gravatar/1a9fd366a7d82468595b4275cce70f28?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1054559", 
      "title": "ffmpeg \u8fc7\u6ee4\u5668 xfade \u81ea\u5b9a\u4e49\u52a8\u753b\u7684\u7814\u7a76", 
      "id": "https://www.v2ex.com/t/1054559", 
      "date_published": "2024-07-03T07:42:51+00:00", 
      "content_html": "<p>\u672c\u6587\u65e0\u4efb\u4f55\u63a8\u5e7f\uff0c\u8bf7\u653e\u5fc3\u9605\u8bfb\u3002<br/>\n\u672c\u6587\u65e0\u4efb\u4f55\u63a8\u5e7f\uff0c\u8bf7\u653e\u5fc3\u9605\u8bfb\u3002<br/>\n\u672c\u6587\u65e0\u4efb\u4f55\u63a8\u5e7f\uff0c\u8bf7\u653e\u5fc3\u9605\u8bfb\u3002  </p>\n<h2>\u524d\u524d\u8a00</h2>\n<p>hello \uff0c\u5144\u5f1f\u4eec\uff0c\u6211\u53c8\u6765\u5206\u4eab\u6211\u7684 ffmpeg \u811a\u672c\u5566\u3002<br/>\n\u4e0a\u6b21\u5206\u4eab\u4e86\u4e00\u4e2a<a href=\"https://www.v2ex.com/t/1052395\" rel=\"nofollow\">\u4f7f\u7528 ffmpeg \uff0c\u5c06\u591a\u5f20\u56fe\u7247\u8f6c\u6362\u6210\u7c7b\u4f3c\u5e7b\u706f\u7247\u7684\u89c6\u9891\uff0c\u652f\u6301\u591a\u79cd\u8f6c\u573a\u6548\u679c</a>\uff0c\u8bf4\u8fc7\u5728\u7814\u7a76\u81ea\u5b9a\u4e49\u6548\u679c\uff0c\u76ee\u524d\u6709\u70b9\u5c0f\u6210\u679c\uff0c\u4e8e\u662f\u6709\u4e86\u672c\u6587\u3002</p>\n<p>\u672c\u6b21\u6ca1\u6709\u65b0\u589e\u811a\u672c\uff0c\u800c\u662f\u589e\u5f3a\u4e86<code>ffmpeg.img2video.js</code>\uff0c\u9884\u7f6e\u4e86\u4e00\u4e9b\u81ea\u5b9a\u4e49\u6548\u679c\uff0c\u5e76\u652f\u6301\u81ea\u5df1\u6dfb\u52a0\u6548\u679c\u3002</p>\n<p>\u4ee5\u4e0b\u7684\u90fd\u662f\u672c\u6b21\u7684\u6280\u672f\u5206\u4eab\u3002\u5982\u679c\u4f60\u4e0d\u611f\u5174\u8da3\uff0c\u53ef\u4ee5\u76f4\u63a5\u5230 GitHub \u66f4\u65b0\u811a\u672c\u3002</p>\n<h2>\u5f00\u6e90\u5730\u5740</h2>\n<p>GitHub \u5730\u5740\uff1a<a href=\"https://github.com/jifengg/ffmpeg-script\" rel=\"nofollow\">https://github.com/jifengg/ffmpeg-script</a></p>\n<h2>\u524d\u8a00</h2>\n<p>\u4f7f\u7528<code>xfade</code>\u8fc7\u6ee4\u5668\u505a\u89c6\u9891\u8f6c\u573a\u5207\u6362\u6548\u679c\uff0c\u672c\u8eab ffmpeg \u5df2\u7ecf\u63d0\u4f9b\u4e86 56 \u79cd\u6548\u679c\uff0c\u80fd\u6ee1\u8db3\u5927\u90e8\u5206\u9700\u6c42\u3002\u4e0d\u8fc7\uff0c\u66f4\u590d\u6742\u7684\u8fc7\u6e21\u6548\u679c\uff08\u4f8b\u5982\u7ffb\u9875\uff09\u8fd8\u6ca1\u6709\u3002<br/>\n\u6839\u636e\u6587\u6863\uff0c\u4f7f\u7528 transition=custom+expr \uff0c\u53ef\u4ee5\u5b9e\u73b0\u81ea\u5b9a\u4e49\u7684\u6548\u679c\u3002\u4f46\u662f\uff0c\u5b98\u65b9\u6587\u6863\u5e76\u6ca1\u6709\u5bf9<code>expr</code>\u5982\u4f55\u7f16\u5199\u505a\u8be6\u7ec6\u8bf4\u660e\uff0c\u4e5f\u6ca1\u6709 google \u5230\u3002<br/>\n\u56e0\u6b64\uff0c\u5bf9\u5176\u8fdb\u884c\u4e86\u4e00\u756a\u7814\u7a76\uff0c\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u51e0\u79cd\u6548\u679c\u3002\u7b80\u5355\u505a\u4e00\u4e2a\u4f7f\u7528\u6559\u7a0b\uff0c\u5e0c\u671b\u80fd\u591f\u5e2e\u52a9\u5230\u6709\u9700\u8981\u7684\u4eba\u3002  </p>\n<h2>\u6548\u679c\u9884\u89c8\uff08\u70b9\u51fb\u67e5\u770b\u89c6\u9891\uff0c\u89c6\u9891\u5747\u5c0f\u4e8e 1MB \uff09</h2>\n<h3>\u6c34\u6ef4</h3>\n<p><a href=\"https://github.com/jifengg/ffmpeg-script/assets/17020523/b3cec5b1-d747-46bd-aae1-924289aaddce\" rel=\"nofollow\">https://github.com/jifengg/ffmpeg-script/assets/17020523/b3cec5b1-d747-46bd-aae1-924289aaddce</a></p>\n<h3>\u767e\u53f6\u7a97</h3>\n<p><a href=\"https://github.com/jifengg/ffmpeg-script/assets/17020523/1bef9ae3-41c3-4747-ae41-9056ae4e6892\" rel=\"nofollow\">https://github.com/jifengg/ffmpeg-script/assets/17020523/1bef9ae3-41c3-4747-ae41-9056ae4e6892</a></p>\n<h3>\u7b80\u6613\u7ffb\u9875</h3>\n<p><a href=\"https://github.com/jifengg/ffmpeg-script/assets/17020523/30c810a1-7522-4829-8450-4602c8203853\" rel=\"nofollow\">https://github.com/jifengg/ffmpeg-script/assets/17020523/30c810a1-7522-4829-8450-4602c8203853</a></p>\n<h2>ffmpeg \u5b98\u65b9 wiki</h2>\n<p><a href=\"https://trac.ffmpeg.org/wiki/Xfade\" rel=\"nofollow\">https://trac.ffmpeg.org/wiki/Xfade</a></p>\n<h2>ffmpeg \u5b98\u65b9\u6587\u6863\u7ffb\u8bd1</h2>\n<p>\u4ee5\u4e0b\u7ffb\u8bd1\u81ea<a href=\"https://ffmpeg.org/ffmpeg-filters.html#xfade\" rel=\"nofollow\">FFmpeg xfade \u5b98\u65b9\u6587\u6863</a></p>\n<pre><code>xfade\n\n\u5c06\u6de1\u5165\u6de1\u51fa\u4ece\u4e00\u4e2a\u8f93\u5165\u89c6\u9891\u6d41\u5e94\u7528\u5230\u53e6\u4e00\u4e2a\u8f93\u5165\u89c6\u9891\u6d41\u3002\u6de1\u5165\u6de1\u51fa\u5c06\u6301\u7eed\u6307\u5b9a\u7684\u65f6\u95f4\u3002\n\u4e24\u4e2a\u8f93\u5165\u5fc5\u987b\u662f\u6052\u5b9a\u5e27\u901f\u7387\uff0c\u5e76\u4e14\u5177\u6709\u76f8\u540c\u7684\u5206\u8fa8\u7387\u3001\u50cf\u7d20\u683c\u5f0f\u3001\u5e27\u901f\u7387\u548c\u65f6\u95f4\u57fa\u51c6\u3002\n\n\u8be5\u8fc7\u6ee4\u5668\u63a5\u53d7\u4ee5\u4e0b\u9009\u9879\uff1a\n\ntransition\n    'custom'\n    [\u5ffd\u7565]\n\nduration\n    \u8bbe\u7f6e\u4ea4\u53c9\u6de1\u5165\u6de1\u51fa\u6301\u7eed\u65f6\u95f4\uff08\u4ee5\u79d2\u4e3a\u5355\u4f4d\uff09\u3002\u8303\u56f4\u4e3a 0 \u81f3 60 \u79d2\u3002\u9ed8\u8ba4\u6301\u7eed\u65f6\u95f4\u4e3a 1 \u79d2\u3002\n\noffset\n    \u8bbe\u7f6e\u76f8\u5bf9\u4e8e\u7b2c\u4e00\u4e2a\u8f93\u5165\u6d41\u7684\u4ea4\u53c9\u6de1\u5165\u6de1\u51fa\u5f00\u59cb\u65f6\u95f4\uff08\u4ee5\u79d2\u4e3a\u5355\u4f4d\uff09\u3002\u9ed8\u8ba4\u504f\u79fb\u91cf\u4e3a 0 \u3002\n\nexpr\n    \u8bbe\u7f6e\u81ea\u5b9a\u4e49\u8fc7\u6e21\u6548\u679c\u7684\u8868\u8fbe\u5f0f\u3002\n    \u8868\u8fbe\u5f0f\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u53d8\u91cf\u548c\u51fd\u6570\uff1a\n\n    X\n    Y\n        \u5f53\u524d\u6837\u672c\u7684\u5750\u6807\u3002\n\n    W\n    H\n        \u56fe\u50cf\u7684\u5bbd\u5ea6\u548c\u9ad8\u5ea6\u3002\n\n    P\n        \u8fc7\u6e21\u6548\u679c\u7684\u8fdb\u5c55\u3002\n         [\u8bd1\u6ce8] \u8fc7\u6e21\u5f00\u59cb\u65f6\uff0cP=1.0 \uff0c\u8fc7\u6e21\u7ed3\u675f\u65f6\uff0cP=0.0 \u3002\n\n    PLANE\n        \u76ee\u524d\u6b63\u5728\u5904\u7406\u7684\u5e73\u9762\u3002\n         [\u8bd1\u6ce8] \u8fd9\u91cc\u7684\u5e73\u9762\uff0c\u5176\u5b9e\u5c31\u662f\u6307\u50cf\u7d20\u683c\u5f0f\u7684\u5206\u91cf\u3002\n         [\u8bd1\u6ce8] \u53d6\u503c\u8303\u56f4\u7531\u8f93\u5165\u6d41\u7684\u50cf\u7d20\u683c\u5f0f pix_fmt \u51b3\u5b9a\uff0c\u5982 yuv420p \uff0c\u5219\u53d6\u503c\u8303\u56f4\u662f 0 \uff0c1 \uff0c2 \uff1b\u5982 rgba \uff0c\u5219\u53d6\u503c\u8303\u56f4\u662f 0 \uff0c1 \uff0c2 \uff0c3 \u3002\n\n    A\n        \u8fd4\u56de\u7b2c\u4e00\u4e2a\u8f93\u5165\u6d41\u5728\u5f53\u524d\u4f4d\u7f6e\u548c\u5e73\u9762\u7684\u503c\u3002\n\n    B\n        \u8fd4\u56de\u7b2c\u4e8c\u4e2a\u8f93\u5165\u6d41\u5728\u5f53\u524d\u4f4d\u7f6e\u548c\u5e73\u9762\u7684\u503c\u3002\n\n    a0(x,y)\n    a1(x,y)\n    a2(x,y)\n    a3(x,y)\n        \u8fd4\u56de\u7b2c\u4e00\u4e2a\u8f93\u5165\u7684\u7b2c\u4e00/\u7b2c\u4e8c/\u7b2c\u4e09/\u7b2c\u56db\u4e2a\u5206\u91cf\u7684 \u4f4d\u7f6e (x,y) \u5904\u7684\u50cf\u7d20\u7684\u503c\u3002\n         [\u8bd1\u6ce8] \u4f8b\u5982\uff0c\u50cf\u7d20\u683c\u5f0f\u662f yuv420p \uff0ca0 \u8fd4\u56de\u7684\u662f Y \u5206\u91cf\u3002a1 \u8fd4\u56de\u7684\u662f U \u5206\u91cf\u3002a2 \u8fd4\u56de\u7684\u662f V \u5206\u91cf\u3002\u6ca1\u6709 a3\n\n    b0(x,y)\n    b1(x,y)\n    b2(x,y)\n    b3(x,y)\n        \u8fd4\u56de\u7b2c\u4e8c\u4e2a\u8f93\u5165\u7684\u7b2c\u4e00/\u7b2c\u4e8c/\u7b2c\u4e09/\u7b2c\u56db\u4e2a\u5206\u91cf\u7684 \u4f4d\u7f6e (x,y) \u5904\u7684\u50cf\u7d20\u7684\u503c\u3002\n</code></pre>\n<h2>\u7406\u89e3 P</h2>\n<p>\u4e00\u822c\u6765\u8bf4\uff0cffmpeg \u4e2d\u652f\u6301\u65f6\u95f4\u8f74\u7f16\u8f91\u7684\u8fc7\u6ee4\u5668\uff0c\u90fd\u6709<code>t</code>\u548c<code>n</code>\u53c2\u6570\u53ef\u4ee5\u7528\u5728\u8868\u8fbe\u5f0f\u4e2d\uff0c\u5176\u4e2d<code>t</code>\u8868\u793a\u65f6\u95f4\u79d2\uff0c<code>n</code>\u8868\u793a\u5e27\u6570\u3002<br/>\n\u4f46\u662f xfade \u91cc\u5374\u662f\u7528\u7684 P \uff0c\u5b83\u4e0d\u662f<code>t</code>\u6216<code>n</code>\u3002\u5982\u679c\u4f60\u7406\u89e3\u9519\u4e86\uff0c\u4f1a\u53d1\u73b0\u81ea\u5b9a\u4e49\u6548\u679c\u5b8c\u5168\u6ca1\u6548\u3002<br/>\n\u56e0\u4e3a\uff0c\u5b83\u8868\u793a\u7684\u662f\u8fc7\u6e21\u6548\u679c\u7684\u8fdb\u5ea6\uff0c\u800c\u4e14\uff0c\u91cd\u8981\u7684\u662f\uff0c\u5b83\u662f\u4e2a\u9012\u51cf\u7684\u6570\u3002  </p>\n<ul>\n<li>\u8fc7\u6e21\u52a8\u753b\u5f00\u59cb\u7684\u65f6\u5019\uff0cP=1.0 \uff1b</li>\n<li>\u8fc7\u6e21\u52a8\u753b\u7ed3\u675f\u7684\u65f6\u5019\uff0cP=0.0 \uff1b</li>\n<li>\u5b83\u7684\u503c\u662f\u6309\u5e27\u7ebf\u6027\u9012\u51cf\u7684\uff0c\u4f8b\u5982\uff0cduration=4 \uff0cfps=25 \uff0c\u90a3\u4e48\u7b2c\u4e8c\u5e27\u7684\u65f6\u5019\uff0cP=1.0-1/(4*25)=0.99 \uff1b</li>\n<li>\n\u53ef\u4ee5\u901a\u8fc7\u6570\u5b66\u51fd\u6570\u6765\u6539\u53d8 P \u7684\u201c\u7ebf\u6027\u201d\uff0c\u4f8b\u5982 P*P*(3-2P)\uff0c\uff08<a href=\"https://en.wikipedia.org/wiki/Smoothstep\" rel=\"nofollow\">Smoothstep</a>\uff0c<a href=\"https://zh.numberempire.com/graphingcalculator.php?functions=x*x*(3-2*x)&amp;xmin=0&amp;xmax=1&amp;ymin=0&amp;ymax=1&amp;var=x\" rel=\"nofollow\">\u51fd\u6570\u56fe</a>\uff09\u3002<ul>\n<li>\u6ce8\u610f\uff0cP \u662f\u4ece 1.0 \u5230 0.0 \uff0c\u56e0\u6b64\u67e5\u770b\u51fd\u6570\u56fe\u7684\u65f6\u5019\u8981\u6ce8\u610f\u4ece\u53f3\u5f80\u5de6\u770b\u3002</li>\n<li>\u5982\u679c\u4f60\u89c9\u5f97\u4ece\u53f3\u5f80\u5de6\u770b\u4e0d\u76f4\u89c2\uff0c\u628a\u6240\u6709 P \u90fd\u6539\u6210(1-P)\u5427\u3002</li>\n<li>win11 \u81ea\u5e26\u7684\u8ba1\u7b97\u5668\u6709\u4e00\u4e2a\u201c\u7ed8\u56fe\u201d\u529f\u80fd\uff0c\u80fd\u591f\u5f88\u597d\u7684\u663e\u793a\u5404\u79cd\u6570\u5b66\u51fd\u6570\u7684\u56fe\u5f62\uff0c\u53ef\u4ee5\u7528\u6765\u8f85\u52a9\u7406\u89e3\u3002</li>\n</ul>\n</li>\n</ul>\n<h2>\u7406\u89e3 X,Y,W,H</h2>\n<p>X,Y \u8868\u793a\u5750\u6807\uff0c\u662f\u6307\u201c\u5f53\u524d\u6b63\u5728\u8ba1\u7b97\u8868\u8fbe\u5f0f\u7684\u50cf\u7d20\u7684\u5750\u6807\u201d\uff0c\u6309\u7167\u6211\u4eec\u8981\u5b9e\u73b0\u7684\u6548\u679c\uff0c\u51b3\u5b9a\u8be5\u50cf\u7d20\u5bf9\u5e94\u7684\u989c\u8272\u7801\u3002</p>\n<p>W,H \u662f\u56fe\u50cf\u7684\u5bbd\u9ad8\uff0c\u8fd9\u4e2a\u5728\u6574\u4e2a\u6e10\u53d8\u8fc7\u7a0b\u662f\u4fdd\u6301\u4e0d\u53d8\u7684\u3002</p>\n<h2>\u7406\u89e3 PLANE,A,B,a0(x,y),...,b0(x,y),...</h2>\n<p>a0(x,y)\u8868\u793a\u7b2c\u4e00\u4e2a\u89c6\u9891\u5750\u6807 x,y \u5904\u7684\u50cf\u7d20\u7684\u7b2c\u4e00\u4e2a\u5206\u91cf\u503c\u3002\nPLANE \u8868\u793a\u5f53\u524d\u662f\u8ba1\u7b97\u7684\u7b2c\u51e0\u4e2a\u5206\u91cf\u503c\u3002\nA \u662f\u4e00\u4e2a\u7b80\u5199\uff0c\u5f53 PLANE=0 \u65f6,A=a0(X,Y)\uff1b PLANE=1 \u65f6\uff0cA=a1(X,Y)\uff1b PLANE=2 \u65f6\uff0cA=a2(X,Y)\uff1b\u4ee5\u6b64\u7c7b\u63a8\u3002\nb \u548c B \u540c a \u548c A \u3002</p>\n<blockquote>\n<p>\u6ce8\u610f\uff0c\u65e0\u6cd5\u901a\u8fc7\u7c7b\u4f3c<code>a(plane,x,y)</code>\u7684\u65b9\u6cd5\u6765\u83b7\u5f97\u6307\u5b9a\u5750\u6807\u6307\u5b9a\u5206\u91cf\u7684\u503c\uff0c\u56e0\u6b64\u5728\u50cf\u7d20\u6709\u4f4d\u79fb\u7684\u65f6\u5019\uff0c\u8868\u8fbe\u5f0f\u4f1a\u6bd4\u8f83\u957f\u3002\u5982<code>if(eq(PLANE,0),a0(X,Y),if(eq(PLANE,1),a1(X,Y),if(eq(PLANE,2),a2(X,Y),0)))</code></p>\n</blockquote>\n<h2>\u7406\u89e3 expr</h2>\n<p><code>xfade</code>\u7684<code>expr</code>\uff0c\u8fd4\u56de\u4e00\u4e2a\u503c\uff0c\u4f46\u662f\u8fd9\u4e2a\u503c\u662f\u4ec0\u4e48\u542b\u4e49\u5462\uff0c\u4e00\u822c\u4eba\u770b\u6587\u6863\u5f88\u96be\u7406\u89e3\u3002<br/>\n\u4ee5 <code>300x200</code> \u7684\u8f93\u5165\u6e90\u4e3a\u4f8b\uff0c\u5047\u8bbe\u5176\u50cf\u7d20\u683c\u5f0f\u662f yuv420p \uff0c\u5219\u5176\u5206\u91cf\u4e2a\u6570\u662f 3 \u3002\uff08 ffmpeg \u652f\u6301\u7684\u50cf\u7d20\u683c\u5f0f\u53ca\u683c\u5f0f\u4fe1\u606f\uff0c\u53ef\u4ee5\u901a\u8fc7<code>ffmpeg -pix_fmts</code>\u67e5\u770b\uff09\u3002\n\u50cf\u7d20\u70b9\u662f<code>60000</code>\u4e2a\uff0c\u6bcf\u4e00\u5e27\u7684\u50cf\u7d20\u5206\u91cf\u603b\u6570\u5c31\u662f<code>60000*3=18 \u4e07</code>\u4e2a\u3002<br/>\n\u90a3\u4e48\uff0c\u8fc7\u6e21\u5f00\u59cb\u7684\u7b2c\u4e00\u5e27\uff0cffmpeg \u4f1a\u904d\u5386\u6bcf\u4e2a\u50cf\u7d20\u70b9\u7684\u6bcf\u4e2a\u5206\u91cf\uff0c\u5206\u522b\u8c03\u7528<code>expr</code>\uff0c\u5e76\u8bbe\u7f6e X,Y,PLANE \u7b49\u503c\u3002\u603b\u5171\u8c03\u7528<code>18 \u4e07</code>\u6b21\u83b7\u5f97\u5bf9\u5e94\u7684\u503c\uff0c\u6765\u5b8c\u6210\u7b2c\u4e00\u5e27\u7684\u6e32\u67d3\u3002\n\u5982\u679c\u6211\u4eec\u5e0c\u671b\u6bcf\u4e00\u5e27\u5c31\u662f\u663e\u793a\u7b2c\u4e00\u4e2a\u89c6\u9891\u7684\u753b\u9762\uff0c\u90a3\u4e48\u53ef\u4ee5\u5199<code>expr=A</code>\u5373\u53ef\u3002<code>A</code>\u8868\u793a\u7684\u5c31\u662f\u7b2c\u4e00\u4e2a\u89c6\u9891\u5f53\u524d\u50cf\u7d20\u5f53\u524d\u5206\u91cf\u7684\u503c\u3002  </p>\n<h3>\u5c1d\u8bd5 1 \uff0c\u5b9e\u73b0\u6e10\u9690\u6e10\u663e\u6548\u679c</h3>\n<p>\u5982\u679c\u6211\u4eec\u5e0c\u671b\u5b9e\u73b0\u7b2c\u4e00\u4e2a\u89c6\u9891\u6e10\u6e10\u53d8\u900f\u660e\uff0c\u7b2c\u4e8c\u4e2a\u89c6\u9891\u7531\u900f\u660e\u6e10\u6e10\u663e\u73b0\uff0c\u7c7b\u4f3c<code>xfade</code>\u9ed8\u8ba4\u7684\u6548\u679c<code>fade</code>\uff0c\u90a3\u4e48\u53ef\u4ee5\u5199<code>expr='A*P+B*(1-P)'</code>\u3002<br/>\n\u56e0\u4e3a P \u662f\u4ece 1.0 \u7ebf\u6027\u53d8\u6210 0.0 \u7684\u3002\u6240\u4ee5\u4e00\u5f00\u59cb P=1 \uff0c\u8868\u8fbe\u5f0f\u8ba1\u7b97\u7ed3\u679c=<code>A</code>\uff0c\u770b\u5230\u7684\u5c31\u662f\u53ea\u6709\u7b2c\u4e00\u4e2a\u89c6\u9891\u753b\u9762\uff0c\u5230\u4e00\u534a\u65f6\uff0cP=0.5 \uff0c\u7ed3\u679c=<code>0.5A+0.5B</code>\uff0c\u753b\u9762\u5c31\u662f\u4e24\u4e2a\u89c6\u9891\u5206\u522b\u534a\u900f\u660e\u53e0\u52a0\u5728\u4e00\u8d77\u3002\u6700\u540e P=0.0 \u65f6\uff0c\u7ed3\u679c=<code>B</code>\uff0c\u5c31\u53ea\u5269\u4e0b\u7b2c\u4e8c\u4e2a\u89c6\u9891\u7684\u753b\u9762\u4e86\u3002</p>\n<h3>\u5c1d\u8bd5 2 \uff0c\u5b9e\u73b0\u64e6\u9664\u6548\u679c</h3>\n<p>\u540c\u6837\u7684\uff0c\u5982\u679c\u6211\u4eec\u5e0c\u671b\u5b9e\u73b0\u4e00\u4e2a\u4ece\u53f3\u5f80\u5de6\u64e6\u9664\u7684\u6548\u679c\uff08\u56fe\u7247\u5f15\u7528\u81ea<a href=\"https://trac.ffmpeg.org/wiki/Xfade\" rel=\"nofollow\">https://trac.ffmpeg.org/wiki/Xfade</a>\uff09\uff1a<br/>\n<img alt=\"wipeleft\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://trac.ffmpeg.org/raw-attachment/wiki/Xfade/wipeleft.gif\"/></p>\n<p>\u5206\u6790\u4e00\u4e0b\uff0c\u5206\u5272\u7ebf\u5728\u753b\u9762\u6c34\u5e73\u7ebf\u4e0a\u7684\u4f4d\u7f6e X \uff0c\u9664\u4ee5\u5bbd\u5ea6 W \uff0c\u5176\u5b9e\u5c31\u662f\u7b49\u4e8e P \uff0c\u4e8e\u662f\uff0c\u6211\u4eec\u53ef\u4ee5\u8ba9\u5206\u5272\u7ebf\u5de6\u8fb9\u7684\u663e\u793a\u753b\u9762 A \uff0c\u53f3\u8fb9\u7684\u663e\u793a\u753b\u9762 B \u3002\n<code>expr='if(lt(X/W,P),A,B)'</code>\uff1a\u5f53<code>X/W&lt;P</code>\u7684\u65f6\u5019\uff0c\u8bf4\u660e X \u5728\u5206\u5272\u7ebf\u5de6\u8fb9\uff0c\u4e8e\u662f\u663e\u793a A \uff0c\u5426\u5219\u663e\u793a B \u3002</p>\n<blockquote>\n<p>\u5206\u5272\u7ebf\u4e0a\u663e\u793a A \u8fd8\u662f B \uff0c\u5f71\u54cd\u4e0d\u5927\u3002\u8fd9\u91cc\u662f\u663e\u793a\u4e86 B \uff0c\u5982\u679c\u8981\u663e\u793a A \uff0c\u53ef\u4ee5\u7528<code>lte</code>\u4ee3\u66ff<code>lt</code>\u3002</p>\n</blockquote>\n<h3>\u5c1d\u8bd5 3 \uff0c\u5b9e\u73b0\u63a8\u8d70\u6548\u679c</h3>\n<p>\u4ece\u4e0a\u9762\u4e24\u4e2a\u4f8b\u5b50\u4f60\u5927\u6982\u80fd\u7406\u89e3 expr \u8981\u8fd4\u56de\u4ec0\u4e48\u5185\u5bb9\u4e86\u3002\u6211\u4eec\u63a5\u7740\u7b2c\u4e09\u4e2a\u4f8b\u5b50\u3002\n\u5982\u679c\u6211\u4eec\u5e0c\u671b\u5b9e\u73b0\u7684\u662f\u4e00\u4e2a\u4ece\u53f3\u5f80\u5de6<code>\u63a8\u8d70</code>\u7684\u6548\u679c\uff1a<br/>\n<img alt=\"slideleft\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://trac.ffmpeg.org/raw-attachment/wiki/Xfade/slideleft.gif\"/></p>\n<p>\u4f60\u4f1a\u53d1\u73b0\uff0c\u53d8\u5f97\u66f4\u590d\u6742\u4e86\u3002\u4f60\u53ef\u4ee5\u5148\u6682\u505c\u8bd5\u8bd5\u81ea\u5df1\u80fd\u5426\u5199\u51fa\u6765\u3002</p>\n<p>\u4e3a\u4ec0\u4e48\u66f4\u590d\u6742\u4e86\uff1f\u4ee5\u5750\u6807(0,0)\u4e3a\u4f8b\uff0c\u4ed6\u663e\u793a\u7684\u50cf\u7d20\u65f6\u523b\u90fd\u5728\u53d8\u5316\uff08\u56e0\u4e3a\u753b\u9762\u5728\u5f80\u5de6\u79fb\u52a8\uff09\u3002<br/>\n\u4f8b\u5982\uff0c\u5728 P=0.8 \u7684\u65f6\u5019\uff0c\u5b83(0,0)\u5e94\u8be5\u662f\u89c6\u9891 A X=W*0.2,Y=0 \u5750\u6807\u5904\u7684\u50cf\u7d20\u503c\u3002\uff08\u8fd9\u91cc\u9700\u8981\u597d\u597d\u7406\u89e3\uff0c\u53c2\u8003\u4e0b\u56fe\u5e2e\u5fd9\u7406\u89e3\uff09</p>\n<p><img alt=\"image\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://github.com/jifengg/ffmpeg-script/assets/17020523/c8e6a23c-03f2-4f56-9db4-1b7afe0d383b\"/></p>\n<p>\u5728<code>X/W&gt;P</code>\u7684\u5730\u65b9\uff0c\u5e94\u8be5\u663e\u793a\u89c6\u9891 B \u7684\u753b\u9762\uff0c\u5176\u5750\u6807\u8f6c\u6362\u5173\u7cfb\u662f(X-P*W,Y)\u3002<br/>\n\u6ce8\u610f\uff0c\u6b64\u65f6\u4f60\u6ca1\u6cd5\u518d\u7528\u503c<code>A</code>\u548c<code>B</code>\u4e86\uff0c\u56e0\u4e3a\u5b83\u4eec\u662f\u5750\u6807(X,Y)\u7684\u5206\u91cf\uff0c\u800c\u6211\u4eec\u8981\u5728(X,Y)\u5904\u663e\u793a\u522b\u7684\u5750\u6807\u7684\u50cf\u7d20\uff0c\u8fd9\u4e2a\u6211\u4eec\u5728\u4e0a\u9762<a href=\"#%E7%90%86%E8%A7%A3-planeaba0xyb0xy\" rel=\"nofollow\">\u7406\u89e3 PLANE,A,B,a0(x,y),...,b0(x,y),...</a>\u7684\u5730\u65b9\u8bf4\u8fc7\u4e86\u3002</p>\n<p>\u90a3\u4e48\u8fd9\u4e2a\u8868\u8fbe\u5f0f\u8981\u600e\u4e48\u5199\u5462\uff1f</p>\n<pre><code>expr='if(lt(X/W,P),^\nif(eq(PLANE,0),a0(X+(1-P)*W,Y),^\nif(eq(PLANE,1),a1(X+(1-P)*W,Y),^\nif(eq(PLANE,2),a2(X+(1-P)*W,Y),0)))^\n,^\nif(eq(PLANE,0),b0(X-P*W,Y),^\nif(eq(PLANE,1),b1(X-P*W,Y),^\nif(eq(PLANE,2),b2(X-P*W,Y),0)))^\n)'\n</code></pre>\n<blockquote>\n<p>\u6211\u6d4b\u8bd5\u7684\u65f6\u5019\u7528\u7684\u662f windows \u7684 bat \u811a\u672c\uff0c\u4e3a\u4e86\u65b9\u4fbf\u7406\u89e3\u548c\u4fee\u6539\uff0c\u7528^\u8fdb\u884c\u4e86\u6362\u884c\u3002\u6ce8\u610f\u4e0d\u8981\u6709\u7a7a\u683c\uff0c\u5426\u5219\u4f1a\u62a5\u9519\u3002<br/>\n\u6d4b\u8bd5\u7684\u65f6\u5019\u7528\u7684\u662f yuv420p \u50cf\u7d20\u683c\u5f0f\uff0c\u56e0\u6b64\u8868\u8fbe\u5f0f\u6ca1\u6709\u7528\u5230 a3 \uff0c\u5982\u679c\u662f\u7528\u4e86 4 \u4e2a\u5206\u91cf\u7684\u50cf\u7d20\u683c\u5f0f\u9700\u8981\u628a a3 \u6309\u7167\u4e0a\u9762\u7684\u683c\u5f0f\u52a0\u8fdb\u53bb\u3002</p>\n</blockquote>\n<p>\u5176\u4e2d\uff0c\u5206\u5272\u7ebf\u5de6\u8fb9\u663e\u793a\u89c6\u9891 A \u7684\u753b\u9762\uff0c\u4e14 x \u5750\u6807\u5de6\u79fb\u4e86(1-P)*W \u4e2a\u50cf\u7d20\uff0c\u56e0\u6b64\u5176 x \u5750\u6807\u8868\u8fbe\u5f0f\u662f<code>X+(1-P)*W</code>\uff1b<br/>\n\u53f3\u8fb9\u663e\u793a\u89c6\u9891 B \u7684\u753b\u9762\uff0c\u4e14 x \u5750\u6807\u53f3\u79fb\u5230\u4e86\u5206\u5272\u7ebf\u53f3\u8fb9\uff0c\u56e0\u6b64\u5176 x \u5750\u6807\u8868\u8fbe\u5f0f\u662f<code>X-P*W</code>\u3002<br/>\n\u56e0\u4e3a\u662f\u6c34\u5e73\u79fb\u52a8\uff0c\u6240\u4ee5 y \u5750\u6807\u4fdd\u6301<code>Y</code>\u5373\u53ef\u3002</p>\n<p>\u4e8e\u662f\uff0c\u968f\u7740 P \u4ece 1.0 \u6e10\u53d8\u5230 0.0 \uff0c\u89c6\u9891 A \u5c31\u50cf\u88ab\u89c6\u9891 B \u4ece\u53f3\u8fb9\u63a8\u5230\u4e86\u5de6\u8fb9\uff0c\u5b8c\u6210\u4e86\u4e00\u4e2a\u8fc7\u6e21\u6548\u679c\u3002</p>\n<h2>\u5c0f\u7ed3</h2>\n<p>\u73b0\u5728\uff0c\u4f60\u5df2\u7ecf\u4e86\u89e3\u4e86 expr \u8981\u600e\u4e48\u7f16\u5199\u6765\u5b9e\u73b0\u8fc7\u6e21\u6548\u679c\u4e86\u3002\u6211\u8fd8\u5b9e\u73b0\u4e86\u4e00\u4e9b\u5176\u5b83\u6548\u679c\uff0c\u5305\u62ec\u793a\u4f8b\u91cc\u7684\uff0c\u4f60\u53ef\u4ee5\u5728 GitHub \u4e0a<a href=\"https://github.com/jifengg/ffmpeg-script/tree/main/preset/xfade\" rel=\"nofollow\">\u67e5\u770b</a>\u3002</p>\n<h2>\u6027\u80fd</h2>\n<p>\u5728 windows \u4e0b\u521b\u5efa 2 \u4e2a bat \u6587\u4ef6\uff0c\u5206\u522b\u8f93\u5165\u6d4b\u8bd5\u547d\u4ee4\uff1a</p>\n<pre><code class=\"language-bat\">@echo off\n@REM \u4f7f\u7528 custom \u5b9e\u73b0 slideleft \u6548\u679c\nffmpeg -y -hide_banner ^\n-f lavfi -i \"pal100bars=r=1/1000\" ^\n-f lavfi -i \"colorchart=r=1/1000\" ^\n-filter_complex ^\n[0:v]format=yuv420p,scale=960:480,fps=25,trim=duration=40[v1];^\n[1:v]format=yuv420p,scale=960:480,fps=25,trim=duration=40.04[v2];^\n[v1][v2]xfade=duration=40:offset=0:transition=custom:^\nexpr='if(lt(X/W,P),^\nif(eq(PLANE,0),a0(X+(1-P)*W,Y),^\nif(eq(PLANE,1),a1(X+(1-P)*W,Y),^\nif(eq(PLANE,2),a2(X+(1-P)*W,Y),0)))^\n,^\nif(eq(PLANE,0),b0(X-P*W,Y),^\nif(eq(PLANE,1),b1(X-P*W,Y),^\nif(eq(PLANE,2),b2(X-P*W,Y),0)))^\n)' ^\n-crf 23 -c:v h264 -pix_fmt yuv420p -movflags +faststart -r 25 -aspect 960:480 ^\nout1.mp4\n</code></pre>\n<pre><code class=\"language-bat\">@echo off\n@REM \u4f7f\u7528\u5185\u7f6e\u7684 slideleft \u6548\u679c\nffmpeg -y -hide_banner ^\n-f lavfi -i \"pal100bars=r=1/1000\" ^\n-f lavfi -i \"colorchart=r=1/1000\" ^\n-filter_complex ^\n[0:v]format=yuv420p,scale=960:480,fps=25,trim=duration=40[v1];^\n[1:v]format=yuv420p,scale=960:480,fps=25,trim=duration=40.04[v2];^\n[v1][v2]xfade=duration=40:offset=0:transition=slideleft ^\n-crf 23 -c:v h264 -pix_fmt yuv420p -movflags +faststart -r 25 -aspect 960:480 ^\nout2.mp4\n</code></pre>\n<p>\u8fd9\u91cc\u4f7f\u7528\u7684\u52a8\u753b\u65f6\u957f\u662f 40 \u79d2\uff0c\u53ef\u4ee5\u81ea\u884c\u4fee\u6539\u6210 0~60 \u79d2\u3002<br/>\n\u5728\u6211\u7535\u8111\u4e0a\u8fd0\u884c\uff0c\u8017\u65f6\u5206\u522b\u662f\uff1a\u81ea\u5b9a\u4e49<code>17.514 \u79d2</code>,\u5185\u7f6e<code>1.605 \u79d2</code>\u3002<br/>\n\u53ef\u4ee5\u770b\u51fa\uff0c\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u6548\u679c\uff0c\u8fdc\u6bd4\u5185\u7f6e\u6548\u679c\u66f4\u8017\u65f6\u3002\u539f\u56e0\u6211\u4eec\u5728\u201c<a href=\"#%E7%90%86%E8%A7%A3-expr\" rel=\"nofollow\">\u7406\u89e3 expr</a>\u201d\u6709\u63d0\u8fc7\uff0c\u56e0\u4e3a\u6bcf\u4e00\u5e27\u9700\u8981\u8c03\u7528 expr \u6b21\u6570=960\u00d7480\u00d73=1,382,400 \u3002\u4e00\u767e\u591a\u4e07\u6b21\u3002\u800c\u4e14\u662f\u7eaf CPU \u8fd0\u7b97\uff0c\u56e0\u6b64\u6548\u7387\u81ea\u7136\u5e95\u4e0b\u3002</p>\n<p>\u597d\u5728\u4e00\u822c\u7684\u8fc7\u573a\u65f6\u957f\u662f 3 \u30014 \u79d2\u5de6\u53f3\uff0c\u5f71\u54cd\u8fd8\u5728\u53ef\u63a5\u53d7\u8303\u56f4\u5185\u3002</p>\n<p>\u5982\u679c\u4f60\u5728\u5bfb\u627e\u66f4\u9ad8\u6548\u7684\u81ea\u5b9a\u4e49\u6548\u679c\uff0c\u53ef\u4ee5\u8003\u8651\u4f7f\u7528<code>xfade_opencl</code>\u8fc7\u6ee4\u5668\uff0c\u6216\u8005\u81ea\u884c\u7f16\u8bd1 ffmpeg \uff0c\u52a0\u5165<code>gl-transition</code>\u8fc7\u6ee4\u5668\u3002</p>\n<h2>\u5176\u5b83\u8f6c\u573a\u8fc7\u6ee4\u5668</h2>\n<h3>xfade_opencl</h3>\n<p>\u8981\u4f7f\u7528<code>xfade_opencl</code>\uff0c\u9700\u8981\u7f16\u8bd1\u7684\u65f6\u5019\u52a0\u5165<code>--enable-opencl</code>\uff0c\u4e14\u8fd0\u884c\u7684\u673a\u5668\u6709\u652f\u6301 opencl \u7684\u8bbe\u5907\uff08\u4e00\u822c\u6307\u663e\u5361\uff09\u3002<br/>\n\u8981\u67e5\u770b\u5f53\u524d\u673a\u5668\u6709\u54ea\u4e9b opencl \u7684\u8bbe\u5907\uff0c\u53ef\u4ee5\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a</p>\n<pre><code>ffmpeg -v debug -init_hw_device opencl\n</code></pre>\n<p>\u6253\u5370\u51fa\u7c7b\u4f3c\u4fe1\u606f\uff1a</p>\n<pre><code>[AVHWDeviceContext @ 0000027894f28400] 1 OpenCL platforms found.\n[AVHWDeviceContext @ 0000027894f28400] 1 OpenCL devices found on platform \"NVIDIA CUDA\".\n[AVHWDeviceContext @ 0000027894f28400] 0.0: NVIDIA CUDA / NVIDIA GeForce RTX *****\n</code></pre>\n<p>\u5176\u4e2d<code>0.0</code>\u5c31\u662f\u53ef\u7528\u7684 opencl \u8bbe\u5907\u7f16\u53f7\uff0c\u5728 ffmpeg \u547d\u4ee4\u4e2d\u6307\u5b9a\u4f7f\u7528\u8be5\u8bbe\u5907\uff1a</p>\n<pre><code>ffmpeg -y -hide_banner -init_hw_device opencl=ocldev:0.0 -filter_hw_device ocldev ^\n-f lavfi -r 25 -t 40 -i \"pal100bars\" ^\n-f lavfi -r 25 -t 40.04 -i \"colorchart\" ^\n-filter_complex ^\n[0:v]format=yuv420p,scale=960:480,hwupload[v0];^\n[1:v]format=yuv420p,scale=960:480,hwupload[v1];^\n[v0][v1]xfade_opencl=duration=40:offset=0:transition=slideleft,hwdownload,format=yuv420p ^\n-c:v h264_nvenc -pix_fmt yuv420p -movflags +faststart -r 25 -aspect 960:480 ^\nout3.mp4\n</code></pre>\n<p>\u6027\u80fd\u6bd4\u81ea\u5b9a\u4e49 xfade \u6548\u679c\u597d\u5f88\u591a\uff0c\u552f\u4e00\u8981\u6c42\u5c31\u662f\u9700\u8981\u652f\u6301 opencl \u7684\u8bbe\u5907\uff08\u4e00\u822c\u6307\u663e\u5361\uff09\u3002<br/>\n\u4e14\uff0c<code>xfade_opencl</code>\u4e5f\u662f\u652f\u6301\u81ea\u5b9a\u4e49\u6548\u679c\u7684\uff0c<a href=\"https://ffmpeg.org/ffmpeg-filters.html#xfade_005fopencl\" rel=\"nofollow\">\u5b98\u65b9\u6587\u6863</a>\u3002<br/>\n\u5185\u7f6e\u7684\u51e0\u4e2a\u6548\u679c\u7684\u6e90\u7801\u53ef\u4ee5\u67e5\u770b GitHub \u4e0a ffmpeg \u7684\u6e90\u7801:<a href=\"https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/opencl/xfade.cl\" rel=\"nofollow\">https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/opencl/xfade.cl</a></p>\n<h3>gl-transition</h3>\n<p><a href=\"https://gl-transitions.com/\" rel=\"nofollow\">gl-transitions</a>\u662f\u7531\u5f00\u53d1\u8005 Gilles Lamothe \u521b\u5efa\u7684\uff0c\u5b83\u5c01\u88c5\u4e86\u5927\u91cf\u7684 GPU \u52a0\u901f\u8fc7\u6e21\u6548\u679c\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\u6eb6\u89e3\u3001\u63a8\u62c9\u3001\u65cb\u8f6c\u7b49\u591a\u79cd\u7c7b\u578b\u3002\u8fd9\u4e9b\u8fc7\u6e21\u6548\u679c\u53ef\u4ee5\u8f7b\u677e\u5730\u6574\u5408\u5230\u4f60\u7684\u56fe\u5f62\u5e94\u7528\u7a0b\u5e8f\u4e2d\uff0c\u65e0\u8bba\u4f60\u662f\u5f00\u53d1\u6e38\u620f\u3001\u89c6\u9891\u7f16\u8f91\u8f6f\u4ef6\u8fd8\u662f\u5b9e\u9a8c\u6027\u7684\u827a\u672f\u9879\u76ee\u3002<br/>\n\u5b83\u4f7f\u7528 OpenGL \u8fdb\u884c\u52a0\u901f\uff0c\u56e0\u6b64\uff0c\u4e5f\u9700\u8981\u652f\u6301 OpenGL \u7684\u8bbe\u5907\uff08\u4e00\u822c\u6307\u663e\u5361\uff09\u3002<br/>\n\u5b83\u4e0d\u662f ffmpeg \u4e13\u5c5e\u7684\uff0c\u4f46\u662f\u53ef\u4ee5\u505a\u4e3a\u4e00\u4e2a\u8fc7\u6ee4\u5668\u6dfb\u52a0\u5230 ffmpeg \u4e2d\u3002\u53c2\u8003\u8fd9\u4e2a GitHub \u9879\u76ee<a href=\"https://github.com/transitive-bullshit/ffmpeg-gl-transition\" rel=\"nofollow\">transitive-bullshit/ffmpeg-gl-transition</a>\u3002\n\u7f16\u8bd1\u540e\uff0c\u4f60\u5c06\u53ef\u4ee5\u4f7f\u7528\u5176\u5b98\u7f51\u4e0a\u7684<a href=\"https://gl-transitions.com/gallery\" rel=\"nofollow\">\u6240\u6709\u6548\u679c</a>\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u81ea\u5df1\u7f16\u5199\u81ea\u5b9a\u4e49\u7684\u6548\u679c\u3002</p>\n<p>\u6027\u80fd\u65b9\u9762\uff0c\u56e0\u4e3a\u6211\u6ca1\u6709\u81ea\u884c\u7f16\u8bd1\u6d4b\u8bd5\uff0c\u6240\u4ee5\u65e0\u6cd5\u7ed9\u51fa\u5177\u4f53\u6570\u636e\u3002</p>\n<p>\u5b83\u4f7f\u7528 GLSL \u8bed\u8a00\u7f16\u5199\uff0c\u5982\u679c\u4f60\u770b\u4e86\u4e0a\u9762 OpenCL \u7684\u90e8\u5206\uff0c\u4f60\u4f1a\u53d1\u73b0\u5b83\u4eec\u6709\u5f88\u591a\u5171\u540c\u70b9\u3002<br/>\n\u751a\u81f3\uff0c\u6211\u5728\u7f16\u5199<code>xfade</code>\u81ea\u5b9a\u4e49\u8868\u8fbe\u5f0f\u7684\u65f6\u5019\uff0c\u4e5f\u53c2\u8003\u4e86\u5b83\u7684 GLSL \u4ee3\u7801\u3002\u6bd4\u5982\u6548\u679c\u9884\u89c8\u4e2d\u7684<a href=\"#%E6%B0%B4%E6%BB%B4\" rel=\"nofollow\">\u6c34\u6ef4</a>\uff0c\u5c31\u662f\u53c2\u8003\u4e86<a href=\"https://gl-transitions.com/editor/WaterDrop\" rel=\"nofollow\">WaterDrop</a>\u3002  </p>\n<h2>\u7ed3\u8bed</h2>\n<p>\u4e0d\u77e5\u9053\u662f ffmpeg \u5b98\u65b9\u89c9\u5f97 xfade \u7684 expr \u7f16\u5199\u592a\u8fc7\u5bb9\u6613\uff0c\u8fd8\u662f\u89c9\u5f97\u6027\u80fd\u4e0d\u884c\u4e0d\u5efa\u8bae\u4f7f\u7528\uff0c\u53cd\u6b63\u5b98\u65b9\u6587\u6863\u53ca wiki \u90fd\u6ca1\u6709\u793a\u4f8b\uff0c\u4e5f\u6ca1\u6709\u63d0\u53ca\u5982\u4f55\u7f16\u5199\u3002<br/>\n\u6211\u81ea\u5df1\u57fa\u672c\u4e0a\u662f\u81ea\u5df1\u770b\u7740\u6587\u6863\u731c\u6d4b\u3001\u5c1d\u8bd5\uff0c\u6162\u6162\u7684\u6478\u7d22\u51fa\u6765\u4e00\u4e9b\u95e8\u9053\u3002\u60f3\u7740\u7f51\u4e0a\u6ca1\u6709\u4e00\u4e2a\u7c7b\u4f3c\u7684\u6559\u7a0b\uff0c\u4e8e\u662f\u53d8\u5199\u4e86\u8fd9\u4e2a\u6587\u7ae0\u3002<br/>\n\u5982\u679c\u4f60\u53d1\u73b0\u6587\u7ae0\u54ea\u91cc\u6709\u95ee\u9898\uff0c\u6b22\u8fce\u6307\u51fa\uff0c\u5927\u5bb6\u5171\u540c\u8fdb\u6b65\u3002  </p>\n<p>\u672c\u6587\u5b58\u6863\uff1a<a href=\"https://github.com/jifengg/ffmpeg-script/blob/main/docs/ffmpeg.xfade.md\" rel=\"nofollow\">https://github.com/jifengg/ffmpeg-script/blob/main/docs/ffmpeg.xfade.md</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/ruoqin", 
        "name": "ruoqin", 
        "avatar": "https://cdn.v2ex.com/gravatar/81e5fb52e2db4cf79e057c86a4ccd378?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1047493", 
      "title": "\u5173\u4e8e\u6211\u5728 fcp \u5bfc\u5165\u89c6\u9891\u65f6\u51fa\u73b0\u7684\u65e0\u6cd5\u89e3\u51b3\u7684\u95ee\u9898\uff0c\u8bf7\u6c42\u5404\u4f4d ffmpeg \u5927\u4f6c\u7684\u5e2e\u5fd9", 
      "id": "https://www.v2ex.com/t/1047493", 
      "date_published": "2024-06-06T13:30:59+00:00", 
      "content_html": "<p>\uff08\u867d\u7136\u8bf4\u662f fcp \u7684\u95ee\u9898\uff0c\u4f46\u5f52\u6839\u5230\u5e95\u8fd8\u662f\u89c6\u9891\u7f16\u7801\u7684\u95ee\u9898\uff0c\u719f\u6089 ffmpeg \u7684\u670b\u53cb\u505a\u719f\u6089\u4e0d\u8fc7\u89c6\u9891\u7f16\u7801\u4e86\uff09</p>\n<p>\u672c\u4eba\u5728\u7528\u7cfb\u7edf macos sonama 14.5 fcp \u7248\u672c\u4e3a 10.6.5\n\u5df2\u77e5 fcp \u652f\u6301\u5bfc\u5165 hevc \u89c6\u9891\uff0c\u56fe\u8bc1 <a href=\"https://imgse.com/i/pkY4h9S\" rel=\"nofollow\">https://imgse.com/i/pkY4h9S</a>\n\u4f7f\u7528\u4e86\u4e24\u4e2a\u76f8\u540c\u5185\u5bb9\u7684\u7d20\u6750\uff0c\u5206\u522b\u4e3a\u4e24\u4f4d\u538b\u5236\u8005\u8fdb\u884c\u7684\u538b\u5236\uff0c\u5176\u4e2d\u4e0a\u56fe\u53ef\u4ee5\u6b63\u5e38\u5bfc\u5165 fcp \uff0c\u4e0b\u56fe\u5e76\u4e0d\u53ef\u4ee5\n<a href=\"https://imgse.com/i/pkY47Bn\" rel=\"nofollow\">https://imgse.com/i/pkY47Bn</a>\n<a href=\"https://imgse.com/i/pkY45cQ\" rel=\"nofollow\">https://imgse.com/i/pkY45cQ</a>\n\u672c\u4eba\u7422\u78e8\u4e86\u534a\u5929\u4e5f\u4e0d\u660e\u767d\uff0c\u611f\u89c9\u5e94\u8be5\u548c hevc \u95ee\u9898\u4e0d\u5927\uff0c\u53ef\u80fd\u662f\u5176\u4ed6\u9879\u7684\u95ee\u9898\n\u6211\u53c8\u62ff\u4e86\u4e00\u4e2a\u5b8c\u5168\u4e0d\u4e00\u6837\u7684\u89c6\u9891\u8fdb\u884c\u4e86\u8bc1\u660e\uff0c\u8be5\u89c6\u9891\u53ef\u6b63\u5e38\u5bfc\u5165 fcp \uff0cmediainfo \u5982\u56fe <a href=\"https://imgse.com/i/pkY5pu9\" rel=\"nofollow\">https://imgse.com/i/pkY5pu9</a></p>\n<p>\u5982\u679c\u60a8\u6709\u5934\u7eea\uff0c\u9ebb\u70e6\u8bf7\u544a\u8bc9\u6211\uff0c\u6211\u611f\u6fc0\u4e0d\u8c22\uff01</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/dzdh", 
        "name": "dzdh", 
        "avatar": "https://cdn.v2ex.com/avatar/1683/7ebf/226307_large.png?m=1757987240"
      }, 
      "url": "https://www.v2ex.com/t/1044186", 
      "date_modified": "2024-05-27T01:47:51+00:00", 
      "content_html": "<p>\u4f2a\u4ee3\u7801\u5982\u4e0b\uff1a</p>\n<pre><code class=\"language-go\">func main() {\n    url := \"http://a.mp4\"\n    args := strings.Split(\"ffmpeg -y -i pipe:0 -f mpegts pipe:1\", \" \")\n\n    ctx, cancel := context.WithCancel(context.Background())\n    cmd := exec.CommandContext(ctx, args[0], args[1:]...)\n    \n    pipe0, _ := cmd.StdinPipe()\n    pipe1, _ := cmd.StdoutPipe()\n    \n    cmd.Start()\n    go func () {\n        cmd.Wait()\n    }    \n    go func () {\n       file := os.Openfile....\n       io.Copy(file, pipe1)\n    }\n    \n    io.Copy(pipe0, http.resp.body)\n}\n</code></pre>\n<p>\u95ee\u9898\u662f\uff0cwrite \u5b8c\u6210\u4e86\uff0c\u4f46\u662f\u6211\u4e0d\u786e\u5b9a\u8f6c\u7801\u5b8c\u6210\u4e86\u6ca1\u3002\u53bb\u76d1\u542c stderr \u5417\uff1f\u770b stderr \u7684\u5df2\u5b8c\u6210\u8f6c\u7801\u65f6\u957f\u662f\u4e0d\u662f\u7b49\u4e8e\u9884\u671f\uff1f</p>\n", 
      "date_published": "2024-05-27T01:46:18+00:00", 
      "title": "go + ffmpeg pipe \u600e\u4e48\u786e\u5b9a\u5f53\u524d\u8f6c\u7801\u64cd\u4f5c\u5df2\u7ecf\u7ed3\u675f\uff0c\u53ef\u4ee5\u505c\u4e86", 
      "id": "https://www.v2ex.com/t/1044186"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/cnleoyang", 
        "name": "cnleoyang", 
        "avatar": "https://cdn.v2ex.com/gravatar/ccb2057e7998a47dcc6d7deba85e54c6?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1042677", 
      "title": "\u7ed9\u4eba\u58f0\u89c6\u9891\u52a0\u5165\u80cc\u666f\u58f0\u97f3\uff0c\u5982\u4f55\u505a\u5230\u81ea\u52a8\u8c03\u6574\u80cc\u666f\u7684\u97f3\u91cf", 
      "id": "https://www.v2ex.com/t/1042677", 
      "date_published": "2024-05-21T08:21:33+00:00", 
      "content_html": "\u5c31\u662f\u5408\u5e76\u4e24\u4e2a\u97f3\u8f68\uff0c\u671f\u5f85\u7684\u6548\u679c\u662f\uff0c\u5f53\u4eba\u58f0\u4e0d\u8bf4\u8bdd\uff08\u97f3\u91cf\u5c0f\uff09\u7684\u65f6\u5019\uff0c\u5c31\u81ea\u52a8\u63d0\u9ad8\u80cc\u666f\u58f0\u97f3\u7684\u97f3\u91cf\u3002<br /><br />\u76ee\u524d\u5c1d\u8bd5\u4e86 filter_complex amerge \uff0c\u4f46\u6ca1\u6709\u5b9e\u73b0\u671f\u5f85\u7684\u6548\u679c\u3002\u8bf7\u6559\u5927\u5bb6\u8fd9\u6837\u7684 ffmpeg \u547d\u4ee4\u53ef\u4ee5\u600e\u6837\u5199\uff0c\u8c22\u8c22\u3002"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/rqxiao", 
        "name": "rqxiao", 
        "avatar": "https://cdn.v2ex.com/avatar/e36d/2122/422752_large.png?m=1675996273"
      }, 
      "url": "https://www.v2ex.com/t/1032560", 
      "date_modified": "2024-04-15T03:20:30+00:00", 
      "content_html": "<p>\u4f7f\u7528 ffmpeg \u7528 aes \u52a0\u5bc6 m3u8 \u6587\u4ef6\u6d41\u7a0b</p>\n<p>1.\u51c6\u5907\u52a0\u5bc6\u5bc6\u94a5</p>\n<p>openssl rand 16 &gt; enc.key</p>\n<p>2.\u751f\u6210 IV</p>\n<p>3 \u521b\u5efa <a href=\"http://enc.info\" rel=\"nofollow\">enc.info</a> \u6587\u4ef6</p>\n<p>\u7136\u540e\u5229\u7528 ffmpeg \u8fdb\u884c\u52a0\u5bc6\nffmpeg -y <br/>\n-i test.mp4 <br/>\n-hls_time 9 <br/>\n-hls_key_info_file <a href=\"http://enc.info\" rel=\"nofollow\">enc.info</a> <br/>\n-hls_playlist_type vod <br/>\n-hls_segment_filename \"index%d.ts\" <br/>\nplaylist.m3u8</p>\n<p>\u7ed3\u679c\u662f\u64ad\u653e\u5668\u4e0d\u80fd\u76f4\u63a5\u6253 ts \u6587\u4ef6\u5f00\u64ad\u653e\u3002\u8fbe\u5230\u4e86\u5bf9 ts \u6587\u4ef6\u52a0\u5bc6\u7684\u6548\u679c\uff1f</p>\n<p>\u4f46\u662f\u5047\u8bbe\u524d\u7aef\u53bb\u5b9e\u73b0\u64ad\u653e\u89c6\u9891\u7684\u529f\u80fd\u65f6\uff0c\u4e0d\u8fd8\u662f\u8981\u5411\u540e\u7aef\u83b7\u53d6 m3u8 \u6587\u4ef6\u5417\uff0c\u56e0\u4e3a m3u8 \u6587\u4ef6\u91cc\u6709\u7740\u79d8\u94a5 \u3002\u53ea\u8981\u83b7\u53d6\u5230 m3u8 \u6587\u4ef6\u5c31\u80fd\u64ad\u653e\u4e86\u3002\u4e5f\u5c31\u662f\u8bf4\u53ea\u8981\u80fd\u591f\u83b7\u53d6\u5230 m3u8 \u6587\u4ef6\u5c31\u80fd\u64ad\u653e\u52a0\u5bc6\u7684 ts \u6587\u4ef6\uff0c\u90a3\u5982\u679c\u901a\u8fc7\u6293\u5305\u5de5\u5177\u83b7\u53d6\u5230 m3u8 \u5730\u5740\uff0c\u90a3 ts \u52a0\u5bc6\u4e0d\u662f\u6ca1\u7528\u4e86\u5417</p>\n", 
      "date_published": "2024-04-15T03:20:18+00:00", 
      "title": "\u4f7f\u7528 ffmpeg \u7528 aes \u52a0\u5bc6 m3u8 \u6587\u4ef6\u7684\u7591\u60d1", 
      "id": "https://www.v2ex.com/t/1032560"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/DTCPSS", 
        "name": "DTCPSS", 
        "avatar": "https://cdn.v2ex.com/avatar/569a/ca58/199749_large.png?m=1721396793"
      }, 
      "url": "https://www.v2ex.com/t/1030949", 
      "date_modified": "2024-04-09T05:46:49+00:00", 
      "content_html": "<a target=\"_blank\" href=\"https://bellard.org/tsac/\" rel=\"nofollow noopener\">https://bellard.org/tsac/</a><br />FFmpeg \u4e4b\u7236 Fabrice Bellard \u53d1\u5e03\u97f3\u9891\u538b\u7f29\u5de5\u5177 TSAC \u3002<br />\u5bf9\u4e8e 44.1 kHz \u7684\u97f3\u9891\uff0c\u53ef\u538b\u7f29\u81f3 5.5 kb/s \uff08\u5355\u58f0\u9053\uff09\u6216 7.5 kb/s \uff08\u7acb\u4f53\u58f0\uff09\u3002 <br />\u53ef\u5c06\u4e00\u9996 3.5 \u5206\u949f\u7684\u7acb\u4f53\u58f0\u4e50\u66f2\u538b\u7f29\u81f3 192 KiB \u3002<br /><br />\u8ba8\u8bba\uff1a<br /><a target=\"_blank\" href=\"https://hydrogenaud.io/index.php/topic,125765\" rel=\"nofollow noopener\">https://hydrogenaud.io/index.php/topic,125765</a>", 
      "date_published": "2024-04-09T05:37:16+00:00", 
      "title": "\u628a\u6b4c\u66f2\u538b\u7f29\u81f3 7 kbps\uff0c FFmpeg \u4e4b\u7236\u53d1\u5e03\u97f3\u9891\u538b\u7f29\u5de5\u5177 TSAC", 
      "id": "https://www.v2ex.com/t/1030949"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/qingf", 
        "name": "qingf", 
        "avatar": "https://cdn.v2ex.com/gravatar/a9a2668d5d8dfffd29b296d7a2b595a3?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/991416", 
      "title": "\u6c42\u52a9\u4f7f\u7528 ffmpeg \u538b\u7f29.mov \u89c6\u9891\u8f93\u51fa\u540e\u4e22\u5931\u5143\u6570\u636e\u95ee\u9898\u5982\u4f55\u89e3\u51b3", 
      "id": "https://www.v2ex.com/t/991416", 
      "date_published": "2023-11-13T03:52:42+00:00", 
      "content_html": "<p>\u7531\u4e8e iPhone \u4e4b\u524d\u62cd\u6444\u7684 4k60fps \u89c6\u9891\u4f53\u79ef\u6bd4\u8f83\u5927\uff0c\u5e0c\u671b\u7528\u7535\u8111\u538b\u7f29\u540e\u653e\u5728 icloud \u65b9\u4fbf\u4ee5\u540e\u968f\u65f6\u89c2\u770b\uff0c\u5e0c\u671b\u4ec5\u662f\u538b\u7f29\u89c6\u9891\u4f53\u79ef\uff0c\u4fdd\u7559\u4e4b\u524d\u7684\u62cd\u6444\u65f6\u95f4\u3001\u7ecf\u7eac\u5ea6\u3001\u624b\u673a\u578b\u53f7\u7b49\u5143\u6570\u636e\u3002</p>\n<p>\u5728\u7f51\u4e0a\u641c\u7d22\u4e00\u756a\u540e\uff0c\u6574\u4e86\u4e2a ffmpeg \u5de5\u5177\u547d\u4ee4\uff0c\u63a2\u7d22\u4e0b\u6765\uff0c\u538b\u7f29\u7684\u529f\u80fd\u6ca1\u6709\u95ee\u9898\u633a ok \u7684\uff0c\u4f46\u662f\u5728\u4fdd\u7559\u5143\u6570\u636e\u7684\u5730\u65b9\u603b\u662f\u5361\u58f3\uff0c\u8f93\u51fa\u7684\u89c6\u9891\u5e26\u4e0d\u4e0a\u539f\u6765\u7684\u7ecf\u7eac\u5ea6\u7b49\u4fe1\u606f\u3002</p>\n<p>\u73af\u5883\u662f mac \uff0c\u547d\u4ee4\u5982\u4e0b\uff0c\u5df2\u7ecf\u6dfb\u52a0\u4e86\u7f51\u4e0a\u8bf4\u7684 map_metadata \u548c movflags \u4e24\u4e2a\u53c2\u6570\uff0c\u4f46\u662f\u8f93\u51fa\u7684\u6587\u4ef6\u4e2d\u8fd8\u662f\u6ca1\u6709\u5143\u6570\u636e</p>\n<pre><code>ffmpeg -i input.mov -c:v copy -c:a copy -map_metadata 0 -movflags use_metadata_tags output.mp4\n</code></pre>\n<p>\u5c1d\u8bd5\u4f7f\u7528\u4e86 hevc \u548c h264 \u597d\u50cf\u4e5f\u90fd\u4e0d\u884c\uff0c\u6709\u8001\u54e5\u53ef\u4ee5\u5e2e\u5fd9\u6307\u5bfc\u4e00\u4e0b\u7684\uff0c\u611f\u6fc0\u4e0d\u5c3d</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/1dian01", 
        "name": "1dian01", 
        "avatar": "https://cdn.v2ex.com/avatar/7eda/adde/38416_large.png?m=1448944646"
      }, 
      "url": "https://www.v2ex.com/t/984847", 
      "date_modified": "2023-10-24T03:47:37+00:00", 
      "content_html": "", 
      "date_published": "2023-10-24T03:35:27+00:00", 
      "title": "homebrew \u5b89\u88c5\u7684 fmpeg \u8f6c\u7801\u901f\u5ea6\u6bd4\u8f83\u6162\uff1f\u76f4\u63a5\u7f16\u8bd1\u53ef\u4ee5\u63d0\u9ad8\u901f\u5ea6\u5417\uff1f", 
      "id": "https://www.v2ex.com/t/984847"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/nathanleeinph", 
        "name": "nathanleeinph", 
        "avatar": "https://cdn.v2ex.com/gravatar/237d6fca11c6431ec425b8cecdad48b5?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/974227", 
      "title": "\u4f7f\u7528 nodejs \u8c03\u7528\u548c\u5728 macos \u7ec8\u7aef\u91cc\u76f4\u63a5\u8c03\u7528 ffmpeg \u8f6c m3u8\uff0c\u4e24\u8005\u82b1\u8d39\u65f6\u95f4\u76f8\u5dee\u5de8\u5927", 
      "id": "https://www.v2ex.com/t/974227", 
      "date_published": "2023-09-15T11:15:00+00:00", 
      "content_html": "<p>\u5bf9\u4e8e\u540c\u4e00\u4e2a m3u8 \u53ca\u5176 ts \u8d44\u6e90\uff0c\u4f53\u79ef\u4e3a 2.8g \u5de6\u53f3\uff0c\u6587\u4ef6\u6570 2760 \u4e2a</p>\n<p>\u4f7f\u7528 macOS \u81ea\u5e26\u7ec8\u7aef\u8fd0\u884c\uff1affmpeg -i ./index.m3u8 -c copy test.mp4\n\u548c\u5728 nodejs \u91cc\u4f7f\u7528\u201cfluent-ffmpeg\u201d\u8fd9\u4e2a\u5e93(\u4f9d\u7136\u662f\u4f7f\u7528\u2018/opt/homebrew/Cellar/ffmpeg/6.0/bin/ffmpeg\u2019)\u5904\u7406</p>\n<p>\u7ec8\u7aef\u5904\u7406\u4ec5\u4ec5\u9700\u8981 30 \u79d2\u4e0d\u5230</p>\n<p>\u800c nodejs \u8fd0\u884c\u5219\u9700\u8981 21 \u5206\u949f</p>\n<p>\u6211\u662f nodejs \u5c0f\u767d\uff0c\u6267\u884c\u547d\u4ee4\u7684\u65b9\u5f0f\u662f\u5728 vscode \u8fd9\u4e2a\u7f16\u8f91\u5668\u91cc\u7684\u7ec8\u7aef\u6267\u884c node ./foo.js</p>\n<p>\u6709\u4eba\u4e86\u89e3\u8fd9\u4e2a\u5de8\u5927\u5dee\u5f02\u4ea7\u751f\u7684\u539f\u56e0\u5417\uff1f</p>\n<p>\u6211\u63a8\u6d4b\u662f\u4e0d\u662f vscode \u6216\u8005 nodejs \u53ea\u4f7f\u7528\u4e86\u5355\u7ebf\u7a0b\u7684\u5173\u7cfb\uff1f\uff1f</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/JasonQin", 
        "name": "JasonQin", 
        "avatar": "https://cdn.v2ex.com/avatar/647b/2160/95351_large.png?m=1423027743"
      }, 
      "url": "https://www.v2ex.com/t/954076", 
      "title": "FFmpeg \u5982\u4f55\u5f55\u5c4f\u65f6\u6392\u9664\u5f55\u5236\u6307\u5b9a\u7684\u67d0\u4e2a\u7a97\u53e3", 
      "id": "https://www.v2ex.com/t/954076", 
      "date_published": "2023-07-04T10:08:29+00:00", 
      "content_html": "<p>\u5c31\u50cf\u67d0\u4e9b\u5c4f\u5e55\u5171\u4eab\u8f6f\u4ef6\u4e00\u6837\uff0c\u5f55\u5236\u6574\u4e2a\u5c4f\u5e55\u7684\u540c\u65f6\u6700\u4e0a\u5c42\u8fd8\u6709\u64cd\u4f5c\u5f55\u5c4f\u5173\u95ed\u4e4b\u7c7b\u7684 UI \uff0c\u8fd9\u4e2a\u662f\u4e0d\u4f1a\u88ab\u5f55\u5236\u8fdb\u53bb\u7684\uff0c\u5982\u4f55\u5b9e\u73b0\u8fd9\u79cd\u529f\u80fd\uff0c\u6211\u67e5\u4e86 FFmpeg \u7684 gdigrab \u53ea\u80fd\u9009 desktop \u6216\u8005 title \u6307\u5b9a\u5f55\u5236\u67d0\u4e00\u4e2a\u7a97\u53e3\uff0c\u6ca1\u6709\u6392\u9664\u529f\u80fd\uff0c\u8bf7\u6559\u4e00\u4e0b\u8fd9\u79cd\u662f\u5982\u4f55\u5b9e\u73b0\u7684\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/datadump", 
        "name": "datadump", 
        "avatar": "https://cdn.v2ex.com/avatar/373a/9420/284506_large.png?m=1724288412"
      }, 
      "url": "https://www.v2ex.com/t/950202", 
      "title": "ffmpeg \u6700\u8fd1\u5927\u7248\u672c\u53d1\u5e03\u4e3a\u5565\u8fd9\u4e48\u5feb", 
      "id": "https://www.v2ex.com/t/950202", 
      "date_published": "2023-06-20T01:48:21+00:00", 
      "content_html": "5.x \u548c 6.x \u597d\u50cf\u90fd\u662f\u8fd9\u4e00\u4e24\u5e74\u51fa\u6765\u7684\u5427\u3002\u542c\u8bf4\u5e74\u5e95 7.x \u6b63\u5f0f\u7248\u3002<br /><br />\u662f\u63a5\u53e3\u8fd8\u662f\u67b6\u6784\u53d1\u751f\u91cd\u5927\u6539\u53d8\uff1f<br /><br />\u6709\u6728\u6709\u61c2\u7684\u5144\u5f1f\u8bf4\u4e0b\u3002\u8c22\u8c22\u4e86"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/1054850490", 
        "name": "1054850490", 
        "avatar": "https://cdn.v2ex.com/avatar/0568/22f0/554537_large.png?m=1670165418"
      }, 
      "url": "https://www.v2ex.com/t/947857", 
      "title": "ffmpeg \u5982\u4f55\u52a0\u5feb\u89e3\u7801\u901f\u5ea6\uff1f\u7b97\u529b\u4e0d\u53d8\u7684\u60c5\u51b5\u4e0b\uff0c\u4e0d\u5728\u4e4e\u89e3\u7801\u8d28\u91cf", 
      "id": "https://www.v2ex.com/t/947857", 
      "date_published": "2023-06-12T00:41:03+00:00", 
      "content_html": "`ffmpeg -stats -hwaccel none -i \"1.mp4\" -map v -fps_mode cfr -stats_period 0.04 -f null -<br />`<br />\u5982\u4e0a\u8ff0\u4ee3\u7801\u6240\u793a\uff0c\u5982\u4f55\u5728\u540c\u7b49\u7b97\u529b\u6761\u4ef6\u4e0b\uff0c\u52a0\u5feb\u201c\u89e3\u7801\u201d\u901f\u5ea6\uff0c\u6ce8\u610f\uff0c\u8fd9\u91cc\u4e0d\u662f\u7f16\u7801\uff0c\u662f\u89e3\u7801\uff0c\u800c\u4e14\u636e\u6211\u6d4b\u8bd5\uff0c12490F \u5bf9\u6bd4 3080 \u7684\u89e3\u7801\u5668\u4e5f\u5feb\u4e0d\u8fc7 CPU \uff0c\u8fd9\u662f\u56e0\u4e3a\u89c6\u9891\u6587\u4ef6\u9700\u8981\u5728\u663e\u5b58\u548c\u5185\u5b58\u4e4b\u95f4\u9891\u7e41\u4ea4\u6362\uff0c\u53cd\u800c\u5bfc\u81f4\u89e3\u7801\u53d8\u6162\u4e86\u3002\u867d\u7136\u5728 av01 \u4ee5\u53ca 8K \u7684\u60c5\u51b5\u4e0b\u6bd4\u4e0d\u8fc7\u663e\u5361\u7684\u89e3\u7801\uff0c\u4f46\u662f 6 \u6838\u7684 12490f \u5df2\u7ecf\u662f\u6bd4 3080 \u7684\u89e3\u7801\u5668\u5feb\u4e86\uff0c\uff08\u867d\u7136 3080 \u652f\u6301\u53cc\u8def\uff0c\u5355\u8def\u6027\u80fd\u9650\u5236\u4e00\u534a\uff0c\u6682\u4e14\u6309\u4e0b\u4e0d\u8868\uff09\uff0c\u6240\u4ee5\u8ba9\u6211\u6362\u663e\u5361\u89e3\u7801\u52a0\u5feb\u8fd9\u4e2a\u63d0\u8bae\u5df2\u7ecf pass \u4e86<br /><br />\u6211\u4e3a\u4ec0\u4e48\u8981\u8fd9\u6837\u505a\u662f\u56e0\u4e3a\uff0c\u6211\u9700\u8981\u4e00\u5e27\u4e00\u5e27\u62c6\u5f00\u770b\u770b\u89c6\u9891\u6709\u6ca1\u6709\u635f\u574f\uff0c\u56e0\u4e3a\u6211\u7528\u4e0b\u8f7d\u5668\u4e0b\u8f7d\u7684\u89c6\u9891\u5408\u6210\u7684\u65f6\u5019\u603b\u662f\u51fa\u73b0\u7834\u635f\u7684\u89c6\u9891\u6587\u4ef6\uff0c\u800c\u7528\u91cd\u5c01\u88c5\u67e5\u635f\u5e76\u4e0d\u9002\u7528\u4e8e\u5927\u591a\u573a\u666f\uff0c\u6240\u4ee5\u8fd8\u662f\u56de\u5230\u6700\u7a33\u7684\u4e00\u5e27\u4e00\u5e27\u7684\u62c6\u5305\u770b\uff0c\u53ef\u662f\u8fd9\u4e2a\u65b9\u6848\u8fd8\u662f\u592a\u6162\u4e86\uff0c\u5982\u679c\u5347\u7ea7\u673a\u5668\u4e5f\u4e0d\u592a\u73b0\u5b9e\uff0c\u53ea\u80fd\u662f\u5bfb\u6c42\u6b6a\u8def\u5b50\uff0c\u6211\u770b\u5230\u67d0\u4e9b\u89e3\u7801\u5668\u53ef\u4ee5\u901a\u8fc7\u964d\u4f4e\u89e3\u7801\u8d28\u91cf\u4ece\u800c\u8ba9\u4f4e\u914d\u673a\u5668\u4e5f\u53ef\u4ee5\u6d41\u7545\u64ad\u653e\u9ad8\u8d28\u91cf\u89c6\u9891\u7684\u65f6\u5019\u5c31\u5728\u60f3\uff0c\u6211\u662f\u5426\u4e5f\u53ef\u4ee5\u6309\u7167\u8fd9\u4e2a\u65b9\u6cd5\u6765\uff1f\u6211\u95ee\u8fc7 GPT \uff0c\u4f46\u662f GPT \u7ed9\u51fa\u7684\u7b54\u6848\u662f\u8ba9\u6211\u964d\u4f4e\u5206\u8fa8\u7387\uff0c\u4e5f\u5c31\u662f-s 1280p-720p \u9009\u9879\uff0c\u4f46\u662f\u8fd9\u6837\u5176\u5b9e\u66f4\u6162\u4e86\uff0c\u6211\u89c9\u5f97\u66f4\u50cf\u662f\u91cd\u7f16\u7801\u4e86\u4e00\u6837\uff0c\u867d\u7136\u964d\u4f4e\u4e86\u5206\u8fa8\u7387\uff0c\u53ef\u662f\u4e2d\u95f4\u4e00\u5b9a\u662f\u6709\u4e00\u4e2a\u518d\u8f6c\u7801\u7684\u8fc7\u7a0b\u5bfc\u81f4\u5403\u7684\u635f\u8017\u66f4\u591a\u4e86"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/icoming", 
        "name": "icoming", 
        "avatar": "https://cdn.v2ex.com/avatar/d704/0cbe/599328_large.png?m=1703120176"
      }, 
      "url": "https://www.v2ex.com/t/933845", 
      "date_modified": "2023-04-19T13:32:26+00:00", 
      "content_html": "<p>\u7528\u6765\u9650\u5b9a\u6587\u4ef6\u5206\u6bb5\u5927\u5c0f\u7684\u8fd9\u4e2a\u9009\u9879</p>\n<p>ChatGPT \u8bf4\u4ece 4.1 \u7248\u672c\uff08 2018 \u5e74 11 \u6708\u53d1\u5e03\u7684\uff09\u5f00\u59cb\u6709\u8fd9\u9009\u9879\uff0c\u4f46\u662f\u6211\u5728\u5b98\u7f51\u4e0b\u8f7d\u7684\u7f16\u8bd1\u597d\u7684\u6ca1\u6709\u8fd9\u4e2a\u9009\u9879\u554a</p>\n<p>\u7136\u540e\u6211\u5c31\u60f3\u81ea\u5df1\u7f16\u8bd1\uff0cGit clone \u6e90\u7801\u540e\uff0c\u6309\u7167 ChatGPT \u8bf4\u7684\u914d\u7f6e\u6dfb\u52a0 segment \u652f\u6301\u540e\u7f16\u8bd1\u5b89\u88c5\uff0c\u7ed3\u679c\u8fd8\u662f\u6ca1\u6709\u8fd9\u4e2a\u9009\u9879</p>\n<pre><code class=\"language-shell\">./configure --enable-gpl --enable-libx264 --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx265 --enable-libaom --enable-version3 --enable-libfdk-aac --enable-nonfree --enable-muxer=segment\n</code></pre>\n<p>\u5230\u5e95 FFmpeg \u6709\u6ca1\u6709\u8fd9\u4e2a\u9009\u9879\uff1f\uff1f\uff1f</p>\n", 
      "date_published": "2023-04-19T13:32:14+00:00", 
      "title": "FFmpeg \u600e\u4e48\u652f\u6301 segment_size \u9009\u9879\uff1f", 
      "id": "https://www.v2ex.com/t/933845"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/LLaMA", 
        "name": "LLaMA", 
        "avatar": "https://cdn.v2ex.com/gravatar/3c9cf5afd0285df55eaa81b8f43c1664?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/927148", 
      "date_modified": "2023-03-26T00:50:21+00:00", 
      "content_html": "", 
      "date_published": "2023-03-25T10:49:12+00:00", 
      "title": "\u4e3a\u4ec0\u4e48 ffmpeg \u7684\u4f53\u79ef\u4f1a\u8fd9\u4e48\u5927\uff1f\u591a\u590d\u6742\u7684\u7b97\u6cd5\u7f16\u8bd1\u540e\u4e5f\u4e0d\u4f1a\u6709\u51e0\u5341 MB \u5427\uff1f", 
      "id": "https://www.v2ex.com/t/927148"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/loken2020", 
        "name": "loken2020", 
        "avatar": "https://cdn.v2ex.com/avatar/d60d/d008/583892_large.png?m=1699249781"
      }, 
      "url": "https://www.v2ex.com/t/924379", 
      "date_modified": "2023-03-15T20:30:39+00:00", 
      "content_html": "\u300a FFmpeg \u4f7f\u7528 debug_ts \u6253\u5370\u5168\u8fc7\u7a0b\u7684 pts \u300b<br />\u7b80\u4ecb\uff1a\u97f3\u89c6\u9891\u5f00\u53d1\u7684\u4e00\u4e2a\u70e6\u607c\u7684\u70b9\uff0c\u662f\u65f6\u95f4\u603b\u662f\u4e0d\u5bf9\u3002\u8fd9\u65f6\u5019\u4f60\u53ef\u4ee5\u6253\u5f00\u00a0debug_ts\u00a0\u9009\u9879\uff0c\u67e5\u770b\u00a0demuxer \uff0c \u89e3\u7801\uff0c\u7f16\u7801\uff0cmuxer\u00a0\u8fc7\u7a0b\u4e2d\u7684 pts \u7684\u4fe1\u606f<br /><a target=\"_blank\" href=\"https://ffmpeg.xianwaizhiyin.net/ffmpeg/debug_ts.html\" rel=\"nofollow noopener\">https://ffmpeg.xianwaizhiyin.net/ffmpeg/debug_ts.html</a>", 
      "date_published": "2023-03-15T18:44:46+00:00", 
      "title": "FFmpeg \u4f7f\u7528 debug_ts \u6253\u5370\u5168\u8fc7\u7a0b\u7684 pts", 
      "id": "https://www.v2ex.com/t/924379"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/1054850490", 
        "name": "1054850490", 
        "avatar": "https://cdn.v2ex.com/avatar/0568/22f0/554537_large.png?m=1670165418"
      }, 
      "url": "https://www.v2ex.com/t/919129", 
      "date_modified": "2023-02-25T07:37:10+00:00", 
      "content_html": "\u6211\u76ee\u524d\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u67e5\u7f3a\u5e27<br />```<br />ffmpeg -v 16 -stats -hwaccel cuda -i 1.mkv -map v -fps_mode cfr -stats_period \"0.05\" -f null -<br />```<br />  \u6211\u6765\u8bb2\u4e00\u4e0b\u539f\u7406\uff0c\u5176\u4ed6\u4e0d\u91cd\u8981\uff0c\u4e3b\u8981\u662f`-fps_mode cfr`\uff0c\u8fd9\u4e2a\u547d\u4ee4\u53ef\u4ee5\u5728\u9047\u5230\u65f6\u95f4\u6233\u5bf9\u4e0d\u4e0a\u7684\u60c5\u51b5\u4e0b\u8865\u5e27\uff0c\u867d\u7136\u662f\u8865\u5e27\uff0c\u4f46\u662f\u8fd9\u4e2a\u8865\u5e76\u4e0d\u662f\u6211\u4eec\u60f3\u8c61\u4e2d\u7684\u90a3\u4e2a\u8865\u8fd0\u52a8\u5e27\uff0c\u800c\u662f\u5c06\u5f53\u524d\u7684\u5e27\u5f53\u505a\u4e0b\u4e00\u5e27\u7ee7\u7eed\u64ad\u653e\u3002<br /><br />  \u6211\u4eec\u5148\u6765\u770b\u770b\u5b98\u65b9\u6587\u6863\u7684\u63cf\u8ff0<br /><a target=\"_blank\" href=\"https://i.imgur.com/aVkfu3Z.png\" rel=\"nofollow noopener\" target=\"_blank\"><img src=\"https://i.imgur.com/aVkfu3Z.png\" class=\"embedded_image\" rel=\"noreferrer\"></a><br /><br />  \u6211\u6765\u4e3e\u4f8b\uff0c\u5f53\u4e00\u90e8\u89c6\u9891\u5e27\u6570\u4e3a 30 \u5e27\u7684\u65f6\u5019\uff0c\u5f53\u4f60\u8bbe\u5b9a\u4e86 60 \u5e27\u8f93\u51fa\u7684\u65f6\u5019\uff0c\u662f\u4e0d\u662f\u6bcf\u4e00\u79d2\u90fd\u7f3a\u4e86\u4e00\u534a\uff1f\u8fd9\u65f6\u5019\u8fd9\u4e2a\u547d\u4ee4\u5c31\u4f1a\u81ea\u52a8\u7684\u628a\u4e0d\u591f\u7684\u5e27\u81ea\u52a8\u8865\u4e0a\uff0c\u4f46\u662f\u8fd9\u8865\u5e27\uff0c\u66f4\u50cf\u662f\u9694\u884c\u626b\u63cf\u7684\u89c6\u9891\u8f6c\u5230\u9010\u884c\u626b\u63cf\u4e0a\u64ad\u653e\u4f7f\u7528\u7684\"\u53bb\u9694\u884c\u5904\u7406\"\u3002<br /><br />  \u53e6\u4e00\u79cd\u6848\u4f8b\u5c31\u662f\u6211\u7684\u6848\u4f8b\u4e86\uff0c\u5927\u5bb6\u7ecf\u5e38\u4e0b\u8f7d\u6587\u4ef6\u7684\u65f6\u5019\u90fd\u9047\u5230\u8fc7\u4e0d\u5b8c\u6574\u7684\u60c5\u51b5\u5427\uff1f\u6bd4\u5982\u81ed\u540d\u662d\u8457\u7684\"\u767e\u5ea6\u4e91\u76d8\"\uff0c\u4e0b\u8f7d\u6ca1\u5e26\u6821\u68c0\uff0c\u5982\u679c\u662f\u89c6\u9891\u8fd8\u597d\uff0c\u56e0\u4e3a\u89c6\u9891\u7f3a\u4e86\u4e2d\u95f4\u90e8\u5206\u5e76\u4e0d\u5f71\u54cd\u64ad\u653e\uff0c\u5982\u679c\u662f\u6587\u4ef6\u76f4\u63a5\u5c31\u5ba3\u544a\u6574\u4e2a\u6587\u4ef6\u7684\u6b7b\u5211\u4e86\uff0c\u538b\u7f29\u5305\u66f4\u4e0d\u7528\u8bf4\u4e86\uff0c\u6240\u4ee5\u6211\u7684\u95ee\u9898\u5c31\u662f\u4e0b\u8f7d\u89c6\u9891\u7684\u8fc7\u7a0b\u4e2d\uff0c\u7531\u4e8e\u7f51\u7edc\u6ce2\u52a8\u7684\u5f71\u54cd\u7ecf\u5e38\u5bfc\u81f4\u6587\u4ef6\u4e0d\u5b8c\u6574\uff0c\u800c\u6211\u5c31\u662f\u60f3\u8981\u627e\u51fa\u5230\u5e95\u54ea\u4e2a\u89c6\u9891\u6587\u4ef6\u4e0d\u5b8c\u6574\u3002<br />  \u89c6\u9891\u7684\u5143\u6570\u636e\u91cc\uff0c\u5f00\u5934\u5c31\u63cf\u8ff0\u4e86\u8be5\u89c6\u9891\u8be5\u91c7\u7528\u591a\u5c11\u5e27\u7387\u64ad\u653e\uff0c\u5217\u5982\u4e00\u90e8\u89c6\u9891\u81ea\u5df1\u5143\u6570\u636e\u63cf\u8ff0\u4e86\u5e27\u6570\u662f 30F \uff0c\u4f46\u662f\u89c6\u9891\u7684\u4e2d\u95f4\u6570\u636e\u4e22\u5931\u4e86\uff0c\u5c31\u4f1a\u5bfc\u81f4\u4e0b\u56fe\u4e2d\u7684\u540e\u679c<br /><a target=\"_blank\" href=\"https://i.imgur.com/VGzjR6B.png\" rel=\"nofollow noopener\" target=\"_blank\"><img src=\"https://i.imgur.com/VGzjR6B.png\" class=\"embedded_image\" rel=\"noreferrer\"></a><br />  \u7eff\u8272\u7ad6\u7ebf\u5de6\u53f3\u7a7a\u767d\u7684\u5730\u65b9\u5c31\u662f\"\u7f3a\u5e27\"\u7684\u90e8\u5206\uff0c\u5f53\u4f7f\u7528\u4ee5\u4e0a\u547d\u4ee4\u8fdb\u884c\u8865\u5e27\u7684\u65f6\u5019,\u5c31\u4f1a\u51fa\u73b0\u201cdup\u201d\u53c2\u6570\uff0cdup \u540e\u9762\u7684\u6570\u5b57\u53c2\u6570\u5c31\u662f\u6307\u8865\u4e86\u591a\u5c11\u5e27<br /><a target=\"_blank\" href=\"https://i.imgur.com/aJhedLF.png\" rel=\"nofollow noopener\" target=\"_blank\"><img src=\"https://i.imgur.com/aJhedLF.png\" class=\"embedded_image\" rel=\"noreferrer\"></a><br />  \u56fe\u4e2d\u53ef\u4ee5\u770b\u5230\u8fd9\u4e2a\u89c6\u9891\u7f3a\u4e86 853 \u5e27\uff0c\u501f\u52a9\u8fd9\u4e2a\u65b9\u6cd5\uff0c\u95f4\u63a5\u7684\u89c2\u5bdf\u89c6\u9891\u7684\u5b8c\u6574\u6027\uff0c\u8fd9\u4e2a\u65b9\u6cd5\u4e5f\u9002\u7528\u4e8e 115 \u4ee5\u53ca\u767e\u5ea6\u4e91\u4e0b\u8f7d\u7684\u89c6\u9891\u6587\u4ef6\u4e0d\u5b8c\u6574\u7684\u7b5b\u9009<br />  \u4f46\u662f\u8fd9\u4e2a\u65b9\u6cd5\u7f3a\u70b9\u5c31\u662f\uff0c\u592a\u6162\u4e86\uff0c\u592a\u592a\u592a\u6162\u4e86\uff01\uff01\uff01\uff01\u6211\u672c\u673a\u914d\u7f6e\u662f 12490f+1660ti \uff0c\u4f46\u662f\u6211\u663e\u5361\u7684\u7f16\u7801\u5668\u8fd8\u6ca1\u6211\u7684 CPU \u5feb\uff0c\u4ee5\u4e0b\u662f\u6211\u7684\u6d4b\u901f<br /><a target=\"_blank\" href=\"https://i.imgur.com/6rba4Yo.png\" rel=\"nofollow noopener\" target=\"_blank\"><img src=\"https://i.imgur.com/6rba4Yo.png\" class=\"embedded_image\" rel=\"noreferrer\"></a><br />  speed \u5c31\u662f\u901f\u5ea6\uff0c\u8d8a\u9ad8\u8d8a\u597d\uff0c\u53ef\u4ee5\u770b\u5230 GPU \u660e\u663e\u4e0d\u5982 CPU \uff0c\u8fd9\u53c8\u662f\u4e3a\u4ec0\u4e48\u5462\uff0c\u6211\u7528 potplayer \u786c\u89e3 1660ti 8K \u7247\u6e90\u5f88\u8f7b\u677e\uff0c\u4f46\u662f 12490f \u89e3\u7801 8K \u6709\u70b9\u5403\u529b\u4e86\uff0c\u6211\u53c8\u770b\u5230\u5b98\u65b9\u6587\u6863\u7684\u4e00\u7bc7\u89e3\u91ca<br /><a target=\"_blank\" href=\"https://i.imgur.com/h6CBk4r.png\" rel=\"nofollow noopener\" target=\"_blank\"><img src=\"https://i.imgur.com/h6CBk4r.png\" class=\"embedded_image\" rel=\"noreferrer\"></a><br />  \u611f\u89c9\u662f\u6211\u6709\u67d0\u4e9b\u5730\u65b9\u6ca1\u8bbe\u7f6e\u597d\u5bfc\u81f4\u7684\u5dee\u5f02\uff0c\u56e0\u4e3a\u6211\u7528 ffmpeg \u786c\u89e3\u7684\u65f6\u5019\u53d1\u73b0\u53ea\u5360\u7528\u4e86 50%-60%\u5de6\u53f3\uff0c\u6839\u672c\u6ca1\u5403\u6ee1\u3002<br />\u4ee5\u4e0a\u6240\u8ff0\u5b8c\u4e86\uff0c\u6211\u7684\u9700\u6c42\u5c31\u662f\u8ba9\u8fd9\u4e2a\u8fc7\u7a0b\uff0c\u66f4\u52a0\u7684\u201c\u7701\u65f6\u95f4\u201d\uff0c\u6bd5\u7adf\u8fd9\u4e2a\u95f4\u63a5\u89c2\u5bdf\u5927\u6cd5\u8fd8\u662f\u592a\u8017\u7b97\u529b\uff0c\u5982\u679c\u80fd\u7a0d\u5fae\u4f18\u5316\u4e00\u4e0b\u4e5f\u597d\uff0c\u6211\u73b0\u5728\u68c0\u7d22 2T \u7684\u89c6\u9891\u7684\u65f6\u5019\uff0c\u901a\u5e38\u90fd\u9700\u8981 5 \u5929\u5de6\u53f3\u7684\u65f6\u95f4\u624d\u68c0\u7d22\u5b8c\uff0c\u8fd9\u901f\u5ea6\u5b9e\u5728\u662f\u592a\u6162\u4e86\uff0c\u6211\u5728\u60f3\uff0c\u5c31\u662f\u80fd\u4e0d\u80fd\u964d\u4f4e\u89e3\u7801\u7684\u8d28\u91cf\u6362\u53d6\u901f\u5ea6\uff0c\u6bd5\u7adf\u6211\u4e5f\u770b\u4e0d\u7740\u8fd9\u4e2a\u753b\u9762\uff0c\u4e0d\u77e5\u9053\u80fd\u4e0d\u80fd\u964d\u4f4e\u4ed6\u7684\u89e3\u7801\u7b97\u529b\u9700\u6c42\u8ba9\u6211\u901f\u5ea6\u63d0\u5347<br /><br />\u4e0b\u9762\u63d0\u4f9b\u4e00\u4e2a\u635f\u574f\u7684\u89c6\u9891\u6837\u7247\uff0c\u4f9b\u4f60\u5c1d\u8bd5<br /><a target=\"_blank\" href=\"https://drive.google.com/file/d/1TDbxYD0vri0D8aIJ6a1OSY2abE9tc6Lk/view?usp=share_link\" rel=\"nofollow noopener\">https://drive.google.com/file/d/1TDbxYD0vri0D8aIJ6a1OSY2abE9tc6Lk/view?usp=share_link</a>", 
      "date_published": "2023-02-25T07:32:56+00:00", 
      "title": "ffmpeg \u5982\u4f55\u66f4\u5feb\u901f\u7684\u67e5\u8be2\u89c6\u9891\u7684\"\u7f3a\u5e27\"", 
      "id": "https://www.v2ex.com/t/919129"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/starryloki", 
        "name": "starryloki", 
        "avatar": "https://cdn.v2ex.com/avatar/3347/31ef/531612_large.png?m=1693464163"
      }, 
      "url": "https://www.v2ex.com/t/910059", 
      "date_modified": "2023-01-20T09:16:33+00:00", 
      "content_html": "\u5728\u8be2\u95ee ChatGPT \u4ee5\u53ca\u5bf9\u7ed3\u679c\u5404\u79cd\u4fee\u6b63\u540e\u5f97\u5230\u4e0b\u9762\u7684\u4e00\u6761\u547d\u4ee4:<br /><br />ffmpeg -i input.ts -max_muxing_queue_size 999999 -pix_fmt yuv420p10le -c:v libx265 -x265-params \"profile=main10:high-tier=true:colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc\" -c:a copy output.mkv<br /><br />\u968f\u540e\u8fd0\u884c\u63d0\u793a \u201c[mpegts @ 000002098fdd71c0] Could not find codec parameters for stream 0 (Video: avs3 (libuavs3d) ([212][0][0][0] / 0x00D4), yuv420p10le): unspecified size<br />Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\u201d<br /><br />\u540e\u7eed\u62a5\u9519 \"[buffer @ 00000209ac41c040] Unable to parse option value \"0x0\" as image size<br />[buffer @ 00000209ac41c040] Error setting option video_size to value 0x0.<br />[graph 0 input from stream 0:0 @ 00000209909a7bc0] Error applying options to the filter.<br />Error reinitializing filters!<br />Error while filtering: Invalid argument<br />Finishing stream 0:0 without any data written to it.\"<br /><br />\u8fd9\u4e2a\u89c6\u9891\u4f7f\u7528 MPC-HC \u64ad\u653e\u5668\u53ef\u4ee5\u6b63\u5e38\u64ad\u653e\uff0cffmpeg \u7684\u89e3\u7801\u5668\u6709 libuavs3d \uff0c\u8bf7\u95ee\u5e94\u8be5\u5982\u4f55\u6b63\u786e\u89e3\u7801\u8fd9\u4e2a\u89c6\u9891\uff1f", 
      "date_published": "2023-01-20T09:15:14+00:00", 
      "title": "\u5982\u4f55\u5c06 AVS3 8KHDR \u89c6\u9891\u8f6c\u7801\u4e3a HEVC 8KHDR \u89c6\u9891\uff1f", 
      "id": "https://www.v2ex.com/t/910059"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/rrubick", 
        "name": "rrubick", 
        "avatar": "https://cdn.v2ex.com/avatar/9bee/a327/102175_large.png?m=1774518297"
      }, 
      "url": "https://www.v2ex.com/t/906182", 
      "title": "\u8bf7\u6559\u5927\u4f6c\u4eec\uff0c\u5728\u7ebf\u7f51\u7ad9\u6293\u5230 m3u8 \u80fd\u64ad\u653e\uff0c\u4f46\u662f\u7528 ffmpeg \u4e0b\u8f7d\u7684\u65f6\u5019 \u201c403 forbidden\u201d \u6216\u8005 \u201cOutput file #0 does not contain any stream\u201d \u5e94\u8be5\u600e\u4e48\u89e3\u51b3", 
      "id": "https://www.v2ex.com/t/906182", 
      "date_published": "2023-01-03T02:24:45+00:00", 
      "content_html": "<p>\u6709\u7684\u7f51\u7ad9\u80fd\u6b63\u5e38\u4e0b\uff0c\u6709\u7684\u5c31\u4f1a\u62a5\u9519\u3002</p>\n<p>\u4f7f\u7528\u547d\u4ee4\u5982\u4e0b\uff1a\nffmpeg -i url -c copy output.mp4</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/wapollo9", 
        "name": "wapollo9", 
        "avatar": "https://cdn.v2ex.com/gravatar/ea16cfab62d775b1c782b0074cc141b7?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/894947", 
      "title": "FFmpeg \u4f7f\u7528 qsv \u52a0\u901f\u5931\u8d25", 
      "id": "https://www.v2ex.com/t/894947", 
      "date_published": "2022-11-13T13:13:09+00:00", 
      "content_html": "<p>ffmpeg \u547d\u4ee4\u5982\u4e0b</p>\n<pre><code>ffmpeg -y -c:v h264_qsv -i input.mp4 -c:v hevc_qsv -low_power 1 output.mp4\n</code></pre>\n<p>\u8f93\u51fa\u7684\u9519\u8bef\u4fe1\u606f\u5982\u4e0b</p>\n<pre><code>[hevc_qsv @ 0x562ef30a0480] Selected ratecontrol mode is unsupported\n[hevc_qsv @ 0x562ef30a0480] some encoding parameters are not supported by the QSV runtime. Please double check the input parameters.\nError initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height\n[aac @ 0x562ef34099c0] Qavg: 65536.000\n[aac @ 0x562ef34099c0] 2 frames left in the queue on closing\nConversion failed!\n</code></pre>\n<p>vainfo \u8f93\u51fa\u5982\u4e0b</p>\n<pre><code>Trying display: wayland\nTrying display: x11\nerror: can't connect to X server!\nTrying display: drm\nvainfo: VA-API version: 1.16 (libva 2.16.0)\nvainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 22.4.4 ()\nvainfo: Supported profile and entrypoints\n      VAProfileNone                   : VAEntrypointVideoProc\n      VAProfileNone                   : VAEntrypointStats\n      VAProfileMPEG2Simple            : VAEntrypointVLD\n      VAProfileMPEG2Main              : VAEntrypointVLD\n      VAProfileH264Main               : VAEntrypointVLD\n      VAProfileH264Main               : VAEntrypointEncSliceLP\n      VAProfileH264High               : VAEntrypointVLD\n      VAProfileH264High               : VAEntrypointEncSliceLP\n      VAProfileVC1Simple              : VAEntrypointVLD\n      VAProfileVC1Main                : VAEntrypointVLD\n      VAProfileVC1Advanced            : VAEntrypointVLD\n      VAProfileJPEGBaseline           : VAEntrypointVLD\n      VAProfileJPEGBaseline           : VAEntrypointEncPicture\n      VAProfileH264ConstrainedBaseline: VAEntrypointVLD\n      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP\n      VAProfileVP8Version0_3          : VAEntrypointVLD\n      VAProfileHEVCMain               : VAEntrypointVLD\n      VAProfileHEVCMain               : VAEntrypointEncSliceLP\n      VAProfileHEVCMain10             : VAEntrypointVLD\n      VAProfileHEVCMain10             : VAEntrypointEncSliceLP\n      VAProfileVP9Profile0            : VAEntrypointVLD\n      VAProfileVP9Profile1            : VAEntrypointVLD\n      VAProfileVP9Profile2            : VAEntrypointVLD\n      VAProfileVP9Profile3            : VAEntrypointVLD\n      VAProfileHEVCMain422_10         : VAEntrypointVLD\n      VAProfileHEVCMain444            : VAEntrypointVLD\n      VAProfileHEVCMain444            : VAEntrypointEncSliceLP\n      VAProfileHEVCMain444_10         : VAEntrypointVLD\n      VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP\n</code></pre>\n<p>CPU \u548c GPU \u5206\u522b\u5982\u4e0b</p>\n<pre><code>CPU: Intel Celeron N5105 (4) @ 2.900GHz\nGPU: Intel JasperLake [UHD Graphics] \n</code></pre>\n<p>\u8c22\u8c22\u5404\u4f4d\u4e86</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/naldo0193", 
        "name": "naldo0193", 
        "avatar": "https://cdn.v2ex.com/gravatar/bf05e1ab4521e8049ca2a6a234920a56?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/894507", 
      "date_modified": "2022-11-11T07:57:08+00:00", 
      "content_html": "<p>\u5f85\u5408\u6210\u7684\u56fe\u7247\u53ea\u6709\u4e00\u5f20\uff0c\u97f3\u9891\u957f 7 \u5c0f\u65f6\u5de6\u53f3\n\u8f93\u51fa\u7684\u89c6\u9891\uff0c\u5f00\u5934\u5c11\u51e0\u79d2\uff0c\u8f93\u51fa\u89c6\u9891\u548c\u539f\u97f3\u9891\u58f0\u91cf\u5c11\u4e86\u4e00\u534a\u3002</p>\n<p>\u547d\u4ee4\u5982\u4e0b\uff1a\nffmpeg.exe -r 10 -loop 1 -i 5197.jpg -i audio5197.wav  -c:v libx264 -x264-params keyint=1:scenecut=0  -c:a aac -b:a 32k -pix_fmt yuvj420p -shortest out.mp4</p>\n", 
      "date_published": "2022-11-11T07:55:59+00:00", 
      "title": "\u4f7f\u7528 ffmepg \u628a\u56fe\u7247\u548c\u957f\u97f3\u9891\u8f6c\u6362\u4e3a\u89c6\u9891\u7684\u65f6\u5019\uff0c\u89c6\u9891\u548c\u97f3\u9891\u7684\u65f6\u95f4\u5bf9\u4e0d\u4e0a\uff0c\u58f0\u97f3\u4e5f\u51cf\u5c11\u4e86\u4e00\u534a", 
      "id": "https://www.v2ex.com/t/894507"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/JusticeLanding", 
        "name": "JusticeLanding", 
        "avatar": "https://cdn.v2ex.com/avatar/fe75/6da2/287090_large.png?m=1684890894"
      }, 
      "url": "https://www.v2ex.com/t/892099", 
      "title": "FFmpeg \u89e3\u7801\u5668\u5982\u4f55\u8bc6\u522b\u7801\u6d41\u683c\u5f0f\u53d8\u4e86\uff1f", 
      "id": "https://www.v2ex.com/t/892099", 
      "date_published": "2022-11-02T07:03:07+00:00", 
      "content_html": "<p>\u76ee\u524d\uff0c\u5c0f\u5f1f\u5728\u505a\u57fa\u4e8e ffplay \u7684\u64ad\u653e\u5668\uff0c\u76ee\u524d\u78b0\u5230\u4e2a\u95ee\u9898\u3002</p>\n<p>\u6709\u8fd9\u4e48\u4e2a\u573a\u666f\uff0c\u670d\u52a1\u7aef\u90a3\u8fb9\u8ddf\u64ad\u653e\u5668\u4e00\u4e2a ts \u94fe\u63a5\u91cc\uff0c\u6709\u53ef\u80fd\u78b0\u5230 264 \u6570\u636e\u540e\u9762\u76f4\u63a5\u7d27\u8ddf\u7740 265 \u7684\u6570\u636e\u3002</p>\n<p>\u800c\u64ad\u653e\u5668\u4e0d\u77e5\u9053\u7801\u6d41\u5207\u6362\u4e86\uff0c264 \u7684 AVCodec \u78b0\u5230 265 \u7684\u6570\u636e\uff0c\u5f53\u7136\u5c31\u62a5\u9519\uff0c\u5bfc\u81f4\u64ad\u653e\u5668\u5361\u4f4f\u3002</p>\n<p>\u73b0\u5728\u5728\u60f3\uff0c\u5982\u4f55\u4e0d\u4fee\u6539\u670d\u52a1\u7aef\u7684\u60c5\u51b5\uff0c264 \u89e3\u7801\u5668\u8bc6\u522b\u51fa\u5207 265 \u4e86\uff0c\u8fd8\u6709 265 \u89e3\u7801\u5668\u8bc6\u522b\u51fa\u5207 264 \u4e86\u3002</p>\n<p>\u5c1d\u8bd5\u5728 libavcodec \u91cc\u7684 h2645_parse.c \u91cc\u628a\u9519\u8bef\u8bc6\u522b\uff0c\u629b\u51fa\u53bb\uff0c\u4f46\u662f\u53ef\u80fd\u5c0f\u5f1f\u5bf9 ffmepg \u8fd8\u4e0d\u591f\u719f\u6089\uff0c\u6709\u4e9b\u6b63\u5e38\u89e3\u7801 264 \u7684\u60c5\u51b5\u4e5f\u4f1a\u6709\u89e3\u7801\u5931\u8d25\u7684\u62a5\u9519\u3002</p>\n<p>\u6240\u4ee5\uff0c\u6709\u5927\u795e\u80fd\u6307\u5bfc\u4e0b\u5417\uff1f\u60f3\u8981\u76f4\u63a5\u53bb\u62e6\u622a\u6bd4\u7279\u6570\u636e\uff0c\u627e\u8d77\u59cb\u7801 0001 \uff0c\u8bc6\u522b 264 \u3001265 \uff0c\u4f46\u662f\u8fd9\u597d\u50cf\u8981 ffmpeg \u5f88\u5e95\u5c42\uff0c\u7a0d\u4e0a\u5c42\u62ff\u5230\u7684\u90fd\u662f pkt \uff0cframe \u3002\u8fd9\u4e5f\u592a\u96be\u4e86</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/PuppetFrost", 
        "name": "PuppetFrost", 
        "avatar": "https://cdn.v2ex.com/gravatar/6b4d3bc62895924cacb0318d3a083e76?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/891984", 
      "date_modified": "2022-11-02T02:11:15+00:00", 
      "content_html": "\u6700\u8fd1\u5728\u5229\u7528 ffmpeg \u5904\u7406\u4e00\u4e9b\u5ba2\u670d\u5de5\u5355\u7684 wav \u97f3\u9891\u6587\u4ef6\uff0c\u5df2\u7ecf\u5206\u522b\u5c06\u5ba2\u670d\u4eba\u5458\u548c\u5ba2\u6237\u7684\u97f3\u9891\u5206\u5f00\u4e86\u3002<br />\u76ee\u524d\u7684\u97f3\u9891\u6ce2\u5f62\u662f\u8fd9\u6837\uff1a <a target=\"_blank\" href=\"https://imgur.com/a/L86Y5aX\" rel=\"nofollow noopener\">https://imgur.com/a/L86Y5aX</a><br />\u7ea2\u6846\u5185\u4e3a\u9759\u97f3\u90e8\u5206\u3002<br />\u73b0\u5728\u60f3\u8981\u5c06\u5176\u4e2d\u6bcf\u4e2a\u6709\u58f0\u97f3\u7684\u90e8\u5206\uff0c\u90fd\u5355\u72ec\u63d0\u53d6\u51fa\u6765\u751f\u6210\u6587\u4ef6\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u5ba2\u670d\u4eba\u5458\uff08\u5ba2\u6237\uff09\u8bf4\u7684\u6bcf\u53e5\u8bdd\u90fd\u5355\u72ec\u751f\u6210\u4e00\u4e2a\u72ec\u7acb\u7684 wav \u6587\u4ef6\uff0c\u81ea\u5df1\u5c1d\u8bd5\u4e86\u4e0b silencedetect \u65e0\u679c\uff0c\u8bf7\u95ee\u5404\u4f4d\u5927\u4f6c ffmpeg \u53ef\u4ee5\u505a\u5230\u8fd9\u4e00\u70b9\u4e48\uff1f", 
      "date_published": "2022-11-02T02:10:27+00:00", 
      "title": "ffmpeg \u63d0\u53d6\u97f3\u9891\u4e2d\u6709\u58f0\u90e8\u5206\u5e76\u5355\u72ec\u751f\u6210\u6587\u4ef6", 
      "id": "https://www.v2ex.com/t/891984"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/JusticeLanding", 
        "name": "JusticeLanding", 
        "avatar": "https://cdn.v2ex.com/avatar/fe75/6da2/287090_large.png?m=1684890894"
      }, 
      "url": "https://www.v2ex.com/t/890601", 
      "date_modified": "2022-10-28T02:23:47+00:00", 
      "content_html": "<p>\u5c0f\u5f1f\u76ee\u524d\u57fa\u4e8e ffplay \u81ea\u5df1\u505a\u4e00\u4e2a\u64ad\u653e\u5668\uff0c\u73b0\u5728\u60f3\u505a 32 \u500d\u901f\u5feb\u653e\uff0c\u64ad\u7684\u662f m3u8 \uff0c10 \u79d2\u4e00\u4e2a ts \u5206\u7247\uff0c\u53bb\u6389 sleep \uff0c\u53ea\u89e3\u7801 I \u5e27\uff0c\u6700\u591a\u80fd 20 \u500d\u901f\u3002</p>\n<p>\u8fbe\u4e0d\u5230 32 \u500d\u901f\uff0c\u4e8e\u662f\u67e5\u627e\u74f6\u9888\u5728\u54ea\u3002</p>\n<p>\u8bd5\u4e86\u975e 10 \u79d2\u5206\u7247\u7684 ts \uff0c\u8fd9\u4e2a ts \u5305\u542b 30 \u5206\u949f\u7684\u89c6\u9891\uff0c\u8fd9\u79cd\u60c5\u51b5\u80fd\u591f\u8fbe\u5230 60 \u500d\u901f\u3002</p>\n<p>\u6240\u4ee5\u74f6\u9888\u5e94\u8be5\u662f m3u8 \u91cc\u9762\u6bcf\u9694 10 \u79d2\uff0c\u91cd\u65b0\u8fde ts \uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u5f88\u8017\u65f6\u3002</p>\n<p>ffmpeg \u597d\u50cf\u6709\u4e2a multiple_requests \u7684\u53c2\u6570\uff0c\u53ef\u4ee5\u590d\u7528\u4e00\u4e2a\u94fe\u63a5\uff0c\u5728 avformat_open_input \u4e4b\u524d\u8c03\u7528\n<code>av_dict_set_int(&amp;opts, \"multiple_requests\", 1, 0)</code>\n\u53ef\u6ca1\u770b\u5230\u6548\u679c\u3002</p>\n<p>\u54ea\u4f4d\u5927\u4f6c\u6307\u70b9\u4e0b\uff0c\u6709\u4ec0\u4e48\u529e\u6cd5\u53ef\u7834\uff0c\u8c22\u8c22\uff01</p>\n", 
      "date_published": "2022-10-28T02:21:55+00:00", 
      "title": "ffplay \u5982\u4f55\u5e76\u884c\u4e0b\u8f7d m3u8", 
      "id": "https://www.v2ex.com/t/890601"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/1054850490", 
        "name": "1054850490", 
        "avatar": "https://cdn.v2ex.com/avatar/0568/22f0/554537_large.png?m=1670165418"
      }, 
      "url": "https://www.v2ex.com/t/876873", 
      "title": "\u5982\u4f55\u7528 ffmpeg \u627e\u5230\u635f\u574f\u7684\u89c6\u9891 50 \u5757\u94b1\u60ac\u8d4f\u7b54\u6848", 
      "id": "https://www.v2ex.com/t/876873", 
      "date_published": "2022-08-31T20:58:30+00:00", 
      "content_html": "\u4e3a\u4e86\u907f\u514d\u540c\u65f6\u51fa\u73b0\u4e24\u4e2a\u7b54\u6848\u7684\u60c5\u51b5\uff0c\u60ac\u8d4f\u6309\u7167\u65f6\u95f4\u5148\u540e\u987a\u5e8f\u7ed9\uff0c\u6700\u597d\u5c31\u662f\u5982\u679c\u6709\u54e5\u4eec\u89c9\u5f97\u81ea\u5df1\u4f1a\u7684\u8bdd\uff0c\u53ef\u4ee5\u8bc4\u8bba\u4e00\u4e0b\u81ea\u5df1\u5728\u5f04\uff0c\u5360\u4e00\u4e0b\u4f4d\uff0c\u907f\u514d\u522b\u7684\u54e5\u4eec\u767d\u5fd9\u6d3b\u3002<br /><br />\u6211\u7528\u7740 yt-dlp+aria2 \u4e0b\u8f7d\u7740 youtube \u89c6\u9891\uff0c\u89c6\u9891\u540e\u5904\u7406\u662f ffmpeg \uff0c\u56e0\u4e3a\u4e0b\u8f7d\u7684\u89c6\u9891\u591a\u5927\u51e0\u4e07\u90e8\uff0c\u6240\u4ee5\u6709\u4e2a\u95ee\u9898\u53ef\u80fd\u5b58\u5728\u4e86\u5f88\u4e45\u4f46\u662f\u4e00\u76f4\u6ca1\u53d1\u73b0\uff0c\u5c31\u662f\u6709\u4e9b\u89c6\u9891\u635f\u574f\u4e86\uff0c\u5c31\u662f\u524d\u9762\u6b63\u5e38\uff0c\u4f46\u662f\u540e\u9762\u5176\u4e2d\u67d0\u4e9b\u6bb5\u843d\u64ad\u653e\u82b1\u5c4f\uff0c\u4f46\u662f\u6211\u91cd\u65b0\u4e0b\u8f7d\u7684\u65f6\u5019\u53c8\u662f\u597d\u7684\uff0c\u6240\u4ee5\u6211\u731c\u6d4b\u5e94\u8be5\u662f\u5408\u6210 m3u8 \u7684\u65f6\u5019\u51fa\u73b0\u4e86\u9519\u8bef\uff0c\u7531\u4e8e aria2 \u7684\u5173\u7cfb\uff0c\u4e0b\u8f7d\u7684\u89c6\u9891\u662f\u5206\u6bb5\u4e0b\u8f7d\u7684\uff0c\u800c\u4e14\u4e00\u76f4\u662f\u6302\u540e\u53f0\u4e0b\u8f7d\u7684\uff0c\u5e76\u6ca1\u6709\u65e5\u5fd7\uff0c\u5982\u679c\u6709\u5c0f\u4f19\u4f34\u77e5\u9053 yt-dlp \u5982\u4f55\u5f00\u542f\u65e5\u5fd7\u4e5f\u53ef\u4ee5\u544a\u77e5\u3002<br /><br />\u6211\u73b0\u5728\u5c31\u662f\u6c42\u5982\u4f55\u4ece\u51e0\u4e07\u90e8\u89c6\u9891\u4e2d\uff0c\u81ea\u52a8\u5316\u7684\u8bc6\u522b\u51fa\u635f\u574f\u7684\u90e8\u5206\u89c6\u9891\uff0c\u6211\u4e0b\u9762\u8d34\u4e0a\u635f\u574f\u7684\u89c6\u9891\u4e0b\u8f7d\u94fe\u63a5\uff0c\u53ef\u4ee5\u8bd5\u4e00\u4e0b<br /><br /><a target=\"_blank\" href=\"https://imgur.com/OXoRgP9\" rel=\"nofollow noopener\">https://imgur.com/OXoRgP9</a><br /><a target=\"_blank\" href=\"https://imgur.com/clQlBRZ\" rel=\"nofollow noopener\">https://imgur.com/clQlBRZ</a><br /><br /><br /><a target=\"_blank\" href=\"https://drive.google.com/file/d/1TDbxYD0vri0D8aIJ6a1OSY2abE9tc6Lk/view?usp=sharing\" rel=\"nofollow noopener\">https://drive.google.com/file/d/1TDbxYD0vri0D8aIJ6a1OSY2abE9tc6Lk/view?usp=sharing</a><br /><a target=\"_blank\" href=\"https://drive.google.com/file/d/1Z_kWFZp4YP5q16CixMv_RmlIWIXFTrzb/view?usp=sharing\" rel=\"nofollow noopener\">https://drive.google.com/file/d/1Z_kWFZp4YP5q16CixMv_RmlIWIXFTrzb/view?usp=sharing</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/yazoox", 
        "name": "yazoox", 
        "avatar": "https://cdn.v2ex.com/avatar/7b39/2690/111562_large.png?m=1635297358"
      }, 
      "url": "https://www.v2ex.com/t/866932", 
      "title": "ffmpeg \u5982\u4f55\u538b\u7f29 h.265 \u7684\u89c6\u9891\u4e0d\u4e22\u5e27\uff1f", 
      "id": "https://www.v2ex.com/t/866932", 
      "date_published": "2022-07-18T02:55:44+00:00", 
      "content_html": "<p>\u5bb6\u91cc\u7684\u4e24\u4e2a\u6444\u50cf\u5934\uff0c\u8424\u77f3\u7684 C6C &amp; C6CN \uff0c\u4f7f\u7528\u7fa4\u6656\u5f55\u50cf\u5230 nas \u786c\u76d8\u91cc\uff0c\u5373\u4f7f\u6211\u9009\u62e9\u7684\u662f\u201c\u6807\u6e05\u201d\uff0c\u4f46\u662f\u4f53\u79ef\u8fd8\u662f\u592a\u5927\u4e86\u3002\u4e00\u4e2a\u6444\u50cf\u5934\uff0c\u4e00\u5929\u7684\u89c6\u9891\u5c31\u6709 10G \u5de6\u53f3\uff0c\u4e24\u4e2a\u5c31\u662f 20G \u3002</p>\n<p>\u6211\u5c1d\u8bd5\u7740\u4e0b\u8f7d\u4e86\u4e00\u4e2a\u89c6\u9891\u6587\u4ef6\uff0c\u5927\u6982 400MB \u5de6\u53f3\uff0c\u7136\u540e\u7528 ffmpeg \u538b\u7f29\u4e86\u4e00\u4e0b\uff08\u538b\u7f29\u540e\u7684\u5206\u8fa8\u7387\uff0c\u6211\u770b\u4e86\u4e00\u4e0b\uff0c\u80fd\u591f\u63a5\u53d7\uff09</p>\n<pre><code>ffmpeg -i c:\\temp\\1.mp4 -vf \"scale=iw/4:ih/4\" c:\\temp\\1-1.mp4\n</code></pre>\n<p>\u4f53\u79ef\u80fd\u591f\u7f29\u5c0f\u5230 50MB \u5de6\u53f3\u3002\u4f46\u662f\uff0c\u6211\u53d1\u73b0\u538b\u7f29\u540e\u7684\u89c6\u9891\uff0c\u62e8\u653e\u7684\u65f6\u5019\uff0c\u6709\u7684\u5730\u65b9\u4f1a\u201c\u4e22\u5e27\u201d\uff0c\u5982\u56fe\u6240\u793a\u3002\u547d\u4ee4\u884c\u91cc\u9762\u8fd0\u884c\u65f6\uff0c\u4e5f\u4f1a\u6709\u4e00\u4e9b\u9519\u8bef\u63d0\u793a\uff0c\u4e0d\u6e05\u695a\u662f\u4ec0\u4e48\u539f\u56e0\u9020\u6210\u7684\u3002</p>\n<p>\u7279\u6765\u8bf7\u6559\u4e00\u4e0b\uff0c\u6709\u6ca1\u6709\u529e\u6cd5\u6b63\u5e38\u538b\u7f29\u4e0d\u51fa\u9519\uff1f ffmpeg \u547d\u4ee4\u54ea\u91cc\u7528\u9519\u4e86\uff1f</p>\n<p>\u8c22\u8c22\uff01</p>\n<p><img alt=\"ffmpeg_PIC_20220714002.jpg\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://s2.loli.net/2022/07/14/p9gaGmd1qkVjZxL.jpg\"/>\n<img alt=\"ffmpeg_PIC_20220714003.jpg\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://s2.loli.net/2022/07/14/Sw83GoAT2RVkcls.jpg\"/></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/icemanpro", 
        "name": "icemanpro", 
        "avatar": "https://cdn.v2ex.com/static/img/avatar_large.png"
      }, 
      "url": "https://www.v2ex.com/t/863138", 
      "title": "\u6709\u6ca1\u6709 win \u4e0b\u5df2\u7f16\u8bd1\u597d\u7684 FLV \u6807\u51c6\u652f\u6301 H265 \u7684 ffmpeg?", 
      "id": "https://www.v2ex.com/t/863138", 
      "date_published": "2022-06-30T02:58:41+00:00", 
      "content_html": ""
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Awes0me", 
        "name": "Awes0me", 
        "avatar": "https://cdn.v2ex.com/avatar/9ad2/67ac/111002_large.png?m=1767670953"
      }, 
      "url": "https://www.v2ex.com/t/861714", 
      "date_modified": "2022-06-23T14:36:18+00:00", 
      "content_html": "<p>\u6bd4\u5982\u8fd9\u4e2a\uff0c\u4e00\u96c6 1.7G \uff0c1080p \uff0c\u8fd8\u4ee5\u4e3a\u662f\u9ad8\u6e05\uff0c\u70b9\u5f00\u770b\u753b\u8d28\u611f\u89c9\u662f 480p \uff0c\u662f\u6709\u4eba\u6545\u610f\u628a\u4f53\u79ef\u548c\u753b\u9762\u505a\u5927\u9a97\u8f6c\u5b58\u5417\uff1f</p>\n<p>\u5927\u660e\u738b\u671d 1566 2007.WEB-DL.Ep01.1080P.H264.AAC.mkv</p>\n<p><a href=\"https://imgtu.com/i/jPpLV0\" rel=\"nofollow\"><img alt=\"jPpLV0.png\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://s1.ax1x.com/2022/06/23/jPpLV0.png\"/></a></p>\n", 
      "date_published": "2022-06-23T09:30:31+00:00", 
      "title": "\u4e3a\u4ec0\u4e48\u6709\u4e9b\u89c6\u9891\u4f53\u79ef\u8fd9\u4e48\u5927\u4f46\u662f\u753b\u8d28\u8fd9\u4e48\u5dee\uff1f", 
      "id": "https://www.v2ex.com/t/861714"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/info521", 
        "name": "info521", 
        "avatar": "https://cdn.v2ex.com/gravatar/d2eb348108dabb3c43b6327689e44f00?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/859987", 
      "title": "lalserver \u6d41\u5a92\u4f53\uff08\u76f4\u64ad\u97f3\u89c6\u9891\u7f51\u7edc\u4f20\u8f93\uff09\u670d\u52a1\u5668 v0.30.1 2022.6.15", 
      "id": "https://www.v2ex.com/t/859987", 
      "date_published": "2022-06-16T04:01:06+00:00", 
      "content_html": "<a target=\"_blank\" href=\"https://github.com/q191201771/lal/releases\" rel=\"nofollow noopener\">https://github.com/q191201771/lal/releases</a><br /><br />[feat] HTTP-API\uff1a\u65b0\u589e start/stop_relay_pull \u63a5\u53e3\uff0c\u652f\u6301 rtmp \u548c rtsp \uff0c\u652f\u6301\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4\uff0c\u81ea\u52a8\u5173\u95ed\uff0c\u91cd\u8bd5\u6b21\u6570\uff0crtsp \u7c7b\u578b\u7b49\u53c2\u6570<br /><br /><br />\u6587\u6863<br /><a target=\"_blank\" href=\"https://pengrl.com/lal/#/\" rel=\"nofollow noopener\">https://pengrl.com/lal/#/</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/JusticeLanding", 
        "name": "JusticeLanding", 
        "avatar": "https://cdn.v2ex.com/avatar/fe75/6da2/287090_large.png?m=1684890894"
      }, 
      "url": "https://www.v2ex.com/t/856233", 
      "title": "[\u6c42\u52a9] mp4 \u5f55\u5236\uff0c\u600e\u4e48\u624d\u80fd\u4e0d\u7f13\u51b2\u5728\u5185\u5b58\u4e2d", 
      "id": "https://www.v2ex.com/t/856233", 
      "date_published": "2022-05-30T07:36:26+00:00", 
      "content_html": "<p>\u76ee\u524d\uff0c\u5c0f\u5f1f\u7684\u624b\u673a\u64ad\u653e\u5668 app \u6709\u4e2a\u89c6\u9891\u5f55\u5236\u529f\u80fd\uff0c\u7528 ffmpeg \u5e93\u5c01\u88c5\u6210 mp4 \u3002</p>\n<p>\u73b0\u5728 ffmpeg \u4f1a\u5148\u5c06\u5f55\u5236\u7684\u89c6\u9891\u7f13\u51b2\u5728\u5185\u5b58\u4e2d\uff0c\u7b49\u5230\u505c\u6b62\u5f55\u5236\uff0cffmpeg \u5728\u786c\u76d8\u6700\u5f00\u59cb\u5199\u4e2a mp4 \u5934\u90e8\uff0c\u7136\u540e\u628a\u4e00\u6574\u4e2a\u5185\u5b58\u91cc\u7684\u89c6\u9891\u6570\u636e\u5199\u5165\u786c\u76d8\uff0c\u8fd9\u6837\u5bfc\u81f4\u5185\u5b58\u5360\u7528\u5f88\u5927\uff0c\u800c\u4e14\u8fd8\u6709 OOM \u7684\u98ce\u9669\u3002</p>\n<p>\u6240\u4ee5\u60f3\u8981\u627e\u4e2a\u80fd\u5b9e\u65f6\u5c06\u5f55\u5236\u7684\u89c6\u9891\u6570\u636e\u5199\u5165\u78c1\u76d8\u7684\u529e\u6cd5\u3002\u6709\u6ca1\u6709\u5927\u795e\u6307\u70b9\u4e00\u4e8c\uff1f</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/JusticeLanding", 
        "name": "JusticeLanding", 
        "avatar": "https://cdn.v2ex.com/avatar/fe75/6da2/287090_large.png?m=1684890894"
      }, 
      "url": "https://www.v2ex.com/t/855410", 
      "title": "ffmpeg \u600e\u4e48\u5904\u7406 h265 \u5207 h264 \u7684\u76f4\u64ad\u6d41\uff1f", 
      "id": "https://www.v2ex.com/t/855410", 
      "date_published": "2022-05-26T04:23:03+00:00", 
      "content_html": "<p>\u5c0f\u5f1f\u5728\u7528 ffmpeg \u505a\u4e00\u4e2a\u76f4\u64ad\u6d41\u7684\u64ad\u653e\u5668\uff0c\u53d1\u73b0\u5f53\u76f4\u64ad\u6d41\u4e2d 265 \u5207\u6210 264 \uff0c\u64ad\u653e\u5668\u4f1a\u5361\u6b7b\uff0c\u67e5\u4e86\u4e0b\u662f ffmpeg \u7684 265 \u5c01\u88c5\u5668\u6ca1\u6cd5\u76f4\u63a5\u89e3\u6790 264 \u7684\u5c01\u88c5\u5934\u90e8\uff0c\u4e8e\u662f\u627e\u5230\u89e3\u6790\u62a5\u9519\u7684\u5730\u65b9\u662f\u5728 ff_h2645_packet_split \u91cc\u7684 hevc_parse_nal_header \u3002\n\u672c\u4ee5\u4e3a\u628a\u8fd9\u4e2a ret \u4e3a\u8d1f\u7684\u62a5\u9519\u629b\u4e0a\u53bb\u5c31\u80fd\u89e3\u51b3\u4e86\u3002\n\u7ed3\u679c\u6539\u5b8c\u540e\uff0c\u53d1\u73b0\u4e2a\u522b\u624b\u673a\u7684\u6b63\u5e38 265 \u76f4\u64ad\u6d41\u4e5f\u4f1a ret&lt;0 \uff0c\u8fd9\u4e0b\u4e0d\u77e5\u9053\u8be5\u600e\u4e48\u533a\u5206\u662f\u7f16\u7801\u683c\u5f0f\u5207\u6362\u5f15\u8d77\u8fd8\u662f\u4e2a\u7b80\u5355\u7684 warning \u4e86\u3002\n\u6709\u5927\u795e\u80fd\u7ed9\u70b9\u601d\u8def\u5417\uff1f</p>\n<pre><code>int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, void *logctx, int is_nalff, int nal_length_size, enum AVCodecID codec_id)\n{\n   ......\n         if (codec_id == AV_CODEC_ID_HEVC)\n             ret = hevc_parse_nal_header(nal, logctx);\n         else\n             ret = h264_parse_nal_header(nal, logctx);\n         if (ret &lt;= 0 || nal-&gt;size &lt;= 0) {\n             if (ret &lt; 0) {\n                 av_log(logctx, AV_LOG_ERROR, \"Invalid NAL unit %d, skipping.\\n\",\n                        nal-&gt;type);\n             }\n             pkt-&gt;nb_nals--;\n         }\n   ......\n}\n</code></pre>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/gtheone1", 
        "name": "gtheone1", 
        "avatar": "https://cdn.v2ex.com/avatar/ca7f/d285/135491_large.png?m=1650455715"
      }, 
      "url": "https://www.v2ex.com/t/848180", 
      "date_modified": "2022-04-20T08:40:15+00:00", 
      "content_html": "ffmpeg -i aa.mp4 -c copy -metadata:s:v:0 rotate=90 bb.mkv<br /><br />\u9644\u4e0a\u8f93\u51fa\u65e5\u5fd7\uff1a <a target=\"_blank\" href=\"https://netcut.cn/p/e321491f1686d4a5\" rel=\"nofollow noopener\">https://netcut.cn/p/e321491f1686d4a5</a><br /><br />\u8fd9\u6761\u6267\u884c\u4e4b\u540e\uff0c\u5e76\u6ca1\u6709\u65cb\u8f6c\u6210\u529f\u3002\u56e0\u4e3a potplayer \u64ad\u653e\u8fc7\uff0cffprobe.exe \u4e5f\u64ad\u653e\u8fc7\uff0c\u753b\u9762\u5e76\u6ca1\u6709\u65cb\u8f6c<br /><br />\u7528 ffprobe -v quiet -print_format json -show_format -show_streams \uff0c\u6765\u67e5\u770b\u8f6c\u6362\u540e\u7684\u89c6\u9891\u7684\u53c2\u6570\uff1a<br /><br /><a target=\"_blank\" href=\"https://netcut.cn/p/2326a8e35c3a0e22\" rel=\"nofollow noopener\">https://netcut.cn/p/2326a8e35c3a0e22</a><br /><br />\u5982\u4e0a\uff0c\u6ca1\u770b\u89c1 rotate \u53c2\u6570\u88ab\u6dfb\u52a0\uff1f\u6309\u7406\u8bf4\uff0c\u4e0d\u662f\u4f1a\u591a\u51fa\u4e00\u884c\"rotate\": \"90\"  \u5417\uff1f", 
      "date_published": "2022-04-20T08:32:48+00:00", 
      "title": "\u4e3a\u4ec0\u4e48 ffmpeg \u52a0\u4e0d\u4e0a rotate \u65cb\u8f6c\u53c2\u6570", 
      "id": "https://www.v2ex.com/t/848180"
    }
  ]
}