single.php

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

先回、途中で諦めかけていた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]が表示された場合の続きを備忘録的に投稿しておきます。

Could not find codec parameters for stream 0 (Video: png, none)

[FFmpeg]で「EXTM3U」形式のファイルを利用して動画ファイルを作成する場合に次のような[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"

詳しい内容は別記事をご覧ください。

事前にダウンロード

「EXTM3U」形式の内容を読み取って、扱いやすいように先にダウンロードしてみることにしました。

とりあえず、Pythonでコードを作って「EXTM3U」内のURLから全部のファイルをダウンロードしてみました。

import requests
filepath='H:\\WebApplication\\Python\\download\\'
srcf = open('H:\\Users\\t_nak\\Downloads\\*************.m3u8', 'r')
distf = open('H:\\Users\\t_nak\\Downloads\\*************-1.m3u8', 'w')
datalist = srcf.readlines()
for data in datalist:
  if data.startswith('#') == False:
    url = data.replace('\n', '')
    last_name = url[url.rfind('/') + 1:]
    urlData = requests.get(url).content
    with open(filepath + last_name + '.mp4' ,mode='wb') as f:
        f.write(urlData)
    distf.write(filepath + last_name + '.mp4\n')
  else:
    distf.write(data) 

srcf.close()
distf.close()

後で使えるように、新しく「EXTM3U」形式のファイルを作成してURLの部分をダウンロードしたパスに置換するようにしています。

出来上がったファイルを使って[FFmpeg]で動画を作成してみましたが、エラーは解決せず。

/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"  

PNG形式のビデオらしい

ますます原因が分からなくなった結果ですが、ダウンロードしたファイルをバイナリエディターで確認して1つ分かったことがあります。

先回までは、動画形式のファイルの拡張子を[.png]に偽装したと考察していましたが、ファイルヘッダーを見る限り、本当のPNG形式でした。

アニメーションGIFのようにPNGファイルを紙芝居のように連結したAPNG(Animated Portable Network Graphics)は知っていましたが、GIFと同様に音声は保存できないはずです。

ダウンロードしたファイルをメディアプレイヤーで再生すると音声まで保存されています。

何なんでしょう、このファイル…

今回も最後まで解決できませんでしたが、ダウンロードされるファイルはPNG形式の動画ファイルなので、デコーダーが見つからないというエラーも合点がいきます。

まとめ

今回は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]が表示された場合の理由について、続きを書きました。

m3u8形式のファイルのURLで読み込まれるファイルをダウンロードして調べてみると、PNG形式の動画ファイルでした。

拡張子だけをPNGに偽装されていると考察していましたが、実際には動画として保存されているPNG形式という結果になりました。

今回も解決には至りませんでしたが、何か進展があったら続きを投稿していきます。

EXTM3U形式から[FFmpeg]で変換する場合にエラーが発生する人の参考になれば幸いです。

スポンサーリンク

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

コメントを残す

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