微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将视频的两半与图像连接起来的问题

如何解决将视频的两半与图像连接起来的问题

当我尝试运行此代码时出现此错误。我是 ffmpeg 的新手,所以我不知道如何解决它。

过滤器图描述中的无效文件索引 4 [0:v][4:a][1:v][1:a][2:v][4:a][3:v][4:a] concat=n=4:v=2:a=1。

这段代码的目的是在视频的两半之间插入一张图像,图像数据完好无损并且可以被拉出。

ffmpeg \
-i original.mp4 -ss 00:00:00 -t 00:00:5.48 -async 1 \
-loop 1 -framerate 24 -i frames1.jpeg \
-f lavfi -t 0.1 -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-i original.mp4 -ss 00:00:5.52 -t 00:00:21.12 -async 1 \
-filter_complex "[0:v][0:a][1:v][2:a][3:v][3:a]concat=n=3:v=1:a=1" out.mp4
libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0,mov,mp4,m4a,3gp,3g2,mj2,from 'original.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41isomavc1
    creation_time   : 2018-09-11T11:07:38.000000Z
  Duration: 00:00:21.12,start: 0.000000,bitrate: 21519 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661),yuv420p(tv,bt709),3840x2160,21514 kb/s,25 fps,25 tbr,25 tbn,50 tbc (default)
    Metadata:
      creation_time   : 2018-09-11T11:07:38.000000Z
      handler_name    : L-SMASH Video Handler
      encoder         : AVC Coding
Input #1,image2,from 'frames1.jpeg':
  Duration: 00:00:00.04,bitrate: 79031 kb/s
    Stream #1:0: Video: mjpeg,yuvj420p(pc,bt470bg/unkNown/unkNown),3840x2160 [SAR 1:1 DAR 16:9],24 fps,24 tbr,24 tbn,24 tbc
Input #2,lavfi,from 'anullsrc=channel_layout=stereo:sample_rate=44100':
  Duration: N/A,bitrate: 705 kb/s
    Stream #2:0: Audio: pcm_u8,44100 Hz,stereo,u8,705 kb/s
Input #3,bitrate: 21519 kb/s
    Stream #3:0(und): Video: h264 (High) (avc1 / 0x31637661),50 tbc (default)
    Metadata:
      creation_time   : 2018-09-11T11:07:38.000000Z
      handler_name    : L-SMASH Video Handler
      encoder         : AVC Coding

解决方法

ffmpeg \
-ss 00:00:00 -t 00:00:5.48 -i original.mp4  \
-loop 1 -framerate 25 -t 5 -i frames1.jpeg \
-ss 00:00:5.52 -t 00:00:21.12 -i original.mp4 \
-filter_complex "[0:v][1:v][2:v]concat=n=3:v=1:a=0" out.mp4

您的输入都没有音频,因此无需使用 anullsrc 添加静音音频。仅当某些部分有您想要保留的音频而其他部分没有音频(例如图像)时才需要这样做。

请注意,我将 -framerateframes1.jpegoriginal.mp4 的帧速率匹配,并使用 -t 添加了持续时间。

在您的原始命令中,您有 4 个输入,但您告诉 concat 过滤器您要使用不存在的第 5 个输入 ([4:v])。 ffmpeg 文件索引星星从 0 开始计数:

索引号 输入
0 original.mp4
1 frames1.jpeg
2 anullsrc
3 original.mp4

有关详细信息,请参阅 concat filter documentation

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?