single.php

ffmpegの変換時に[Could not find codec parameters for stream 0 (Video: png, none)]が表示される

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]で変換する場合にエラーが発生する人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です