※本記事にはPRを含む場合があります。

こんにちは。『脱会社員』脱サラを応援し続けるブログ、運営者の『なかびー』です。

納品前の動画について「指定どおりのMP4ですか」と聞かれても、拡張子だけでは答えられません。映像の大きさやフレームレート、音声トラックの有無、サンプルレートやチャンネル数は、ファイルの中にある情報を読んで確認する必要があります。一方、その情報が一致しても、映像の内容や聞こえ方まで合格したことにはなりません。

この記事では、ffprobeで3本の架空動画を読み取り、映像・音声の情報を保存して指定条件と照合する手順を解説します。同じMP4でも、Aは教材の技術条件に一致し、Bは音声トラックがなく、Cは大きさ・fps・音声条件が異なります。この違いを比較表に整理し、読取り失敗を「音声0」と誤解せず、まだ確認していない再生や受領の状態を残します。

対象は、すでにffprobeを利用できる環境で、動画を変換する前に現在の構成を確認したい方です。教材は既存のFFmpeg環境で生成した2秒の人工映像であり、顧客動画や実写素材は使っていません。AとCのAAC音声は意図的な無音です。音声トラックの存在、デコード処理の成功、人が実際に聞いて確認したことを区別して読み進めてください。

記事では情報の取得と別工程のデコード試験を実施しましたが、人による内容の目視・聞き取り、相手の機器での再生、納品承認は未実施です。画像は各工程を理解するための写真調図解で、実際のソフト画面や視聴済みの証拠ではありません。確認できたことを広げず、指定との差と次に必要な確認を説明できる状態を目指します。

調べる動画と納品条件を先に固定する

拡張子MP4だけでなく映像音声と受取条件を固定する図解

作業を説明する概念写真です。実際のffprobe画面や再生確認の証拠ではありません。

変換する前に今の状態を読む

動画の納品前に「このMP4で合っていますか」と聞かれても、拡張子だけでは答えが出ないことがあります。映像の大きさ、音声の有無、チャンネル数など、確認したい条件はファイル名の外側にあるためです。そこで役立つのが、動画をいきなり変換せず、まず中の情報を読むという順番です。元の状態を把握してから、修正が必要かどうかを判断します。

ffprobeは、メディアの形式やストリームの情報を読み取り、文字やJSONとして出力できる道具です。本記事では幅広いコマンド集にするのではなく、短い三本の教材動画を比較し、指定に合う項目、違う項目、まだ確認していない項目を分ける練習をします。容量を小さくする設定や動画を編集する操作は、この確認作業とは別の工程として扱います。

教材は既存のFFmpeg環境でローカル生成した二秒のテスト映像です。実際の依頼動画、人物の撮影素材、顧客の情報は使用していません。ffprobeで情報を読み取り、別途デコード処理の終了状態も確認しましたが、受取側の機器での再生や人による聞き取りまで完了した例ではありません。記事の写真も、検品の考え方を示す概念画像です。

拡張子を合格の印にしない

三本の教材はいずれも末尾がmp4ですが、内容は同じではありません。AとBは同じ大きさとフレームレートの映像を持ち、Aだけに音声ストリームがあります。Cには映像と音声の両方がありますが、映像の大きさ、フレームレート、音声のサンプルレートとチャンネル数が異なります。ファイルの種類が同じに見えることと、依頼条件が一致することを分けて確認します。

納品条件は「MP4でお願いします」だけで十分とは限りません。用途によって、映像と音声のどの項目をそろえるかが違うためです。ただし、必要がない条件まで勝手に増やすのも適切ではありません。指定された項目と、参考として読んだ項目を区別し、指定のない値が違うからといって一律に不合格にしないようにします。

今回の比較用条件は、映像が六百四十掛ける三百六十、毎秒二十五フレーム、映像方式がH.264、音声がAACで四万八千Hz、二チャンネル、長さは二秒とします。これは教材のための条件であり、一般の納品に推奨する万能設定ではありません。どのサイズや音声形式が適切かは、実際の送り先と用途に合わせて決める必要があります。

調査対象の版を取り違えない

実行前の短い確認として、対象のパスと結果の保存先を声に出さずとも一度読み返します。同じフォルダーに古い出力やテスト用の失敗ファイルを置いている場合は、とくに入力の指定を確認してください。今回のnot-media.mp4は、名前の末尾こそ動画と同じですが、意図的に読取りを失敗させるための教材です。A、B、Cと同じ正常素材として一覧へ混ぜず、失敗試験の対象だと分かる名前と説明を付けて保管します。

確認するファイルは、作業途中の出力なのか、修正後の採用候補なのかを先に特定します。似た名前の動画が並んでいると、古い版を調べて新しい版の結果として報告してしまうことがあります。教材ではA.mp4、B.mp4、C.mp4と単純な名前にしていますが、実務では対象の版が分かる名前や記録を使って、どのファイルを確認したかを残します。

情報を読む操作と、動画を置き換える操作は別です。本記事の確認コマンドは動画を入力として読み、結果を別のJSONへ保存します。元の動画と結果ファイルに同じ名前を使ったり、調査の途中で元のファイルを変換し直したりしません。状態が変わった場合には、修正後のファイルを改めて対象として読み直し、古い結果を流用しないようにします。

調査メモには、対象ファイル、確認した時刻、使用した道具の版、採用した比較条件、保存した結果の場所を残します。後からすべてを思い出す必要がなくなるからです。ハッシュなどでファイルを特定する場合も、その値が内容の良し悪しを判断するわけではありません。同じファイルを指していることと、そのファイルが納品条件に合うことは、別々の確認です。

コンテナと映像・音声を分けて読む

コンテナの中の映像と音声ストリームを分けて読む構造図解

作業を説明する概念写真です。実際のffprobe画面や再生確認の証拠ではありません。

全体の情報と一本ずつの情報

項目を読む順番は、全体の形式、ストリームの種類と本数、映像の条件、音声の条件、未取得の項目という流れにすると整理しやすくなります。最初からすべての出力を理解しようとすると、今回の依頼には関係しない情報へ時間を使うこともあります。調査結果そのものは残したうえで、比較表へ転記する項目を限定します。情報を省略して見やすくすることと、元の取得結果を失うことを同じ作業にしないでください。

ffprobeの出力では、ファイル全体に関する情報と、それぞれのストリームの情報を分けて読めます。教材のJSONにも、formatとstreamsという別のまとまりが出ています。まず全体を確認し、その中に映像や音声が何本あるかを見ます。最初に見つかった数字だけを拾うのではなく、どのまとまりに書かれた値かを確かめることが、読み違いを防ぐ基本になります。

コンテナは映像や音声などを入れる入れ物として考えると整理しやすくなります。中にある映像の方式と、外側のファイル形式は同じ項目ではありません。今回の三本はMP4の教材で、映像方式はいずれもh264と読めました。そこまで一致していても、映像のサイズや音声の構成は違います。一つの項目の一致を、ファイル全体の一致へ広げないようにします。

最初の確認では項目を絞りすぎず、全体と全ストリームをJSONとして保存します。必要な項目だけを短く出す方法は便利ですが、音声が複数あるなど、想定していなかった構成を見落とす可能性もあります。今回の三本は映像一本、音声は零本または一本という単純な構成です。複雑な実素材でも同じ構成だと決めつけないでください。

教材では次のコマンドで、ローカルの3本をそれぞれ読み取りました。JSONの出力先は動画と別名です。コマンドを実行する前に、作業場所と対象ファイル名を確認してください。

ffprobe -version
ffprobe -v error -show_format -show_streams -of json A.mp4 > A.mp4.json
ffprobe -v error -show_format -show_streams -of json B.mp4 > B.mp4.json
ffprobe -v error -show_format -show_streams -of json C.mp4 > C.mp4.json

ストリームの種類と番号を確かめる

streamsの中では、codec_typeを手掛かりに映像と音声を区別します。教材のAでは映像と音声が一つずつ、Bでは映像だけ、Cでは映像と音声が一つずつ確認できます。配列の先頭にあるから必ず調べたい映像だ、二番目だから必ず音声だ、と順番だけで判断するのではなく、種類と番号を一緒に見て対象を特定します。

音声がないことを確かめる場合も、映像だけを選んだ出力から結論を出してはいけません。映像に絞った結果に音声が出ないのは、指定どおりに表示されていないだけかもしれないからです。教材のBでは、全ストリームを取得した結果に音声の項目がないことを確認しています。何を表示する指定で読んだかが、結論を出せる範囲を決めます。

一部だけを選んで読むときは、その指定を記録に添えます。「調べたらありませんでした」という報告より、「全ストリームを確認し、音声は見つかりませんでした」と範囲を示すほうが正確です。それでも再生中の印象や内容の意図までは決まりません。音声を入れる必要がある動画なのか、無音でよい動画なのかは、依頼の条件と照合して判断します。

JSONの項目名と値を一緒に残す

結果を表へ整理するときには、値だけでなく項目名も残します。たとえば二という数字だけでは、音声の本数なのかチャンネル数なのか、秒数なのかが分かりません。教材のAの二チャンネルは、一つの音声ストリームが持つ構成として読んだ値です。音声ストリームが二本あるという意味ではないため、表の見出しを省略しないことが大切です。

数値に見える値がJSONでは文字列として表示されることもあります。今回のサンプルレートや平均フレームレートも、出力上の表記をまずそのまま保持します。表へ転記するときに単位を付けて説明するのは構いませんが、元の表記が何だったかに戻れる状態にします。確認していない桁を丸めたり、空欄を零に置き換えたりする作業は加えません。

出力の一部がない、または意味が分からない場合は、未確認として残します。すべての動画で同じ項目が必ず出るとは限らないため、空欄を埋めるための推測は避けます。今回の表は実際に読み取れた項目を整理したもので、読めなかった実素材の値を補って完成させる例ではありません。必要な項目が取得できないときは、その項目の確認方法を別に検討します。

映像の大きさと時間に関する値を照合する

640×360の25fpsと320×180の30fpsを比較する図解

作業を説明する概念写真です。実際のffprobe画面や再生確認の証拠ではありません。

幅と高さを一組として確認する

教材AとBの映像は幅六百四十、高さ三百六十です。Cは幅三百二十、高さ百八十なので、両方とも小さくなっています。横長という見た目だけで同じ設定と判断せず、幅と高さを一組で比較します。どちらも同じ比率に見えるからといって、指定された画素数が一致するわけではありません。表には幅だけでなく高さも並べて記録します。

この大きさは今回読み取った映像ストリームの情報です。実際にプレーヤーで見たときの表示や、文字の読みやすさまで確認した数値ではありません。同じ画素数でも、素材の内容や作り方によって見やすさは違います。今回の教材は人工的なテストパターンなので、細かい字幕や人物の表情が十分見えるといった品質判断へ結果を広げないでください。

指定と違う大きさを見つけた場合は、まずそれが修正対象かを確認します。Cが教材の比較条件と違うことは事実ですが、どの仕事でもCが不適切という意味ではありません。別の用途では小さい版が必要なこともあります。調査担当は観測した違いを示し、依頼条件と突き合わせて、修正する版とそのまま使う版を取り違えないようにします。

分数で出たフレームレートを読む

フレームレートを表へ書くときには、元の25/1という値と、説明用の25fpsという表記を対応させます。今回のように分母が一であれば読み替えは単純ですが、実素材で別の分数が出たときは、見た目を整えるためだけに整数へ丸めないようにします。依頼された許容範囲が不明なまま近い数値へそろえると、相違点が表から消えてしまいます。元の表記と判定の理由を残すことが、後の確認につながります。

今回のavg_frame_rateは、AとBで25/1、Cで30/1でした。教材ではそれぞれ二十五、三十として読める値です。分数の表記を、文字列のまま比べるのか、意味として計算して比較するのかを決めておくと、確認の基準がぶれにくくなります。この例は単純な固定条件で作った動画であり、すべての実素材の時間構造を説明するものではありません。

フレームレートに関係する項目が複数出てきても、一つの数字だけで全フレームの挙動を断定しないようにします。教材ではavg_frame_rateという項目を比較表に使用しました。別の項目の値を途中から混ぜて、同じ基準で比較したことにしません。実素材で値が食い違う場合は、どの項目を読んだかを記録し、必要な範囲を追加で確認します。

この三本では、AとBのnb_framesは五十、Cは六十と読めました。二秒の教材を二十五または三十という条件で作ったことと整合します。ただし、フレーム数が取得できないファイルを同じ方法で埋めてよいという例ではありません。実際に出力にあった値と、条件から予想した値を別に記録し、期待した数字を観測値として書かないことが重要です。

長さの値と再生確認を区別する

三本のformat.durationは2.000000でした。今回の比較表では二秒として整理しています。これはファイル全体の情報として読み取った長さであり、人が最初から最後まで見たことを意味しません。始まりや終わりの内容、場面の欠け、最後に余分な画面が残っていないかなどは、別の見方で確認する必要があります。

対象 映像方式 幅×高さ avg_frame_rate format.duration(秒) 音声本数 音声方式 Hz ch
A.mp4 h264 640×360 25/1 2.000000 1 aac 48000 2
B.mp4 h264 640×360 25/1 2.000000 0 音声なし 該当なし 該当なし
C.mp4 h264 320×180 30/1 2.000000 1 aac 44100 1

表が画面に収まらない場合は横にスクロールしてください。値は架空のテスト動画をローカルで生成・読取りした結果です。

また、ファイル全体の長さと、映像や音声の個別の時間情報を無条件に同一視しないようにします。調査する項目を決めるときは、何の長さが必要なのかを依頼条件に合わせて確認します。本教材の比較は二秒の単純な動画で行っていますが、複数のトラックや編集を含む実素材について、全体の秒数だけで同期や欠落を保証する例にはしていません。

秒数が指定と違ったときも、その場で末尾を切るなどの変更はしません。読み取りで分かった違いと、どう直すかの判断は別の工程です。今回の目的は、情報を確かめて修正が必要な箇所を特定することです。変換や編集を実施するなら、対象の版、変更内容、元ファイルの保全、修正後の確認を別途そろえてから進めます。

音声の有無と中身を同じものと考えない

AACトラックがある意図的無音と音声トラックなしを区別する図解

音声トラックの有無と意図的な無音を区別する写真調図解です。実際のffprobe画面や聴取確認の証拠ではありません。

音声ストリームがあるかを確認する

AにはAACの音声ストリームが一つあります。Bには音声ストリームがありません。CにもAACの音声ストリームが一つあります。この三つを比べることで、映像が入ったMP4だから音声もあるはずだという思い込みを避けられます。音声が必要な依頼なら、少なくとも存在の確認が必要ですが、存在だけで音の内容が正しいとは言えません。

今回AとCに入れた音声は、教材用に意図的に作った無音です。音声ストリームの情報は読めても、人の声や音楽が入っているわけではありません。これが「音声あり」と「期待した音が聞こえる」を区別する具体例です。検品表で音声の有無を確認済みにした場合も、聞き取りや内容確認の欄まで自動で合格にしないようにします。

Bについては、音声がないこと自体を観測結果として記録します。音声が必須の今回の比較条件とは違いますが、無音映像としての用途を否定するものではありません。誤りだと決める前に、どの版を何の用途へ使うかを確認します。情報を読む道具が教えてくれることと、その情報をどう評価するかは、別の判断です。

サンプルレートとチャンネル数を読む

音声がないBでは、サンプルレートやチャンネル数を零として表に埋めません。今回の結果は音声ストリームそのものがないので、その項目を読んだ結果の零ではなく「音声なし」と表示します。AやCの数値と同じ種類の観測値ではないことを明確にするためです。比較表に空欄を残す場合も、読取り漏れなのか、該当するストリームがないのかが区別できる注記を付けると、受け取る人が判断しやすくなります。

Aの音声はサンプルレート四万八千Hz、二チャンネル、Cは四万四千百Hz、一チャンネルとして読み取れました。今回の比較用条件は前者なので、Cにはその違いを記録します。数字が大きいほうを無条件に良い音と評価したり、チャンネル数が多いほうを優れた納品物と決めたりしません。指定と用途に対して一致しているかを確認します。

二チャンネルと読めたから、左右に期待どおりの音が入っているとまでは分かりません。一チャンネルと読めた場合も、必要な音が聞き取れないと決まるわけではありません。教材のAとCはどちらも無音なので、チャンネルの情報と音の内容が別であることが分かります。数値の照合と、耳で確かめるべき事項を分けた表を作ると、確認漏れを防ぎやすくなります。

音声方式はどちらもaacですが、それだけで二つの音声が同じ条件だとまとめないようにします。方式、サンプルレート、チャンネル数を別列にすれば、どこが一致し、どこが違うかが明確になります。「音声は同じでした」と一言で済ませるより、何を比較した結論かを示すほうが、修正担当や受取側へ伝わりやすくなります。

未実施の聞き取りを残しておく

本教材では、音声が無音になる入力で生成されたことと、音声ストリームの存在や設定を確認しています。人がヘッドホンで聞き、期待したナレーションがあることを検品した例ではありません。実案件では声の内容、左右の聞こえ方、不要な音など、用途に合う別の確認が必要になることがあります。この記事の数値確認だけで代替できるとはしません。

自分が確認していない項目は、作業メモに未実施と記します。「音声確認済み」という広い言葉より、「AAC・四万八千Hz・二チャンネルを情報として確認、聞き取りは未実施」と書けば、次に必要な作業が伝わります。作業を多く見せるために言葉を広げるのではなく、確認できた範囲が分かる表現を選びます。

別の担当が聞き取りを行った場合も、報告を受けただけで自分が実際に聞いたことにはしません。対象の版が同じか、どの範囲を確認したか、その結果に未確認が残っていないかを照合して記録します。数値の確認と実際の再生確認を別々に管理しておけば、どちらかだけが古い版のまま残ることにも気づきやすくなります。

三本の結果を比較表とエラー記録にまとめる

Aの指定一致・Bの音声なし・Cの指定相違と取得失敗を分ける図解

作業を説明する概念写真です。実際のffprobe画面や再生確認の証拠ではありません。

一致と相違を項目ごとに示す

比較表の判定欄には、観測値だけでなく、参照した条件が何かを添えます。Aの二チャンネルが一致という判定になるのは、今回の比較条件が二チャンネルだからです。別の案件で一チャンネルが指定されれば、同じ観測値でも判定は変わります。こうした関係を明示すると、「前に合格したファイルだから今回も合格」という取り違えを防げます。過去の結果を参考にしても、現在の条件との照合は省略しません。

比較表では、Aが教材の技術条件に一致し、Bは音声がなく、Cは映像の大きさとフレームレート、音声のサンプルレートとチャンネル数が違うと整理します。ここでAを「納品合格」とは呼びません。実際の内容確認や受取環境での再生など、まだ確認していない項目があるためです。表の一部の合格を、仕事全体の完了へ読み替えないようにします。

対象 教材の技術条件との照合 注意 残る判断・確認
A.mp4 指定した技術項目に一致 音声は意図的な無音 内容の目視・聞き取り・受取環境の再生は未実施
B.mp4 映像項目は一致・音声なし 音声必須という教材条件とは相違 無音映像としての採否は用途による
C.mp4 サイズ・fps・音声Hz・chが相違 AACという方式だけは一致 別用途の採否や修正は別判断

表が画面に収まらない場合は横にスクロールしてください。値は架空のテスト動画をローカルで生成・読取りした結果です。

同じ列に同じ種類の値を並べることも重要です。Aでは全体の長さ、Bでは映像の長さ、Cでは目視した秒数を入れると、見た目は比較表でも基準がそろいません。今回の長さは三本ともformat.duration、フレームレートはavg_frame_rateを使っています。どの項目を使ったかを表の注記に残して、読み手が元のJSONへ戻れるようにします。

表の目的は、違いを探してすべて直すことではありません。指定に関係する違い、指定がなく判断待ちの違い、内容確認が必要な項目を分けることです。実務で条件が変われば、同じ観測結果の評価も変わります。値の記録と判定の理由を分けておくと、条件変更のたびに元の調査結果まで書き換える必要がなくなります。

読み取れないファイルは空結果と分ける

追加の試験として、動画ではない短いテキストにmp4という拡張子を付けた教材を用意しました。ffprobeはこのファイルを正常なメディアとして読めず、エラーを返しました。これは故障した実素材を修復した試験ではなく、拡張子が同じでも読めない入力があることを確かめるための意図的な失敗例です。

エラーが返ったファイルについて、映像零本、音声零本、長さ零秒と確定した結果にしてはいけません。今回の失敗では、必要な情報を正常に取得できていません。読取りに失敗した状態と、正常に読み取った結果に音声がない状態を分けます。Bの音声なしと、動画でないファイルの失敗を同じ行の「音声なし」にまとめないでください。

エラー記録を残すときは、対象ファイルと返った内容を保存し、同じ失敗を条件を変えず何度も繰り返さないようにします。原因を推測して拡張子だけを変えたり、元のファイルへ上書きしたりする前に、正しいファイルを受け取っているかを確認します。本教材では失敗を記録するところまでで、実際の破損動画の復旧操作は行っていません。

デコードの確認とも区別する

追加のデコード試験を行う場合は、情報読取りのコマンドとは別の実施記録にします。記録をまとめるときも、どの処理が正常終了したかを一括で曖昧にしません。教材では三本それぞれについて情報を保存し、その後のデコード結果も残しました。なお、これによってすべての配信先、編集ソフト、端末での使用を試したことにはなりません。試験の目的が広がるときは、追加した条件と結果を別に残します。

今回の三本については、ffprobeの読取りとは別に、FFmpegでデコード処理を行い、終了状態とエラー出力を確認しました。三本ともこの処理は正常に終わっています。それでも、人が映像を通して見た、音声を聞いた、納品先の機器で再生できたという意味にはなりません。別の試験を追加した場合も、その試験が確認している範囲を明示します。

対象 試験 結果 区別すること
A・B・C 情報JSON取得 3本とも正常終了 内容や受領の合格ではない
A・B・C 別工程のデコード 3本とも終了0・エラー出力なし 人の目視・聞き取りではない
not-media.mp4 動画でない失敗教材 終了1・メディアとして取得失敗 映像0・音声0という正常結果ではない

表が画面に収まらない場合は横にスクロールしてください。値は架空のテスト動画をローカルで生成・読取りした結果です。

以下は実施したデコード試験の操作例です。出力映像は作らず、処理結果を確認します。これは人の視聴を代替するコマンドではありません。

ffmpeg -v error -i A.mp4 -f null -
ffmpeg -v error -i B.mp4 -f null -
ffmpeg -v error -i C.mp4 -f null -

情報が読めること、デコード処理が終わること、人が内容を確認すること、受取側で使えることは、それぞれ別です。実務でどこまで必要かは案件によりますが、一つを確認しただけで残りも済んだことにしないようにします。この記事はその区別を練習するために、技術的な情報と実施済みの試験、未実施の確認を並べて残しています。

エラーが見つからなかったという表現にも範囲を付けます。「動画に問題なし」ではなく、「今回のローカル読取りとデコード処理ではエラーを検出しなかった」とすれば、未確認の内容や環境を含めた保証になりません。必要な確認を狭く見せるためではなく、次に誰が何を確かめるべきかを正確に伝えるための書き方です。

保存した結果と渡す版を最後に照合する

情報読取とデコード済み、人の視聴と受取環境未確認を分ける図解

作業を説明する概念写真です。実際のffprobe画面や再生確認の証拠ではありません。

元動画と結果ファイルを対応させる

保存する結果は、A.mp4に対してA.mp4.jsonというように、対応が分かる名前へそろえます。見やすい比較表を別に作ったとしても、元のJSONを残しておけば、転記した数値や項目を確認できます。表だけを残して原本の結果を捨てると、読み間違いに気づいたときに、どの項目から値を取ったかを追いにくくなります。

調査後に動画が差し替わった場合は、同じ名前でも以前の結果がそのまま使えるとは限りません。確認したファイルを特定できる記録と、新しいファイルの対応を照合します。名前が一致しているから同じ中身だと決めつけず、必要に応じて読み直します。修正前の調査が正しかったとしても、その結果を修正後の証拠として流用しないことが大切です。

この記事の教材では、動画を生成した後の情報をJSONへ保存し、数値を別のプログラムで読み直して条件と照合しています。保存した結果と表の値が一致することを確かめるためです。これは実際の受取先へ送信したり、その相手が開けたことを確認したりする操作ではありません。ローカルで準備できたことと、受け渡しの完了は別に扱います。

報告文では残る確認を隠さない

確認表を他の担当へ渡す前に、未確認欄を一度見直します。空の欄を見た目のために確認済みへ変えたり、別の工程の結果を代わりに入れたりしないようにします。たとえば、デコードが正常だから聞き取りも正常とするのは今回の無音教材でも誤りです。実施していない内容がはっきり残っていれば、次の担当は最初から同じ数値を調べ直すのではなく、必要な確認へ進みやすくなります。

報告は「Aは指定した映像・音声の情報に一致。音声は教材上の無音。内容の目視・聞き取りと受取環境での再生は未実施」というように、確認範囲と残件を一緒に示します。BとCについては違った項目を列挙し、修正するか、別用途の版として残すかを判断できる形にします。単に合格、不合格とだけ書くより、次の作業につながります。

相手から修正依頼が来た場合も、修正したと返す前に、新しい出力を読み直します。設定画面を変更したことと、保存された動画へ反映されたことは同じではありません。修正後のファイルを対象として、変更した項目が期待どおりになっているか、他の必要な項目が失われていないかを照合します。今回は修正を実施した例ではなく、確認する考え方の説明です。

受け渡しの方法や送付先も、技術的な検品とは別に確認します。動画には公開前の情報や他人の素材が含まれることがあるため、便利そうな外部サイトへ勝手にアップロードしないようにします。本記事ではローカルファイルだけを入力し、URLの動画を取りに行く操作は行っていません。実素材を扱うときは、許可された保存先と処理方法を守ってください。

小さな試験で確認範囲を説明する

練習結果を保存するときには、三本の動画、対応する情報JSON、比較表、実施範囲のメモを一つのまとまりにします。実際の案件では、必要なものだけを許可された相手へ渡してください。作業用の失敗教材や中間記録を無差別に同梱すると、採用候補と混同されることがあります。今回の一式でもnot-media.mp4は失敗試験専用と明示し、納品する映像の見本として扱わないようにしています。

練習の仕上げでは、AとBが同じ映像条件なのに何が違うか、AとCは同じAACなのに何が違うか、音声ストリームがあっても何を保証できないかを説明してみます。答えを暗記するより、保存したJSONと比較表へ戻って説明できることを目指してください。確認範囲を根拠と一緒に示せると、別の動画を調べるときにも手順を組み立てやすくなります。

今回の教材は二秒の人工映像という小さな範囲です。長時間の実素材、複雑な字幕や複数音声、異なる機器での再生などは試験していません。同じコマンドが動いたから、それらの条件まで確かめたことにはなりません。必要になった範囲を追加で検証し、未実施の事項を残す姿勢を、ファイルの種類が変わっても維持します。

  • 確認済み:3本のストリーム情報、保存JSONと比較表の一致。
  • 確認済み:別工程のデコード処理の正常終了。
  • 未実施:人による内容の目視・聞き取り、受取環境の再生、実際の納品。

ffprobeで情報を読めるようになることは、動画の検品を助ける一歩です。しかし、数字が並んだだけで納品物が完成するわけではありません。対象の版を固定し、映像と音声を分け、指定との差を記録し、保存後の結果を読み直す。そのうえで未確認を次の確認へ渡すことまでを一式にして、根拠のある納品前チェックへつなげてください。

  1. 対象の版と比較条件を固定する。
  2. 全体と各ストリームの情報を保存する。
  3. 映像・音声の項目を分けて比較する。
  4. 未確認を明記して次の判断へ渡す。

確認の途中で依頼条件が変わった場合は、その変更日と内容も結果に添えてください。同じ動画の情報を読んだままでも、比較条件が変われば結論は変わるためです。

教材の作成条件と公式資料

以下は3本の人工テスト映像を作ったコマンドです。実素材を加工する手順ではありません。既存のFFmpeg環境で実行し、音声には意図的な無音を使用しました。再実行する場合は既存ファイルを上書きせず、空の教材用フォルダーで扱ってください。

ffmpeg -hide_banner -loglevel error -f lavfi -i testsrc2=size=640x360:rate=25:duration=2 -f lavfi -i anullsrc=r=48000:cl=stereo -t 2 -c:a aac -c:v libx264 -pix_fmt yuv420p A.mp4
ffmpeg -hide_banner -loglevel error -f lavfi -i testsrc2=size=640x360:rate=25:duration=2 -an -c:v libx264 -pix_fmt yuv420p B.mp4
ffmpeg -hide_banner -loglevel error -f lavfi -i testsrc2=size=320x180:rate=30:duration=2 -f lavfi -i anullsrc=r=44100:cl=mono -t 2 -c:a aac -c:v libx264 -pix_fmt yuv420p C.mp4

公式資料は2026年10月16日(日本時間)に確認。実行環境はffprobe 7.1.5です。本文のコマンドと保存はローカルのシェルで試しており、Windowsの各シェルやすべての再生環境で同じ動作を検証したものではありません。