MP4
MOV

Video Converter Application

An Interactive Technical Report

Application Purpose

The MP4 to MOV Video Converter is a powerful and user-friendly desktop application built with Electron.js for converting MP4 video files into the professional MOV format using the Apple ProRes codec. It is specifically designed for video editors and content creators who need high-quality video conversion on Linux systems. This tool aims to provide a simple and efficient way to prepare video assets for professional editing workflows in software like DaVinci Resolve.

Application Screenshot

Screenshot of the MP4 to MOV Video Converter Application

A visual overview of the application's user interface, highlighting its clean design and interactive elements.

Key Features

  • 🔄
    High-Quality Conversion: Convert MP4 videos to MOV format with ProRes codec and uncompressed audio.
  • ⚙️
    Multiple Quality Presets: Choose from different ProRes quality settings to balance file size and visual fidelity.
  • 📦
    Batch Processing: Convert multiple files or entire folders at once for efficient workflows.
  • 🖱️
    Intuitive Interface: Simple drag-and-drop functionality makes conversion quick and easy.
  • 🖥️
    Cross-Platform: While primarily designed for Linux, it leverages Electron for potential compatibility across other desktop platforms.
  • Native Performance: Built with Electron to deliver optimal performance and a native feel.
  • 💡
    Intelligent Video Description Generator (Gemini AI): Post-conversion, generate creative descriptions and relevant hashtags for your videos.
  • 📚
    Smart Conversion Tips (Gemini AI): Get quick, helpful tips on ProRes best practices and DaVinci Resolve workflows.

Quality Presets

The application offers three quality presets for ProRes conversion:

  • High: Best quality (ProRes 4444). Ideal for scenarios where maximum fidelity and color depth are critical, resulting in larger file sizes.
  • Medium: Balanced quality and file size (ProRes 422 HQ). A great all-rounder for most professional editing tasks.
  • 💾
    Low: Smaller file size (ProRes Proxy). Suitable for offline editing or situations where storage space is a concern, while still offering better performance than compressed formats.

Project Architecture

Click on a file component below to see its role in the application.

Renderer Process

renderer.js
index.html
style.css

IPC Bridge

preload.js

Main Process (Node.js)

main.js
package.json

Select a file

Click on a file in the diagram above to learn more about its function.

Application Workflow

A step-by-step look at how the application processes a conversion request.

1

Startup

When launched, the main process (`main.js`) creates the Electron window and loads `index.html`, which forms the user interface.

2

User Interaction

The user interacts with `index.html`, either by clicking buttons or dragging files onto the drop zone. These actions are handled by `renderer.js`.

3

Sending Conversion Request

`renderer.js` calls a function on the `electronAPI` exposed by `preload.js`. This script acts as a secure bridge, forwarding the request to the main process via an IPC (Inter-Process Communication) channel.

4

Processing in Main Process

`main.js` receives the request. It uses Node.js's `child_process` module to execute FFmpeg with the correct arguments for the input and output files, including the selected quality preset.

5

Status Update & AI Features

Upon completion or error, the main process sends the result back to the renderer. If successful, the user can trigger AI features like generating video descriptions or getting conversion tips.

6

Secure Path Management

To maintain security, the renderer process never directly accesses the file system. All path operations are requested via IPC and handled securely by the main process using Node.js modules.

Installation & Usage

Prerequisites

  • Node.js (v14 or higher)
  • npm (v6 or higher) or Yarn
  • FFmpeg (will be installed automatically as a dependency)

Installing the Application

From Pre-built Package (Recommended)

  • Download the latest `.deb` package from the releases page (GitHub).
  • Install using your package manager:
sudo dpkg -i mp4-to-mov-converter_*.deb
sudo apt-get install -f # Install any missing dependencies

From Source

  • Clone the repository:
git clone https://github.com/Ahm3d0x/mp4-to-mov-for-linex-edit.git
cd mp4-to-mov-for-linex-edit
  • Install dependencies:
npm install
  • Start the application:
npm start

Building from Source

To build the application for your platform:

# Install build dependencies
npm install
# Build the application
npm run dist

The built package will be in the 'dist' directory.

Usage

  • Select Files/Folders:
    • Click "Select a Video File" to choose individual MP4 files.
    • Click "Select a Folder" to convert all MP4 files in a directory.
    • Or simply drag and drop files/folders into the application window.
  • Choose Output Quality:
    • Select your preferred quality preset (High, Medium, or Low).
    • High: Best quality (ProRes 4444)
    • Medium: Balanced quality and size (ProRes 422 HQ)
    • Low: Smaller file size (ProRes Proxy)
  • Select Output Directory:
    • Click "Select Output Folder" to choose where to save the converted files.
    • If no output folder is selected, files will be saved in the same directory as the source.
  • Start Conversion:
    • The conversion begins automatically once files/folders are selected or dropped.
    • Progress and status messages will be shown in the application's status area.

Output Details

  • Converted files will be saved with `_high`, `_medium`, or `_low` suffix based on the selected quality (e.g., `my_video_high.mov`).
  • Original MP4 files remain unchanged.
  • Conversion logs are displayed in the application console (for debugging/detailed info).

Dependencies

  • Electron: The framework for building cross-platform desktop apps with web technologies.
  • ffmpeg-static: Provides a static FFmpeg binary, bundled with the application, ensuring it works out-of-the-box.
  • Node.js native modules: `fs` (File System), `path` (Path manipulation), `child_process` (Spawning processes like FFmpeg) for backend operations.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request to the GitHub repository.

Contribution Steps

  • Fork the repository
  • Create your feature branch (git checkout -b feature/AmazingFeature)
  • Commit your changes (git commit -m 'Add some AmazingFeature')
  • Push to the branch (git push origin feature/AmazingFeature)
  • Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

About the Developer

👋Name: Ahmed Mohamed Attia Mohamed

🎓Education: Student at Faculty of Engineering, Zagazig University

📚Major: Communications and Electronics Engineering

📍Location: From Kafr Saqr, El-Sharqia, Egypt

📧Email: ahm3d.m.attia@gmail.com

🔗GitHub: Ahm3d0x/mp4-to-mov-for-linex-edit

🔗LinkedIn: linkedin.com/in/ahmed-m-attia-757aa6292

Acknowledgments

  • Thanks to the Electron.js team for the amazing framework.
  • Special thanks to the FFmpeg project for powerful video processing.
  • Inspired by the need for better video conversion tools on Linux.