Python FFmpeg:单个静态图像加上音频输出大量文件

时间:2019-12-15 00:09:25

标签: python ffmpeg

我正在使用this Python library以编程方式使用单个静态图像(.PNG-3.05 MB-1920 x 1080)和音轨(.WAV-pcm_s24le(24位)-48000 Hz- 34.6 MB)作为输入。

我正在使用this technique来加快视频生成过程。

但是,output_video_final的最终文件大小为2.33 GB。考虑到我的输入文件大小(.PNG-3.05 MB / .WAV-34.6 MB),为什么最终的.MOV输出如此之大?

这是我的代码:

    '''
    Generate .MOV using static image as input
    '''
    image = ffmpeg.input(input_image, loop='1', t='00:00:1', framerate='24000/1001', probesize='42M')

    output = ffmpeg.output(image, output_video,
    f='mov',
    vcodec='prores_ks',
    vprofile='3',
    pix_fmt='yuv422p10le',
    g='120',
    video_track_timescale='24000',
    movflags='use_metadata_tags',
    timecode='00:00:00:00',
    color_primaries='bt709',
    color_trc='bt709',
    colorspace='bt709',
    qcomp='1',
    preset='veryfast',
    bsf='prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709',   
    vf='scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709')

    output.run()

    '''
    Generate .MOV using static image .MOV in previous output
    and combine with audio input
    '''
    audio = ffmpeg.input(input_audio, filter_complex='channelsplit')
    video = ffmpeg.input(output_video, t='00:02:06', stream_loop='126')

    output = ffmpeg.output(video, audio, output_video_final,
    vcodec='copy',
    acodec='pcm_s24le',
    audio_bitrate=bitrate)

    output.run()

1 个答案:

答案 0 :(得分:1)

您的原始输入是一幅图像,但是根据t='00:02:06',您的输出是2m 6s长的视频流,其速度为23.976 fps。因此,使用配置文件HQ上的ProRes编码器,大约可以压缩3020个全高清帧。 ProRes是一种夹层编解码器,适用于后期制作工作流,其中优先级是保持质量,而不是节约文件大小。

如果音频输入已经是24位,那么即使考虑到声道分割,它在MOV中的尺寸也大致相同。