Skip to main content
Glama
misbahsy

Video & Audio Editing MCP Server

by misbahsy

set_video_audio_track_channels

Modify the number of audio channels in a video track (e.g., mono to stereo) while preserving the video stream, ensuring compatibility or adjusting audio layout for specific playback needs.

Instructions

Sets the number of audio channels of a video's audio track, attempting to copy the video stream. Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new audio channel layout. audio_channels: Number of audio channels (1 for mono, 2 for stereo). Returns: A status message indicating success or failure.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
audio_channelsYes
input_video_pathYes
output_video_pathYes

Implementation Reference

  • Main handler function for the 'set_video_audio_track_channels' MCP tool. Uses FFmpeg to set audio channels ('ac') on video, preferring video stream copy ('vcodec':'copy'), falling back to full re-encode.
    @mcp.tool() def set_video_audio_track_channels(input_video_path: str, output_video_path: str, audio_channels: int) -> str: """Sets the number of audio channels of a video's audio track, attempting to copy the video stream. Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new audio channel layout. audio_channels: Number of audio channels (1 for mono, 2 for stereo). Returns: A status message indicating success or failure. """ primary_kwargs = {'ac': audio_channels, 'vcodec': 'copy'} # ac for audio channels fallback_kwargs = {'ac': audio_channels} # Re-encode video return _run_ffmpeg_with_fallback(input_video_path, output_video_path, primary_kwargs, fallback_kwargs)
  • Supporting helper function that executes the FFmpeg command with primary parameters first (e.g., stream copying), falling back to re-encoding if it fails. Used by the handler.
    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)}"
  • server.py:469-481 (registration)
    The @mcp.tool() decorator registers this function as an MCP tool named 'set_video_audio_track_channels'.
    @mcp.tool() def set_video_audio_track_channels(input_video_path: str, output_video_path: str, audio_channels: int) -> str: """Sets the number of audio channels of a video's audio track, attempting to copy the video stream. Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new audio channel layout. audio_channels: Number of audio channels (1 for mono, 2 for stereo). Returns: A status message indicating success or failure. """ primary_kwargs = {'ac': audio_channels, 'vcodec': 'copy'} # ac for audio channels fallback_kwargs = {'ac': audio_channels} # Re-encode video return _run_ffmpeg_with_fallback(input_video_path, output_video_path, primary_kwargs, fallback_kwargs)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/misbahsy/video-audio-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server