ffmpeg:同时覆盖和连接文件



我有一个python程序,它正在生成一个图像流来覆盖在MP4文件的顶部。这工作得很好。我将图像数据从python传输到ffmpeg,然后它将其覆盖在视频的顶部。我以与视频文件不同的帧率生成图像,ffmpeg使其全部工作。

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

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 

如果连接也可以复制"未知编解码";这将是一个奖励——尽管可能是另一个问题。

你可以试试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
    

相关内容

  • 没有找到相关文章