ffprobe / app.py
x1001000's picture
return probe
2c59990
# prompt: make a gradio app using ffmpeg.probe to display media info
import gradio as gr
import ffmpeg
def get_media_info(file_path):
"""
Uses ffmpeg to probe the media file and extract information.
"""
try:
probe = ffmpeg.probe(file_path)
return probe
# video_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None)
# audio_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'audio'), None)
# if video_stream:
# width = int(video_stream['width'])
# height = int(video_stream['height'])
# frame_rate = video_stream['avg_frame_rate']
# frame_count = int(video_stream['nb_frames'])
# else:
# width, height, frame_rate, frame_count = None, None, None, None
# if audio_stream:
# sample_rate = int(audio_stream['sample_rate'])
# channels = int(audio_stream['channels'])
# else:
# sample_rate, channels = None, None
# return {
# 'width': width,
# 'height': height,
# 'frame_rate': frame_rate,
# 'frame_count': frame_count,
# 'sample_rate': sample_rate,
# 'channels': channels,
# }
except Exception as e:
return {'error': str(e)}
iface = gr.Interface(
fn=get_media_info,
inputs="file",
outputs="json",
title="Media Info Extractor",
description="Upload a media file (video or audio) to extract information using ffmpeg.",
)
iface.launch()