Giter Site home page Giter Site logo

easy-media-utils's Introduction

image-utils

When I am dealing pics,mp3,mp4. I always want a media utils to help me work, that's why this project start

mp4处理

  • 转png/jpg等
  • 转mp3
  • 转gif
  • 转竖屏
  • 其他格式视频转mp4

mp3处理

  • 转文字
  • 转srt
  • mp3裁剪
  • mp3其他格式,eg:flac,WAV,AAC,Ogg,等互相转换

图片png/jpg处理

  • 添加文字
  • 图片文字识别
  • 图片按比例放缩/图片旋转
  • 图片转灰白
  • 图片按比例剪切
  • 图片格式相互转换

install

pip install easy-media-utils
源码安装(点击展开) # pip freeze > requirements.txt

git clone https://github.com/aceliuchanghong/easy-media-utils.git

conda create -n dealMedia python=3.11

conda activate dealMedia

pip install -r requirements.txt

ffmpeg

前往官网,下载对应版本的文件,解压放在本地文件并且配置环境变量,确保可以访问到

ffmpeg -version

项目结构

项目结构生成(点击展开) from tree_utils.struct_tree_out import print_tree

path = r'D:\aprojectPython\pythonProject\easy-media-utils'

print_tree(path)

easy-media-utils/
|
├── LICENSE
├── README.md
├── requirements.txt
├── setup.py
├── base_model/
│   ├── MediaHandler.py
│   └── __init__.py
├── image_utils/
│   ├── __init__.py
│   ├── gpt_prompt.md
│   ├── converters/
│   │   ├── __init__.py
│   │   ├── format_converter.py
│   │   ├── image_to_text.py
│   │   └── text_add_to_image.py
│   ├── core/
│   │   ├── __init__.py
│   │   ├── exceptions.py
│   │   └── image_handler.py
│   ├── editors/
│   │   ├── __init__.py
│   │   ├── cropper.py
│   │   └── resizer.py
│   ├── tests/
│   │   ├── __init__.py
│   │   ├── test_converters.py
│   │   ├── test_editors.py
│   │   └── test_utils.py
│   └── utils/
│       ├── __init__.py
│       └── image_utils.py
├── mp3_utils/
│   ├── __init__.py
│   ├── gpt_prompt.md
│   ├── converters/
│   │   ├── __init__.py
│   │   ├── audio_format_converter.py
│   │   └── mp3_to_text.py
│   ├── core/
│   │   ├── __init__.py
│   │   ├── exceptions.py
│   │   └── mp3_handler.py
│   ├── editors/
│   │   ├── __init__.py
│   │   ├── effects.py
│   │   └── trimmer.py
│   ├── tests/
│   │   ├── __init__.py
│   │   ├── test_converters.py
│   │   └── test_editors.py
│   └── utils/
│       ├── __init__.py
│       └── mp3_utils.py
├── mp4_utils/
│   ├── __init__.py
│   ├── gpt_prompt.md
│   ├── converters/
│   │   ├── __init__.py
│   │   ├── mp4_to_gif.py
│   │   ├── mp4_to_mp3.py
│   │   ├── mp4_to_pngs.py
│   │   └── tv_to_mp4.py
│   ├── core/
│   │   ├── __init__.py
│   │   ├── exceptions.py
│   │   └── mp4_handler.py
│   ├── editors/
│   │   ├── __init__.py
│   │   ├── orientation.py
│   │   └── resizer.py
│   ├── tests/
│   │   ├── __init__.py
│   │   ├── test_converters.py
│   │   └── test_editors.py
│   └── utils/
│       ├── __init__.py
│       ├── file_utils.py
│       └── mp4_utils.py
├── testfiles/
└── tree_utils/
    ├── __init__.py
    └── struct_tree_out.py

e.g.

from mp4_utils.converters.mp4_to_gif import MP4ToGIFConverter
from mp4_utils.converters.mp4_to_mp3 import MP4ToMP3Converter
from mp4_utils.converters.mp4_to_pngs import MP4ToPNGsConverter
from mp4_utils.converters.tv_to_mp4 import TVToMP4Converter
from mp4_utils.core.mp4_handler import MP4Handler

def main(converter_type, file_path='../../testfiles/onboard_cover.mp4') -> MP4Handler:
    """
    Convert MP4 each frame.
    :param converter_type:
    :param file_path:
    """
    Converter = {
        "gif": MP4ToGIFConverter,
        "mp3": MP4ToMP3Converter,
        "img": MP4ToPNGsConverter,
        "other": TVToMP4Converter,
    }
    # converter = Converter[converter_type](file_path)
    converter = Converter.get(converter_type)(file_path)
    return converter

if __name__ == "__main__":
    file_path = '../../testfiles/out/onboard_cover.mp4'
    gif_out_path = '../../testfiles/out/output.gif'
    mp3_out_path = '../../testfiles/out/output.mp3'
    pngs_out_path = '../../testfiles/out/pngs_output'
    mp4_out_path = '../../testfiles/out/Sample.mp4'

    conv_file = '../../testfiles/out/Sample.mkv'

    converter_type = "img"
    ans_path = pngs_out_path
    converter = main(converter_type, file_path)
    converter.process(ans_path)
def main(converter_type, file_path='../../testfiles/out/output.mp3') -> MP3Handler:
    """
    Convert MP3 each frame.
    :param converter_type:
    :param file_path:
    """
    Converter = {
        "format": AudioFormatConverter,
    }
    converter = Converter.get(converter_type)(file_path)
    return converter
if __name__ == "__main__":
    mp3_path = '../../testfiles/out/output.mp3'
    wav_path = '../../testfiles/out/output.wav'
    flac_path = '../../testfiles/out/output.flac'
    out_path = '../../testfiles/out/'

    converter_type = "format"
    ans_path = out_path

    converter = main(converter_type, wav_path)
    converter.process(out_path, 'flac')
from image_utils.converters.format_converter import FormatConverter

test_image_path = "../../testfiles/out/pngs_output/frame_0001.png"
output_path = "../../testfiles/out/imgs_output"
txt = "你好"

if __name__ == '__main__':
    converter = FormatConverter(test_image_path)
    converter.process(output_path, "png")

easy-media-utils's People

Contributors

aceliuchanghong avatar

Stargazers

HU ZHITAO avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.