使用 Converter 将 .mp4 转换为 .mpeg4

Convert .mp4 to .mpeg4 using Converter

我有一个 MP4 文件,我想将其转换为 MPEG4 文件。为此,我找到了 PythonVideoConvert 包。在 PyPI 页面上,给出了以下代码:

from converter import Converter
conv = Converter()

info = conv.probe('test/test1.avi')

PATH = 'C:/Users/.../'

convert = conv.convert(PATH +'Demo.mp4', PATH + 'Demo.mpeg4', {
    'format': 'mpeg4',
    'audio': {
        'codec': 'aac',
        'samplerate': 11025,
        'channels': 2
    },
    'video': {
        'codec': 'hevc',
        'width': 720,
        'height': 400,
        'fps': 25
    }})

当我 运行 这段代码时,会创建一个 convert 对象。但是PATH目录下没有.mpeg4视频。

因此,我有两个问题:

  1. 上面的代码是否正确地将 .mp4 文件转换为 .mpeg4 文件
  2. 我需要什么才能运行将转换后的视频保存为 .mpeg4 文件?

根据 Selcuk 的评论,我 运行 以下代码:

for timecode in convert:
    pass

这给出了错误:

Traceback (most recent call last):

  File "<ipython-input-60-14c9225c3ac2>", line 1, in <module>
    for timecode in convert:

  File "C:\Users200016\Anaconda3\lib\site-packages\converter\__init__.py", line 229, in convert
    optlist = self.parse_options(options, twopass)

  File "C:\Users200016\Anaconda3\lib\site-packages\converter\__init__.py", line 60, in parse_options
    raise ConverterError(f'Requested unknown format: {str(f)}')

ConverterError: Requested unknown format: mpeg4

所以,我建议的格式似乎不正确。如何将视频转换为 .mpeg4?

'Requested unknown format: mpeg4'

*.mpeg4 不是有效容器。 mpeg4 是编解码器,*.something (avi, mp4, mov, mkv, ...) 是容器。

基本上:codec.CONTAINER或your_mpeg4_video.mkv等

视频编解码器(如 mpeg4)仅处理视频,但您不仅需要视觉,还需要音频、许多音轨(eng、de、nl、2.0、5.1、7.1 ...)、字幕等这些东西都在容器里。

安装 ffmpeg:https://ffmpeg.org/

试试这个基本脚本:

import subprocess

input_file = 'Demo.mp4'
output_file = 'Demo.mkv' # or .mp4, .mov, ...

ffmpeg_cli = "ffmpeg -i '{}' -vcodec libx265 '{}'".format(input_file, output_file)

subprocess.call(ffmpeg_cli, shell=True)

我不知道你在做什么(你想要什么,你的期望是什么)但是如果你正在寻找如何降低视频大小的方法,

看这里:https://github.com/MarcelSuleiman/convert_h264_to_h265

简单。

我认为 PythonVideoConverter 不应该用于 Windows。

我收到异常 AttributeError: module 'signal' has no attribute 'SIGVTALRM',因为 SIGVTALRM 在 Windows 中不是有效信号。

FFmpeg 和 FFprobe 命令行工具的默认路径,对 Windows 也没有意义。

我们可能还会使用Windows中的包,但建议设置ffmpeg_pathffprobe_path
示例:

conv = Converter(ffmpeg_path=r'c:\FFmpeg\bin\ffmpeg.exe', ffprobe_path=r'c:\FFmpeg\bin\ffprobe.exe')

我们还必须通过设置 timeout=None 参数来禁用超时功能。


mpeg4 不是有效的 FFmpeg 格式,但我们仍然可以将其用作文件扩展名。
(格式为FFmpeg术语,通常适用于容器格式)。

当使用non-standart文件扩展名时,我们必须设置format条目。
设置 'format': 'mp4' 创建 MP4 文件容器(可以使用 non-standart .mpeg4 文件扩展名创建)。


完整代码示例:

from converter import Converter

conv = Converter(ffmpeg_path=r'c:\FFmpeg\bin\ffmpeg.exe', ffprobe_path=r'c:\FFmpeg\bin\ffprobe.exe')

#info = conv.probe('test/test1.avi')

PATH = 'C:/Users/Rotem/'

convert = conv.convert(PATH + 'Demo.mp4', PATH + 'Demo.mpeg4', {
    'format': 'mp4', #'format': 'mpeg4',
    'audio': {
        'codec': 'aac',
        'samplerate': 11025,
        'channels': 2
    },
    'video': {
        'codec': 'hevc',
        'width': 720,
        'height': 400,
        'fps': 25
    }},
    timeout=None)

# https://pypi.org/project/PythonVideoConverter/
for timecode in convert:
    print(f'\rConverting ({timecode:.2f}) ...')

我们可以使用MediaInfo工具查看Demo.mpeg4的媒体信息:

General
Complete name                            : C:\Users\Rotem\Demo.mpeg4
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom (isom/iso2/mp41)
File size                                : 207 KiB
Duration                                 : 10 s 148 ms
Overall bit rate mode                    : Variable
Overall bit rate                         : 167 kb/s
Writing application                      : Lavf58.45.100
FileExtension_Invalid                    : braw mov mp4 m4v m4a m4b m4p m4r 3ga 3gpa 3gpp 3gp 3gpp2 3g2 k3g jpm jpx mqv ismv isma ismt f4a f4b f4v

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main@L3@Main
Codec ID                                 : hev1
Codec ID/Info                            : High Efficiency Video Coding
Duration                                 : 10 s 0 ms
Bit rate                                 : 82.5 kb/s
Width                                    : 720 pixels
Height                                   : 400 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 25.000 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.011
Stream size                              : 101 KiB (49%)
Writing library                          : x265 3.4+28-419182243:[Windows][GCC 9.3.0][64 bit] 8bit+10bit+12bit
Encoding settings                        : ...
Color range                              : Limited
Codec configuration box                  : hvcC

Audio
ID                                       : 2
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Codec ID                                 : mp4a-40-2
Duration                                 : 10 s 148 ms
Duration_LastFrame                       : -70 ms
Bit rate mode                            : Variable
Bit rate                                 : 79.1 kb/s
Maximum bit rate                         : 128 kb/s
Channel(s)                               : 2 channels
Channel layout                           : L R
Sampling rate                            : 11.025 kHz
Frame rate                               : 10.767 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 98.0 KiB (47%)
Title                                    : IsoMedia File Produced by Google, 5-11-2011
Language                                 : English
Default                                  : Yes
Alternate group                          : 1

在 MediaInfo 输出中,MP4 文件容器应用“MPEG-4”格式...

注:
HEVC 视频格式应用 H.265 视频编解码器 - 在大多数情况下,编解码器被认为比容器更相关。