set_video_bitrate
Adjust video bitrate for optimal file size and quality. Specify input and output paths along with the desired bitrate to process and save videos effectively.
Instructions
Sets the video bitrate of a video, attempting to copy the audio stream. Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new video bitrate. video_bitrate: Target video bitrate (e.g., '1M', '2500k'). Returns: A status message indicating success or failure.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| input_video_path | Yes | ||
| output_video_path | Yes | ||
| video_bitrate | Yes |
Implementation Reference
- server.py:399-411 (handler)The main handler function for the 'set_video_bitrate' MCP tool, decorated with @mcp.tool(). It sets the video bitrate using FFmpeg, attempting to copy the audio stream first and falling back to full re-encoding if needed.@mcp.tool() def set_video_bitrate(input_video_path: str, output_video_path: str, video_bitrate: str) -> str: """Sets the video bitrate of a video, attempting to copy the audio stream. Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new video bitrate. video_bitrate: Target video bitrate (e.g., '1M', '2500k'). Returns: A status message indicating success or failure. """ primary_kwargs = {'video_bitrate': video_bitrate, 'acodec': 'copy'} fallback_kwargs = {'video_bitrate': video_bitrate} # Re-encode audio return _run_ffmpeg_with_fallback(input_video_path, output_video_path, primary_kwargs, fallback_kwargs)
- server.py:332-349 (helper)Helper function _run_ffmpeg_with_fallback called by set_video_bitrate (and other tools) to execute FFmpeg with primary parameters (e.g., audio copy) and fallback to re-encoding on error.def _run_ffmpeg_with_fallback(input_path: str, output_path: str, primary_kwargs: dict, fallback_kwargs: dict) -> str: """Helper to run ffmpeg command with primary kwargs, falling back to other kwargs on ffmpeg.Error.""" try: ffmpeg.input(input_path).output(output_path, **primary_kwargs).run(capture_stdout=True, capture_stderr=True) return f"Operation successful (primary method) and saved to {output_path}" except ffmpeg.Error as e_primary: try: ffmpeg.input(input_path).output(output_path, **fallback_kwargs).run(capture_stdout=True, capture_stderr=True) return f"Operation successful (fallback method) and saved to {output_path}" except ffmpeg.Error as e_fallback: err_primary_msg = e_primary.stderr.decode('utf8') if e_primary.stderr else str(e_primary) err_fallback_msg = e_fallback.stderr.decode('utf8') if e_fallback.stderr else str(e_fallback) return f"Error. Primary method failed: {err_primary_msg}. Fallback method also failed: {err_fallback_msg}" except FileNotFoundError: return f"Error: Input file not found at {input_path}" except Exception as e: return f"An unexpected error occurred: {str(e)}"