# Mp4 To Mp3 (`talkbot/mp4-to-mp3`) Actor

Video To Sound Convertor

- **URL**: https://apify.com/talkbot/mp4-to-mp3.md
- **Developed by:** [Ali Hashemi](https://apify.com/talkbot) (community)
- **Categories:** AI, Videos, Social media
- **Stats:** 6 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## MP4 to MP3 Converter Actor

````
[![Apify](https://img.shields.io/badge/apify-actor-green.svg)](https://apify.com)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

This Apify actor converts MP4 files to high-quality MP3 format. It extracts audio tracks from video files and processes them efficiently.

## Features

- **Batch Conversion**: Convert multiple MP4 files simultaneously
- **Customizable Quality**: Support for various output bitrates (64kbps, 128kbps, 320kbps)
- **Concurrent Processing**: Handles multiple files in parallel for faster execution
- **Apify Dataset Storage**: Converted MP3 files and processing logs saved directly to Apify dataset
- **Error Handling**: Detailed reports for successes, failures, and errors per file
- **Optional Cleanup**: Delete original MP4 files after successful conversion
- **Secure Downloads**: Supports HTTPS URLs and handles authentication if provided

## How to Use

### Input Schema

| Property | Type | Description | Default | Required |
|----------|------|-------------|---------|----------|
| `inputUrls` | array | List of MP4 file URLs to convert | `[]` | Yes |
| `outputQuality` | enum | Output MP3 quality: `low` (64kbps), `medium` (128kbps), `high` (320kbps) | `medium` | No |
| `deleteOriginal` | boolean | Delete original MP4 files after conversion | `false` | No |
| `maxConcurrency` | integer | Maximum concurrent downloads/conversions (1-10) | `3` | No |

### Outputs

- **Dataset**: Contains:
  - Converted MP3 files (as binary blobs)
  - JSON report with details: `{ "url": "...", "mp3Url": "...", "status": "success/error", "duration": "..." }`
- **Logs**: Real-time console logs for monitoring progress

## Example Input

```json
{
  "inputUrls": [
    "https://example.com/video1.mp4",
    "https://example.com/video2.mp4",
    "https://example.com/video3.mp4"
  ],
  "outputQuality": "high",
  "deleteOriginal": false,
  "maxConcurrency": 5
}

## Example Output Report (JSON)

```json
[
  {
    "originalUrl": "https://example.com/video1.mp4",
    "mp3File": "video1.mp3",
    "bitrate": "320kbps",
    "duration": "120s",
    "status": "success",
    "size": "4500KB"
  },
  {
    "originalUrl": "https://example.com/video2.mp4",
    "status": "error",
    "error": "Invalid MP4 format"
  }
]

## Running Locally

1. Clone/Fork this actor repository
2. Install dependencies: `pip install -r requirements.txt`
3. Run: `apify run`
4. Or use Apify CLI: `apify call [actor-id] --input input.json`

## Deployment

- Deploy to Apify platform via [Apify Console](https://console.apify.com)
- Build minutes: ~1 min per 10 files
- Memory: 1GB recommended

## Limitations

- Only supports MP4 input (H.264/AAC typically)
- Max file size: 100MB per file
- No video editing/subtitle extraction

## Troubleshooting

- **Download fails**: Check URL accessibility and CORS
- **Conversion errors**: Ensure audio track exists in MP4
- **High memory**: Reduce `maxConcurrency`

## Development

Fork this repo and contribute! See [CONTRIBUTING.md](CONTRIBUTING.md).

Uses:
- `ffmpeg` for conversion
- `requests` for downloads
- Apify SDK for storage

## License

MIT License - see [LICENSE](LICENSE) file.

---
*Built with ❤️ for Apify platform*
````

# Actor input Schema

## `inputUrls` (type: `array`):

List of MP4 file URLs to convert

## `outputQuality` (type: `string`):

Quality of the output MP3 file

## Actor input object example

```json
{
  "inputUrls": [],
  "outputQuality": "high"
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "inputUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("talkbot/mp4-to-mp3").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "inputUrls": [] }

# Run the Actor and wait for it to finish
run = client.actor("talkbot/mp4-to-mp3").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "inputUrls": []
}' |
apify call talkbot/mp4-to-mp3 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=talkbot/mp4-to-mp3",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Fwb8oVrnWAX4zMMjK/builds/a4jEnEwhb7osb2eOb/openapi.json
