繁体   English   中英

使用FFmpeg和Python的PNG电影-rgb24与yuv420p

[英]Movie from PNGs using FFmpeg and Python - rgb24 vs yuv420p

我编写了一个Python小程序来捕获一堆PNG,并使用FFmpeg命令行将其渲染为电影。 将PNG读入[X * Y * 3] numpy数组(忽略alpha通道),通过插值添加新帧,并将数据作为管道输入FFmpeg并保存为mp4。

这些文件在Windows的VLC中可以正常播放,但在Mac的iMovie中不起作用。 我认为这可能与大多数期望H264视频在YUV420P色彩空间中的程序有关,而我的电影则没有。 我尝试将ffmpeg命令-pix_fmtrgb24yuv420p ,但没有成功。

随附的相关Python代码。

def init_vars(args):
    global log_file, file_names, command, num_int_frames, num_files, silent

    file_names = glob('./*.png')
    num_files = len(file_names)

    if args.log:
        log_file = 'bmmp.log'
    else:
        log_file = os.devnull

    silent = args.silent

    frames_per_second = args.fps
    wanted_movie_length = args.length
    movie_file_name = args.name + '.mp4'

    num_int_frames = round((frames_per_second * wanted_movie_length - 1) / (num_files - 1) - 1)

    if sys.platform == 'win32':
        ffmpeg_bin = 'ffmpeg.exe'
    else:
        ffmpeg_bin = 'ffmpeg'

    command = [ffmpeg_bin,
               '-y', # (optional) overwrite output file if it exists
               '-f', 'rawvideo',
               '-vcodec','rawvideo',
               '-s', '1280x720', # size of one frame
               '-pix_fmt', 'rgb24',
               '-r', str(frames_per_second), # frames per second
               '-i', '-', # The input comes from a pipe
               '-an', # Tells FFMPEG not to expect any audio
               movie_file_name]

干杯,伊兰

假设Python中的参数序列代表构造的命令的序列'-pix_fmt', 'yuv420p',则应在'-i', '-', # The input comes from a pipe之后插入'-pix_fmt', 'yuv420p', '-i', '-', # The input comes from a pipe 不要删除或更改早期的pix_fmt因为它指定了输入属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM