ffmpeg:同时覆盖和连接文件

2024-09-27 21:34:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python程序,它正在生成一个要覆盖在MP4文件顶部的图像流。这很有效。我将图像数据从python传输到ffmpeg,并将其覆盖在视频上。我以与视频文件不同的帧速率生成图像,ffmpeg使所有工作正常

忽略python,因为它在这里可能不相关,我运行的ffmpeg命令行是:

(这不是bash引用的)

ffmpeg -y -i inputmpeg.mp4 -f rawvideo -framerate 10.0 -s 1920x1080 -pix_fmt rgba -i - -r 30 -filter_complex [0:v][1:v]overlay -vcodec libx264 -crf 18 -preset veryfast

为了生成缩放输出图像,我有时可以使用

-filter_complex [0:v][1:v]overlay,scale=-1:720

但是,有时输入MPEG会被分割成多个文件,因此我想在这里也这样做,但允许指定两个(或三个或十个)输入文件,这将导致它们按顺序播放到叠加过滤器,并与来自stdin(-i-)的图像叠加

谢谢你的建议

有问题的相机是GoPro。下面是ffprobe的一些输出

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'GH070061.MP4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2021-09-01T10:31:46.000000Z
    location        : xxxxx/
    location-eng    : xxxxx/
    firmware        : HD9.01.01.60.00
  Duration: 00:09:42.05, start: 0.000000, bitrate: 45276 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 44997 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)
    Metadata:
      rotate          : 180
      creation_time   : 2021-09-01T10:31:46.000000Z
      handler_name    : GoPro AVC  
      encoder         : GoPro AVC encoder
      timecode        : 11:53:44:51
    Side data:
      displaymatrix: rotation of -180.00 degrees
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      creation_time   : 2021-09-01T10:31:46.000000Z
      handler_name    : GoPro AAC  
      timecode        : 11:53:44:51
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2021-09-01T10:31:46.000000Z
      handler_name    : GoPro TCD  
      timecode        : 11:53:44:51
    Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 61 kb/s (default)
    Metadata:
      creation_time   : 2021-09-01T10:31:46.000000Z
      handler_name    : GoPro MET  
    Stream #0:4(eng): Data: none (fdsc / 0x63736466), 13 kb/s (default)
    Metadata:
      creation_time   : 2021-09-01T10:31:46.000000Z
      handler_name    : GoPro SOS 

如果连接还可以复制“未知编解码器”流,这将是一个额外的好处——尽管这可能是另一个问题


Tags: 文件name图像defaultdatastreamkbtime
1条回答
网友
1楼 · 发布于 2024-09-27 21:34:26

你可以试试concat demuxer

  1. 创建名为input.txt的文本文件,其中包含文件列表:

    file '0001.MTS'
    file '0002.MTS'
    file '0003.MTS'
    

    concat解复用器的所有输入必须共享same attributes

  2. 运行ffmpeg命令:

    ffmpeg -f concat -i inputs.txt -f rawvideo -framerate 10 -video_size 1920x1080 -pixel_format rgba -i - -r 30 -filter_complex "[0:v][1:v]overlay=format=auto,format=yuv420p" -c:v libx264 -crf 18 -preset veryfast -movflags +faststart output.mp4
    

相关问题 更多 >

    热门问题