EXTM3U形式(拡張子 .m3u8)を利用して動画変換をしていた時に[Could not find codec parameters for stream 0 (Video: png, none): unspecified size Consider increasing the value for the ‘analyzeduration’ (0) and ‘probesize’ (5000000) options]が表示された場合の理由を備忘録的に投稿しておきます。
EXTM3U形式ファイル
標準の拡張子は(.m3u8)ですが、ダウンロードする環境によっては別の拡張子になっている場合もあります。
メモ帳などで開いて、先頭行に[#EXTM3U]が記載されていれば「EXTM3U」形式です。古いファイル形式の場合は無い場合もあります。
EXTM3U形式は、複数の動画や音声形式のファイルをリスト化したもので、楽曲のプレイリストのような役目を果たします。
[FFmpeg]を利用すると、「EXTM3U」形式に設定されているファイルをまとめて動画に変換できるます。
詳しい内容は別記事をご覧ください。
Could not find codec parameters for stream 0 (Video: png, none)
次のコマンドで[Could not find codec parameters for stream 0 (Video: png, none): unspecified size Consider increasing the value for the ‘analyzeduration’ (0) and ‘probesize’ (5000000) options]エラーが発生しました。
/bin/ffmpeg -protocol_whitelist file,http,https,tcp,tls -i "H:\Users\...\Downloads\test.m3u8" -c copy "H:\Users\...\Downloads\test.mp4"
要約すると、PNG形式のコーデックが見つからないという内容です。
解析に要する時間を延長
エラーの解説に記載されている、[analyzeduration]と[probesize]を調整して、取得したストリームの内容を解析する時間を作るのが一般的な解決方法でした。
次のようなコマンドに変更して、解析時間を調整できます。
/bin/ffmpeg -analyzeduration 10M -probesize 10M -protocol_whitelist file,http,https,tcp,tls -i "H:\Users\...\Downloads\test.m3u8" -c copy "H:\Users\...\Downloads\test.mp4"
値を最大限まで設定してみましたが、私が利用した「EXTM3U」形式のファイルでは解決できませんでした。
デコーダーの有無
解析時間で解決できない場合、デコーダーが無い可能性もあります。
[FFmpeg]の場合、次のコマンドで実装されているデコーダーを確認できます。
/bin/ffmpeg -decoders
私の使っている[FFmpeg]の場合は、[PNG(Portable Network Graphics) Image]
PNGファイルを解析するために必要な[LCL(LossLess Codec Library)ZLIB]が確認できたので、PNG形式で必要なコーデックを確認できました。
偽装化されたファイルは無理かも
ここまで調べて分かったのは、「EXTM3U」形式に記載されているURLからはPNG形式のファイルがダウンロード可能でした。
しかし、実際には画像形式のファイルでなく、拡張子を[.mp4]に変更すると動画として再生できました。
つまり、WebサーバーからはPNG形式を偽装して配信されているのでFFmpegとしてはPNG用のコーデックとして解析できないためにエラーが発生していると考えられます。
ダウンロードしたファイルに使用されていたコーデックまでは確認できましたが、[FFmpeg]に入力ファイルをデコードするコーデックを指定するコマンドを見つけられなかったので、おそらく偽装化されたファイルでは1つの動画にまとめる作業が無理っぽそうでした。
今回は最後まで解決できませんでしたが、別のアプローチを考えてみます。解決できたらまた投稿します。
まとめ
今回はEXTM3U形式(拡張子 .m3u8)を利用して動画変換をしていた時に[Could not find codec parameters for stream 0 (Video: png, none): unspecified size Consider increasing the value for the ‘analyzeduration’ (0) and ‘probesize’ (5000000) options]が表示された場合の理由について書きました。
[FFmpeg]を利用する場合、m3u8形式のファイルとして利用する動画ファイルがPNGなど拡張子を偽装されていると変換できない場合がありました。
EXTM3U形式から[FFmpeg]で変換する場合にエラーが発生する人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。