简体   繁体   中英

Movie from PNGs using FFmpeg and Python - rgb24 vs yuv420p

I wrote a little Python program to grab a bunch of PNGs and render them into a movie using the FFmpeg command line. The PNGs are read into [X*Y*3] numpy arrays (ignoring the alpha channel), new frames are added via interpolation, and the data is fed into FFmpeg as a pipe and saved as an mp4.

The files play fine in VLC on Windows, but don't work in iMovie on a Mac. I think it might have to do with most programs expecting H264 videos to be in the YUV420P color space, which my movies aren't. I've tried changing the ffmpeg command -pix_fmt from rgb24 to yuv420p , but no go.

Relevant Python code attached below.

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]

Cheers, Eilam

Assuming the sequence of parameters in Python represents the sequence of the constructed command, a '-pix_fmt', 'yuv420p', should be inserted after '-i', '-', # The input comes from a pipe . Don't remove or change the earlier pix_fmt since that specifies the input properties.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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