我寫了一個小小的Python程序來抓取一堆PNG,並使用FFmpeg命令行將它們渲染爲影片。將PNG讀入[X * Y * 3] numpy數組(忽略alpha通道),通過插值添加新幀,並將數據作爲管道饋送到FFmpeg並保存爲mp4。來自使用FFmpeg和Python的PNG的電影 - rgb24 vs yuv420p
這些文件在Windows上的VLC中可以正常播放,但不能在Mac上的iMovie中使用。我認爲這可能與大多數希望H264視頻處於YUV420P色彩空間的程序有關,而我的電影則不是。我已經嘗試將ffmpeg命令-pix_fmt
從rgb24
更改爲yuv420p
,但沒有結束。
下面附帶的相關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]
乾杯, Eilam
這不是一個python問題和更多'ffmpeg'問題。儘管如此,不使用YUV色彩空間的原因是什麼,這是H.264調整後的結果 –
這就是我最初嘗試的,但根據Mulvya的回答,我做錯了。 –