0

我有一个 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 

如果串联也可以复制“未知编解码器”流,那将是一个奖励——尽管可能是另一个问题。

4

1 回答 1

0

你可以试试concat demuxer

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

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

    concat demuxer 的所有输入必须共享相同的属性

  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
    
于 2021-10-06T15:56:27.467 回答