如何解决将视频的两半与图像连接起来的问题
当我尝试运行此代码时出现此错误。我是 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 添加静音音频。仅当某些部分有您想要保留的音频而其他部分没有音频(例如图像)时才需要这样做。
请注意,我将 -framerate
的 frames1.jpeg
与 original.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 举报,一经查实,本站将立刻删除。