作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个基于 3 个主要部分生成视频的应用程序:-
0
至4
秒和“段 3”来自 8
至12
秒。 3
片段)。用户还选择为整个视频播放的音频文件。生成的文件应如下所示:-
VIDEO | Intro (20 - 30) | Seg 1 (4) | Seg 2 (4) | Seg 3 (4) | Outro (10 - 20) |
--------+-----------------+------------+------------+------------+-------------------+
AUDIO | Audio track which spans full video (e.g. 4 minutes long) ... |
ffmpeg
一起破解以下内容(有效): -
ffmpeg -y \
-i audio/audio-19.m4a \
-i videos/intro/intro-23.mkv \
-i videos/segments/segments-88.mkv \
-i videos/outro/outro-12.mkv \
-filter_complex \
"[1:v]trim=0:30,setpts=PTS-STARTPTS[v0]; \
[0:a]atrim=0:30,asetpts=PTS-STARTPTS[a0]; \
[2:v]trim=20:24,setpts=PTS-STARTPTS[v1]; \
[0:a]atrim=30:34,asetpts=PTS-STARTPTS[a1]; \
[2:v]trim=60:64,setpts=PTS-STARTPTS[v2]; \
[0:a]atrim=34:38,asetpts=PTS-STARTPTS[a2]; \
[2:v]trim=132:136,setpts=PTS-STARTPTS[v3]; \
[0:a]atrim=38:42,asetpts=PTS-STARTPTS[a3]; \
[3:v]trim=0:20,setpts=PTS-STARTPTS[v4]; \
[0:a]atrim=42:62,asetpts=PTS-STARTPTS[a4]; \
[v0][a0][v1][a1][v2][a2][v3][a3][v4][a4]concat=n=5:v=1:a=1[out]" \
-map "[out]" generated.mkv
[1:v]trim=0:30 ...
) 和结尾视频 ( [3:v]trim=0:20 ...
) 的长度 - 这些都是可变的,如果我可以简单地连接整个视频会更好。 [0:a]atrim=0:30 ...
=> [0:a]atrim=30:34 ...
=> [0:a]atrim=34:38 ...
=> 等等。如果简单地说 - “这是音轨 - 根据生成的视频的长度进行修剪”最佳答案
经过大量阅读,反复试验,我得到了一个更好的解决方案:-
ffmpeg -y \
-i audio/audio-19.m4a \
-i videos/intro/intro-23.mkv \
-i videos/segments/segments-88.mkv \
-i videos/outro/outro-12.mkv \
-filter_complex \
"[2:v]trim=20:24,setpts=PTS-STARTPTS[s1]; \
[2:v]trim=60:64,setpts=PTS-STARTPTS[s2]; \
[2:v]trim=132:136,setpts=PTS-STARTPTS[s3]; \
[1][s1][s2][s3][3]concat=n=5:v=1:a=0[outv]" \
-map "[outv]" -map 0:a -shortest generated.mkv
[2:v]trim=20:24
)并将时间戳重置为零(
setpts=PTS-STARTPTS[s1]
- 请参阅
https://trac.ffmpeg.org/wiki/FilteringGuide 了解为什么这是必要的)。这对 3 个段执行 3 次。
concat
复杂的过滤器然后只连接视频。
[1][s1][s2][s3][3]concat=n=5:v=1:a=0[outv]
[1]
)、新创建的片段剪辑视频 (
[s1][s2][s3]
) 和最后的结尾视频 (
[3]
) 中抓取视频并将它们连接在一起。但是,它会忽略音频,即
concat=n=5:v=1:a=0
(与前一个解决方案中的
concat=n=5:v=1:a=1
相比)并将其保存到一个名为
[outv]
的新视频流中.
"[outv]"
映射视频。以及来自第一个输入文件(
0:a
)的音频,即
-map "[outv]" -map 0:a -shortest generated.mkv
-shortest
参数将输出修剪为最短的流(即生成的视频的长度)。
-map
命令 -
关于FFmpeg - 连接可变长度的前奏/后奏固定片段和单独的音轨,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46340082/
在序曲中, > :load foo.hs > -- before edit > :edit foo.hs ... Edit and save file > -- But before edit > :
我安装了 emacs prelude .我主要使用它在 C++ 中进行编辑。我拥有我想要编辑的大部分内容,但缺少一个。 我想使用 gnu global,所以我通过 M-x list-packages
我是一名优秀的程序员,十分优秀!