当前位置: 首页 > 知识库问答 >
问题:

使用FFmpeg和Python的PNGs电影-rgb24 vs yuv420p

终翰学
2023-03-14

我编写了一个小Python程序来获取一堆PNG,并使用FFmpeg命令行将它们呈现成一部电影。PNG被读入[x*y*3]个数组(忽略alpha通道),通过插值添加新帧,数据作为管道被送入FFmpeg并保存为MP4。

这些文件在Windows的VLC中运行良好,但在Mac的iMovie中却不起作用。我想这可能是因为大多数程序都希望H264视频在YUV420P色彩空间,而我的电影不是。我尝试将ffmpeg命令-pix_fmtrgb24更改为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

共有1个答案

龙永思
2023-03-14

假设Python中参数的顺序表示构造的命令的顺序,那么在'-i','-',#输入来自管道之后应该插入一个'-pix_fmt','yuv420p',。不要删除或更改前面的pix_fmt,因为它指定了输入属性。

 类似资料:
  • ffmpeg-PIX_FMT YUV420P-R 8-F Image2-pattern_type glob-i'*.00.png'电影.mp4

  • 我有大约10000个短视频,我正在尝试制作一些更长的视频。 我使用MoviePy创建了这些视频,但在尝试将它们重新连接在一起时,会不断出现内存错误。 在我的代码中,我有一个外部循环遍历字母表的每个字母并获取以该字母开头的文件。 从返回的视频拆条中,我得到视频最后3.5秒()的长度和拆条,然后将其添加到Python列表中。 我陷入困境的地方是,我想把这个剪辑过的视频列表拿出来,然后从中制作一个很长很

  • 我想使用FFmpeg在Avid DNXHD编解码器中创建output.mov,input_v作为填充(RGB)视频,alpha(A)由input_k的亮度值构建。 这可能吗?

  • 我把很久以前在一次演讲中拍的一组电影连在一起。现在我要为每一个问题/答案剪掉它们。 我是这样做的。 ffmpeg-ss 00:00:34.7-t 00:10:44.6-y-i输入_movie.mp4-vcodec拷贝-acodec拷贝输出_1.mp4 ffmpeg-ss 00:11:22.2-y-i输入_movie.mp4-vcodec拷贝-acodec拷贝输出_2.mp4 然而,对于第二部分,我

  • 问题内容: 我对Python相对较新(我使用MATLAB的次数更多)。我本质上希望能够制作和保存动画。因此,我去检查了它的工作方式,发现了这一点:http : //jakevdp.github.io/blog/2012/08/18/matplotlib- animation-tutorial/ 我直接将代码复制/粘贴到IPython Notebook中。 我了解必须安装ffmpeg,我认为我已经安

  • 问题内容: 在最新版本(v0.31.0)中,电子附带了静态链接的FFMpeg库(不是命令行工具,请参见#2588) 我知道很多用于ffmpeg的nodejs模块,但是它们看起来都像是命令行工具的api,那么理想情况下我该如何访问与电子捆绑在一起的ffmpeg库并编码流? 问题答案: 当前这是不可能的,因为没有针对Node.js的不错的库。意思是,只有这样抽象了CLI。但是,可以将其编译和链接为节点