# 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() |