<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ビデオ処理 on KnightLiブログ</title>
        <link>https://www.knightli.com/ja/tags/%E3%83%93%E3%83%87%E3%82%AA%E5%87%A6%E7%90%86/</link>
        <description>Recent content in ビデオ処理 on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Thu, 02 Apr 2026 23:14:03 +0800</lastBuildDate><atom:link href="https://www.knightli.com/ja/tags/%E3%83%93%E3%83%87%E3%82%AA%E5%87%A6%E7%90%86/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>FFmpeg の `-map` パラメータの詳細な説明: ビデオ、オーディオ、および字幕ストリームの正確な選択</title>
        <link>https://www.knightli.com/ja/2026/04/02/ffmpeg-map-parameter-guide/</link>
        <pubDate>Thu, 02 Apr 2026 23:14:03 +0800</pubDate>
        
        <guid>https://www.knightli.com/ja/2026/04/02/ffmpeg-map-parameter-guide/</guid>
        <description>&lt;p&gt;マルチオーディオ トラックおよびマルチ字幕ビデオ処理では、&lt;code&gt;-map&lt;/code&gt; は FFmpeg の最も重要で最も誤用されやすいパラメータの 1 つです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-map&lt;/code&gt; を明示的に指定しない場合、FFmpeg はデフォルトのルールに従ってストリームを自動的に選択するため、多くの場合、期待した結果が得られません。例えば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;エクスポートすると字幕が失われる&lt;/li&gt;
&lt;li&gt;間違ったオーディオトラック言語が選択されました&lt;/li&gt;
&lt;li&gt;不要なデータストリームが混入している&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この記事では、最も一般的なシナリオを使用して、&lt;code&gt;-map&lt;/code&gt; の使用方法を説明します。&lt;/p&gt;
&lt;h2 id=&#34;まずは流れとは何かを理解する&#34;&gt;まずは「流れ」とは何かを理解する
&lt;/h2&gt;&lt;p&gt;通常、コンテナー ファイルには複数のコンテンツ ストリーム (ストリーム) が存在します (&lt;code&gt;mp4&lt;/code&gt;、&lt;code&gt;mkv&lt;/code&gt; など)。一般的なものには次のようなものがあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ビデオストリーミング (&lt;code&gt;v&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;オーディオ ストリーム (&lt;code&gt;a&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;字幕ストリーム (&lt;code&gt;s&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;添付ファイル/データ ストリーム (フォント、表紙、章など)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まず &lt;code&gt;ffprobe&lt;/code&gt; を使用して、ファイル内にどのようなストリームがあるかを確認できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffprobe -hide_banner input.mkv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;-map-の基本構文&#34;&gt;&lt;code&gt;-map&lt;/code&gt; の基本構文
&lt;/h2&gt;&lt;p&gt;最も一般的な書き方は次のとおりです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-map input_index[:stream_type][:stream_index]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;例えば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0:v&lt;/code&gt;: 1 番目の入力ファイルのすべてのビデオ ストリーム&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0:a:0&lt;/code&gt;: 入力ファイル 1 のオーディオ ストリーム 1&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1:s:1&lt;/code&gt;: 2 番目の入力ファイルの 2 番目の字幕ストリーム&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例証します:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;input_index&lt;/code&gt; は &lt;code&gt;0&lt;/code&gt; から始まり、&lt;code&gt;-i&lt;/code&gt; のシーケンスに対応します。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;stream_index&lt;/code&gt; も &lt;code&gt;0&lt;/code&gt; で始まります&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;実践例&#34;&gt;実践例
&lt;/h2&gt;&lt;h3 id=&#34;1-ビデオは-a-から音声は-b-から来ます&#34;&gt;1) ビデオは A から、音声は B から来ます
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i english.mp4 -i french.mp3 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -map 0:v:0 -map 1:a:0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -c:v copy -c:a aac &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  french.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;意味：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;english.mp4&lt;/code&gt; の最初のビデオ ストリームを取得します&lt;/li&gt;
&lt;li&gt;&lt;code&gt;french.mp3&lt;/code&gt; の最初のオーディオ ストリームを取得します&lt;/li&gt;
&lt;li&gt;結合された出力は &lt;code&gt;french.mp4&lt;/code&gt; です。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-最初の入力のすべてのストリームを保持し追加のオーディオ-トラックを追加します&#34;&gt;2) 最初の入力のすべてのストリームを保持し、追加のオーディオ トラックを追加します。
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i english.mp4 -i french.mp3 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -map &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; -map 1:a:0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -c copy &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  english-french.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;意味：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-map 0&lt;/code&gt; まず、すべてのストリームを最初の入力ファイルに取り込みます&lt;/li&gt;
&lt;li&gt;2 番目の入力の最初のオーディオ ストリームを追加します&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;非常に実践的な-2-つの高度なテクニック&#34;&gt;非常に実践的な 2 つの高度なテクニック
&lt;/h2&gt;&lt;h3 id=&#34;1-ネガティブ-マッピング-不要なフローを除外します&#34;&gt;1) ネガティブ マッピング: 不要なフローを除外します。
&lt;/h3&gt;&lt;p&gt;たとえば、最初の入力のすべてのストリームを保持しますが、2 番目のオーディオ ストリームを削除します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i input.mkv -map &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; -map -0:a:1 -c copy output.mkv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-オプションのマッピング-ストリームは存在せず中断されません&#34;&gt;2) オプションのマッピング: ストリームは存在せず、中断されません。
&lt;/h3&gt;&lt;p&gt;一部のファイルには字幕がない場合があります。その場合は、&lt;code&gt;?&lt;/code&gt; を使用できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i input.mp4 -map 0:v -map 0:a -map 0:s? -c copy output.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;0:s?&lt;/code&gt; は、「字幕がある場合はマップし、字幕がない場合はスキップし、エラーは報告されない」ことを意味します。&lt;/p&gt;
&lt;h2 id=&#34;一般的なピットの位置&#34;&gt;一般的なピットの位置
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;-map&lt;/code&gt; を使用すると、FFmpeg はデフォルトでストリームを自動的に選択しなくなるため、必要なものをすべて書き出す必要があります。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c copy&lt;/code&gt; は、トランスコーディングを行わずにカプセル化とコピーのみを行います。ターゲット コンテナが特定のエンコーディングをサポートしていない場合でも、失敗します。&lt;/li&gt;
&lt;li&gt;複数の入力を入力するときに最もよくある間違いは、シリアル番号を入力することです。シリアル番号は &lt;code&gt;-i&lt;/code&gt; の順序にのみ依存することに注意してください。&lt;/li&gt;
&lt;li&gt;安定したスクリプトを作成したい場合は、まず &lt;code&gt;ffprobe&lt;/code&gt; を作成し、次に手書きよりも安定した &lt;code&gt;-map&lt;/code&gt; を生成します。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;要約する&#34;&gt;要約する
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;-map&lt;/code&gt; の中核は 1 つの文です。「どの入力から、どのタイプのストリームを取得し、どのストリームを取得するか」を FFmpeg に明確に指示します。&lt;/p&gt;
&lt;p&gt;マスタリング後は、複数のオーディオトラック、複数の字幕、ファイル間の結合などの複雑なシーンを安定して処理できるようになり、「エクスポート結果が間違っているが原因がわからない」という問題を回避できます。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
