Spaces:
Paused
Paused
| import gradio as gr | |
| import subprocess | |
| import os | |
| import tempfile | |
| from pathlib import Path | |
| def convert_ts_to_mp4(file_path): | |
| """ | |
| Converts a .ts video file to .mp4 using ffmpeg. | |
| Args: | |
| file_path (str): The path to the .ts file. | |
| Returns: | |
| str: The path to the converted .mp4 file, or None on error. | |
| """ | |
| try: | |
| # 1. Check if the file exists | |
| if not os.path.exists(file_path): | |
| return "Error: File not found." | |
| # 2. Check if the file has the correct extension | |
| if not file_path.lower().endswith(".ts"): | |
| return "Error: Invalid file type. Please upload a .ts file." | |
| # 3. Convert the .ts file to .mp4 using ffmpeg in a temporary location | |
| with tempfile.NamedTemporaryFile(suffix=".mp4", delete=False) as mp4_file: | |
| try: | |
| subprocess.run( | |
| [ | |
| "ffmpeg", | |
| "-i", | |
| file_path, | |
| "-c:v", | |
| "libx264", # Use libx264 for H.264 encoding (common) | |
| "-c:a", | |
| "aac", # Use AAC for audio encoding (common) | |
| "-y", # Overwrite output file if it exists | |
| mp4_file.name, | |
| ], | |
| check=True, # Raise an exception on non-zero exit code | |
| stdout=subprocess.PIPE, | |
| stderr=subprocess.PIPE, | |
| ) | |
| except subprocess.CalledProcessError as e: | |
| # ffmpeg failed. Return the error message. | |
| error_message = f"FFmpeg conversion failed: {e.stderr.decode('utf-8')}" | |
| print(error_message) # Print to console for debugging in Spaces | |
| return error_message | |
| # 4. Return the path to the .mp4 file | |
| return mp4_file.name | |
| except Exception as e: | |
| return f"An error occurred: {e}" | |
| def gradio_interface(): | |
| """ | |
| Defines the Gradio interface for the application. | |
| """ | |
| inputs = [ | |
| gr.File( | |
| label="Upload .TS File", | |
| file_types=[".ts"], # Restrict to .ts files | |
| ), | |
| ] | |
| outputs = gr.File(label="Converted MP4 File") | |
| title = "TS to MP4 Converter" | |
| description = "Convert .ts video files to .mp4 format. Upload a .ts file, and the converted .mp4 file will be available for download." | |
| article = """ | |
| Example Usage: | |
| 1. Click the 'Upload .TS File' button to upload a .ts video file from your local machine. | |
| 2. Click the 'Submit' button. | |
| 3. The converted .mp4 file will be processed, and a download link will be provided. | |
| """ | |
| return gr.Interface( | |
| fn=convert_ts_to_mp4, | |
| inputs=inputs, | |
| outputs=outputs, | |
| title=title, | |
| description=description, | |
| article=article, | |
| ) | |
| if __name__ == "__main__": | |
| gradio_interface().launch() | |