我正在尝试删除没有(或很少)音频的视频部分。为此,我使用了 audacity ( Analyze->Sound finder ) 并导出了Label Track。这会导致如下结果:
0.000000 5.170000 1
12.520000 12.630000 2
14.400000 15.660000 3
17.430000 22.150000 4
...
Run Code Online (Sandbox Code Playgroud)
使用这个正则表达式:([\d]+.[\d]{6})\t([\d]+.[\d]{6})\t([\d]+)\n>ffmpeg -i VL1.mp4 -strict -2 -ss \1 -to \2 buff.mp4\nffmpeg -f concat -i <(echo "file '/home/rene/videotest/output.mp4'\nfile '/home/rene/videotest/buff.mp4'") -c copy output2.mp4\nrm buff.mp4\nmv output2.mp4 output.mp4\n和一些手动编辑,我得到了这个:
#!/bin/bash
ffmpeg -i VL1.mp4 -strict -2 -ss 0.000000 -to 5.170000 output.mp4
ffmpeg -i VL1.mp4 -strict -2 -ss 12.520000 -to 12.630000 buff.mp4
ffmpeg -f concat -i <(echo "file '/home/rene/videotest/output.mp4'
file '/home/rene/videotest/buff.mp4'") …Run Code Online (Sandbox Code Playgroud) 我需要将一个视频剪切成多个片段ffmpeg。
当我只剪一集
ffmpeg -i 001.mp4 -vcodec copy -acodec copy -ss 00:00:00.000 -t 00:00:25.500 -strict -2 out1.mp4
Run Code Online (Sandbox Code Playgroud)
或者
ffmpeg -i 001.mp4 -vcodec copy -acodec copy -ss 00:00:25.500 -t 00:00:33.750 -strict -2 out2.mp4
Run Code Online (Sandbox Code Playgroud)
我的视频瞬间被剪掉了。
但是当我将标记链接到我想切割的地方时
ffmpeg -i 001.mp4 -vcodec copy -acodec copy -ss 00:00:00.000 -t 00:00:25.500 -strict -2 out1.mp4 -ss 00:00:25.500 -t 00:00:33.750 -strict -2 out2.mp4
Run Code Online (Sandbox Code Playgroud)
它仍然有效,但需要更多的时间(大约 10 秒),并且我看到的输出与转换某些内容时相同。
是不是我的有问题ffmpeg-command,还是ffmpeg-commands一个一个执行比较好?
我有一个持续 10 分钟的视频,我想将其切成五个 2 分钟的片段。
我可以使用 ffmpeg 将视频剪切到特定时间,如下所示:
ffmpeg -sameq -ss [start_seconds] -t [duration_seconds] -i [input_file] [outputfile]
Run Code Online (Sandbox Code Playgroud)
我是否首先必须获得视频的长度,然后重复上述命令,还是有更简单的方法来做到这一点?
我已经尝试了这个答案中描述的方法。它运行良好,只是缺少音频。谁能建议如何将视频和音频都输入输出?
例子:
我在假期拍了一段 2 分钟的袋鼠视频。它有 2 个部分(都大约 6 秒长)我想将(包括音频)提取到一个只有这两个可爱部分的短片中。
我知道我可以提取两个单独的位,然后加入它们,但是上面提到的文章让我可以做我想做的事情,但是当你按照这种方法时,没有音频。我想使用类似的单一调用 FFmpeg。
我有 158 个文件夹,每个文件夹包含 5-15 个视频文件,每个文件长几分钟。我想将所有视频合并到每个文件夹一个视频中,然后删除其余的。
文件夹以某一年的日期命名,之间有间隔(01.11、01.12、01.13、01.14、01.18... 01.28、02.01等),其中的文件命名如下:
ds_AAAAA_BB_CCC_480.mp4
第一个空白 ( AAAAA) 是该文件夹中所有文件都相同的数字。对于文件夹01.11,数字为03075,此后每个文件夹的数字加一。
第二个空白 ( BB) 是文件的顺序,从 01 到该文件夹中的文件数量。
第三个空格 ( CCC) 是一组三个字母,每个文件各不相同,可以忽略。
举几个例子,第一个文件夹 ( 01.11) 中的第一个文件是ds_03075_01_nws_480.mp4. 第四个文件夹 ( ) 中的最后一个(第 7 个)文件01.14是ds_03078_07_zen_480.mp4.
理想情况下,我希望新文件位于单独的文件夹中(只是为了方便删除旧文件),并以 、 等格式命名01_11.mp4,01_12.mp4但任何命名约定都可以。
有人对如何解决这个问题有任何建议吗?
我正在尝试从视频文件中删除一个片段 (00:26:00 - 00:32:30) input.mp4。
由于没有办法直接使用 ffmpeg(据我所知)来做到这一点,我改为在输出中切割我想要的段,然后将它们连接起来。
经过一番搜索,我发现有两种方法可以做到这一点:
不幸的是,这两种方法对我来说都失败了。
我将解释我在这两种方法中执行的步骤:
1. 使用trim:
编辑:此方法现在有效;而是跳到第二种方法。
使用的命令:
ffmpeg -i input.mp4 -filter_complex \
"[0:v]trim=duration=00:26:00[a]; \
[0:v]trim=start=00:32:30,setpts=PTS-STARTPTS[b]; \
[a][b]concat[c]" -map [c] out.mp4
Run Code Online (Sandbox Code Playgroud)
命令输出:链接
输出文件不到 1 分钟,只有 6.8 MB,而输入文件有 900 MB。
2. 使用 seek
使用的命令:
# Cut first wanted segment
ffmpeg -ss 00:00:00 -i input.mp4 -t 00:26:00 -c copy -avoid_negative_ts 1 first.mp4
# Cut second wanted segment
ffmpeg -ss 00:32:30 -i input.mp4 -c copy …Run Code Online (Sandbox Code Playgroud)