[PYTHON] Convertir mp4 en mp3 avec ffmpeg (version miniature intégrée)

Les fonctions suivantes ont été ajoutées à Convertir mp4 en mp3 avec ffmpeg.

Ffmpeg a été utilisé pour découper la vignette (illustration).

Eyed3 a été utilisé pour intégrer la vignette (illustration). eyed3 est un outil qui peut modifier les informations des balises mp3. Cette fois, je l'ai utilisé à partir du script python. Il existe également une CLI. python2.7 est requis car il ne prend pas en charge python3.

Environnement d'exploitation

Installation

# ffmpeg
brew install ffmpeg --with-tools

# eyed3
pip install eyed3==0.7.8

Script de conversion

ffmpeg_conv_mp3.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
# system requirement
    * python 2.7

# install
    $ brew install ffmpeg --with-tools
    $ pip install eyed3==0.7.8
"""

import argparse
import eyed3
from eyed3.id3.frames import ImageFrame
from os import getcwd, path, system, remove
import sys

FFMPEG_MP42MP3_CMD = (
    u'ffmpeg'
    u' -y'
    u' -loglevel warning'
    u' -i "{src_file}"'
    u' -acodec libmp3lame'
    u' -ab 256k'
    u' "{dest_file}"'
)
FFMPEG_THUMBNAIL_CMD = (
    u'ffmpeg'
    u' -y'
    u' -loglevel warning'
    u' -i "{src_file}"'
    u' -ss 5'
    u' -vframes 1'
    u' -f image2'
    u' "{dest_file}"'
)


def rename_filename_ext(src_file, rename_ext, dest_directory):
    name, ext = path.splitext(path.basename(src_file))
    return (name, path.join(dest_directory, name + rename_ext))


def main(src_files, dest_directory):
    for src_file in src_files:
        src_file = path.abspath(src_file).decode('utf-8')
        dest = path.abspath(dest_directory).decode('utf-8')

        title, dest_mp3_file = rename_filename_ext(src_file, u'.mp3', dest)
        title, dest_png_file = rename_filename_ext(src_file, u'.png', dest)

        # mp4 -> mp3 encode
        ffmpeg_cmd = FFMPEG_MP42MP3_CMD.format(
            src_file=src_file,
            dest_file=dest_mp3_file
        )
        print(u'{0} -> {1}'.format(src_file, dest_mp3_file))
        system(ffmpeg_cmd.encode(sys.stdin.encoding))

        #Découpez une image miniature de mp4
        ffmpeg_cmd = FFMPEG_THUMBNAIL_CMD.format(
            src_file=src_file,
            dest_file=dest_png_file
        )
        system(ffmpeg_cmd.encode(sys.stdin.encoding))

        #Incorporer une image miniature dans un fichier mp3
        f = eyed3.load(dest_mp3_file)
        if f.tag is None:
            f.initTag()
        f.tag.title = title
        with open(dest_png_file, 'rb') as dest_png:
            f.tag.images.set(
                ImageFrame.FRONT_COVER,
                dest_png.read(),
                'image/png'
            )
        f.tag.save(encoding='utf-8')

        if path.exists(dest_png_file):
            remove(dest_png_file)


def parse_args():
    parser = argparse.ArgumentParser(
        description=u'Convertir mp4 en mp3 avec ffmpeg(Version miniature intégrée)'
    )
    parser.add_argument(
        'source_files',
        metavar='source_file',
        nargs='+',
        help='source files'
    )
    parser.add_argument(
        '--dest',
        metavar='destination_directory',
        nargs='?',
        default=getcwd(),
        help='destination directory (default: current directory)'
    )
    return parser.parse_args()


if __name__ == '__main__':
    args = parse_args()
    main(args.source_files, args.dest)
chmod +x ffmpeg_conv_mp3.py

Comment utiliser

Encodez "* .mp4" sous le répertoire "./mp4/in/" en mp3 et sortez dans le répertoire "./mp4/out/".

ffmpeg_conv_mp3.py ./mp4/in/*.mp4 --dest ./mp4/out/

Recommended Posts

Convertir mp4 en mp3 avec ffmpeg (version miniature intégrée)
Convertir 202003 en 2020-03 avec les pandas
Convertir une vidéo en noir et blanc avec ffmpeg + python + opencv
Convertir .ipynb en .html (avec BatchFile)
Convertir WMA en MP3 sur Mac
Convertir la liste en DataFrame avec python
Conversion MP3 → WAV avec Python
Convertir des phrases en vecteurs avec gensim
Convertir un PDF en image avec ImageMagick
Pour le moment, je veux convertir n'importe quel fichier avec ffmpeg !!
Convertir un mémo à la fois avec Python 2to3
Convertir de PDF en CSV avec pdfplumber
Développons quelque chose de proche de celui intégré avec TDD ~ Version de détection d'entrée de clé ~
Convertir des chaînes de caractères en quantités de caractéristiques avec RoBERTa
Convertir des données Excel en JSON avec python
Convertir Hiragana en Romaji avec Python (bêta)
Convertissez des données FX 1 minute en données 5 minutes avec Python
Convertir des fichiers PDF en fichiers PNG avec GIMP
Convertir un tableau (struct) en json avec golang
Convertir des nombres chinois en nombres arabes avec Python
Exemple de conversion en ondelettes d'images en Python
Conversion DICOM en PNG avec ordre croissant et décroissant
Convertissez les données avec la forme (nombre de données, 1) en (nombre de données,) avec numpy.
Convertir un PDF en image (JPEG / PNG) avec Python
Convertissez des PDF en images en masse avec Python
Convertir un fichier svg en png / ico avec Python
Convertir les valeurs d'époque Windows à ce jour avec python
Convertissez facilement les notebooks Jupyter en blogs avec Fastpages
[Version améliorée] Script pour surveiller le CPU avec Python
Comment convertir (32,32,3) en tenseur à 4 dimensions (1,32,32,1) avec le type ndarray
Convertir une chaîne au format de liste caractère par caractère avec python
Convertir en HSV
Je veux convertir une image en WebP avec sucette
Comment convertir / restaurer une chaîne avec [] en python
Afficher des images intégrées de mp3 et flac avec mutagène
0 Convertir une date non remplie en type datetime avec une expression régulière
Convertir un fichier texte avec des valeurs hexadécimales en fichier binaire
Comment convertir des données détenues horizontalement en données détenues verticalement avec des pandas
Comment convertir un objet de classe en dictionnaire avec SQLAlchemy
Comment mesurer le temps de lecture d'un fichier mp3 avec python
Convertissez l'image au format .zip en PDF avec Python
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Mémorandum PyInstaller Convertit Python [.py] en [.exe] avec 2 lignes
Convertissez les variables numériques en variables catégorielles avec les pandas en définissant un seuil