我正在尝试使用ffmpeg来删除部分avi文件。 我之前已经问过类似的问题,但是我已经在其他帖子中搜索过了,我看不出哪里出错了。
我用来测试7秒视频的命令行是:
-ss 00:00:01 -t 00:00:01 -i“C:\ recordings \ 2013-09-11 \ Camera 1 \ Camera 1_2013-09-11_22-23-43.avi”-vcodec copy -acodec copy“I:\ clip2.avi”
输出结果为:
ffmpeg版本N-56254-gb7bd688版权所有(c)2000-2013 FFmpeg开发人员于2013年9月12日21:00:14建立了gcc 4.7.3(GCC)配置: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb - -enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo- aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 43.100 / 52. 43.100 libavcodec 55. 31.101 / 55. 31.101 libavformat 55. 16.102 / 55. 16.102 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 84.100 / 3. 84.100 libswscale 2. 5.100 / 2. 5.100 libswresample 0. 17.103 / 0. 17.103 libpostproc 52. 3.100 / 52. 3.100
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, avi, from 'C:\recordings\2013-09-11\Camera 1\Camera 1_2013-09-11_22-23-43.avi':
Duration: 00:00:07.03, start: 0.000000, bitrate: 787 kb/s
Stream #0:0: Video: msmpeg4v3 (DIV3 / 0x33564944), yuv420p, 800x448, 30 fps, 30 tbr, 30 tbn, 30 tbc
Stream #0:1: Audio: adpcm_ms ([2][0][0][0] / 0x0002), 44100 Hz, mono, s16, 176 kb/s
Output #0, avi, to 'I:\clip2.avi':
Metadata:
ISFT : Lavf55.16.102
Stream #0:0: Video: msmpeg4v3 (DIV3 / 0x33564944), yuv420p, 800x448, q=2-31, 30 fps, 30 tbn, 30 tbc
Stream #0:1: Audio: adpcm_ms ([2][0][0][0] / 0x0002), 44100 Hz, mono, 176 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 88 fps=0.0 q=-1.0 Lsize= 226kB time=00:00:02.03 bitrate= 908.7kbits/s
video:146kB audio:66kB subtitle:0 global headers:0kB muxing overhead 6.345259%
我最终得到一个3秒长的剪辑!!! 在输出中,我可以看到-ss标志被完全忽略。
谁能看到我出错的地方?
由于
答案 0 :(得分:0)
-i是持续时间。 例如,如果你想要5秒的视频,应该写
-ss 00:00:01 -t 00:00:05 -i“C:\ recordings \ 2013-09-11 \ Camera 1 \ Camera 1_2013-09-11_22-23-43.avi”-vcodec copy -acodec copy“I:\ clip2.avi”
-ss是你写-ss 00:00:01时的偏移量给你留下6秒 当写-t 00:00:01时,用1秒制作视频而不是3秒。
答案 1 :(得分:0)
只是不要使用编解码器复制命令。删除“-vcodec copy -acodec copy”并尝试您将获得准确的复制时间
答案 2 :(得分:-1)
这里有一些提示:https://trac.ffmpeg.org/wiki/Seeking%20with%20FFmpeg
参见“快速寻找”与“准确寻找”。为了准确寻求:
我怀疑你的输入帧落在任何关键帧之外,因此“快速寻找”(-ss之前的-i)失败。
编辑:slhck关于-t
通常也会将多个帧作为输入,我不确定它是否接受时间码。请考虑改为使用-t 1
或-to 00:00:02
代替(注意:-to,而不是-t)。-t
与-vframes
是对的,请参阅评论。