2021年10月16日土曜日

FFmpegとpythonでストリーム数を取得する

FFmpegとpythonでストリーム数を取得するには、以下のサンプルプログラムのようにprobeメソッドで返されるJSONデータからformat -> nb_streamsで取得します。streams下の各ストリームのcodec_typeでvideo/audioのストリーム数をカウントすることが出来ます。

サンプルプログラム

ffmepg-pythonがインストールされた仮想環境の作成方法は「FFmpegをPythonから操作できるffmpeg-pythonをインストールした仮想環境を作成し、動画形式変換する」を参考にしてください。

ffmpeg_probe_streams.py
import ffmpeg
import pprint

probe = ffmpeg.probe('./lake.mp4')
#pprint.pprint(probe)
print("ストリーム数:{}".format(probe['format']['nb_streams']))

video_streams=0
audio_streams=0
for stream in probe['streams']:
    if stream['codec_type'] == 'video':
        video_streams = video_streams+1
    if stream['codec_type'] == 'audio':
        audio_streams = audio_streams+1

print("videoストリーム数: {}".format(video_streams))
print("audioストリーム数: {}".format(audio_streams))

・実行方法
以下のコマンドを実行して、サンプルプログラムを実行します。
python ffmpeg_probe_streams.py

・実行結果例
以下の様な形式で出力されます。
ストリーム数:2
videoストリーム数: 1
audioストリーム数: 1

0 件のコメント:

コメントを投稿