我正在尝试删除视频流前面的几秒钟(音频已排除),我得到了奇怪的结果:我认为我每增加一秒-ss但是,生成的文件将会短一秒……但事实似乎并非如此。
original ==> 01:04:52.84
-ss 19 ==> 01:04:42.84 (diff = 10) [command history shown below]
-ss 20 ==> 01:04:32.84 (diff = 20) [command history shown below]
-ss 21 ==> 01:04:32.84 (diff = 20)
-ss 25 ==> 01:04:32.84 (diff = 20)
-ss 0:0:25.0 ==> 01:04:32.84 (diff = 20)
-ss 0:0:25.5 ==> 01:04:32.84 (diff = 20) [command history shown below]
命令:ffmpeg -ss # -i temp.mp4 -y -vcodec copy temp_croppedFromStart.mp4
以下是 19 和 20 的命令历史记录
# ffmpeg -ss 19 -i temp.mp4 -y -vcodec copy temp_croppedFromStart.mp4; ffmpeg -i temp.mp4 2>&1 | grep Duration; ffmpeg -i temp_croppedFromStart.mp4 2>&1 | grep Duration
ffmpeg version N-31809-g9acffed, Copyright (c) 2000-2011 the FFmpeg developers
built on Aug 10 2011 21:25:11 with gcc 4.4.5
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
libavutil 51. 11. 1 / 51. 11. 1
libavcodec 53. 10. 0 / 53. 10. 0
libavformat 53. 6. 0 / 53. 6. 0
libavdevice 53. 2. 0 / 53. 2. 0
libavfilter 2. 28. 1 / 2. 28. 1
libswscale 2. 0. 0 / 2. 0. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'temp.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.6.0
Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
Stream #0.0(und): Video: h264 (Constrained Baseline), yuv420p, 960x640, 552 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Output #0, mp4, to 'temp_croppedFromStart.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.6.0
Stream #0.0(und): Video: libx264, yuv420p, 960x640, q=2-31, 552 kb/s, 25 tbn, 25 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
frame=97071 fps=42523 q=-1.0 Lsize= 262684kB time=01:04:33.84 bitrate= 555.5kbits/s
video:261923kB audio:0kB global headers:0kB muxing overhead 0.290418%
Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
Duration: 01:04:42.84, start: 0.000000, bitrate: 554 kb/s
# ffmpeg -ss 20 -i temp.mp4 -y -vcodec copy temp_croppedFromStart.mp4; ffmpeg -i temp.mp4 2>&1 | grep Duration; ffmpeg -i temp_croppedFromStart.mp4 2>&1 | grep Duration
ffmpeg version N-31809-g9acffed, Copyright (c) 2000-2011 the FFmpeg developers
built on Aug 10 2011 21:25:11 with gcc 4.4.5
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
libavutil 51. 11. 1 / 51. 11. 1
libavcodec 53. 10. 0 / 53. 10. 0
libavformat 53. 6. 0 / 53. 6. 0
libavdevice 53. 2. 0 / 53. 2. 0
libavfilter 2. 28. 1 / 2. 28. 1
libswscale 2. 0. 0 / 2. 0. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'temp.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.6.0
Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
Stream #0.0(und): Video: h264 (Constrained Baseline), yuv420p, 960x640, 552 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Output #0, mp4, to 'temp_croppedFromStart.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.6.0
Stream #0.0(und): Video: libx264, yuv420p, 960x640, q=2-31, 552 kb/s, 25 tbn, 25 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
frame=96821 fps=47168 q=-1.0 Lsize= 262003kB time=01:04:32.84 bitrate= 554.2kbits/s
video:261244kB audio:0kB global headers:0kB muxing overhead 0.290410%
Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
Duration: 01:04:32.84, start: 0.000000, bitrate: 554 kb/s
# ffmpeg -ss 0:0:25.5 -i temp.mp4 -y -vcodec copy temp_croppedFromStart.mp4; ffmpeg -i temp.mp4 2>&1 | grep Duration; ffmpeg -i temp_croppedFromStart.mp4 2>&1 | grep Duration
ffmpeg version N-31809-g9acffed, Copyright (c) 2000-2011 the FFmpeg developers
built on Aug 10 2011 21:25:11 with gcc 4.4.5
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
libavutil 51. 11. 1 / 51. 11. 1
libavcodec 53. 10. 0 / 53. 10. 0
libavformat 53. 6. 0 / 53. 6. 0
libavdevice 53. 2. 0 / 53. 2. 0
libavfilter 2. 28. 1 / 2. 28. 1
libswscale 2. 0. 0 / 2. 0. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'temp.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.6.0
Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
Stream #0.0(und): Video: h264 (Constrained Baseline), yuv420p, 960x640, 552 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Output #0, mp4, to 'temp_croppedFromStart.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.6.0
Stream #0.0(und): Video: libx264, yuv420p, 960x640, q=2-31, 552 kb/s, 25 tbn, 25 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
frame=96821 fps=45920 q=-1.0 Lsize= 262003kB time=01:04:27.32 bitrate= 555.0kbits/s
video:261244kB audio:0kB global headers:0kB muxing overhead 0.290424%
Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
Duration: 01:04:32.84, start: 0.000000, bitrate: 554 kb/s
答案1
使用 H.264 视频,您可以一组图片。
为了节省空间,一些框架帧间
您只能在帧内又名 I-frame。
我所做的是使用无损编解码器进行转码,然后重新编码
ffmpeg -i input.mkv -c:v ffvhuff FFVhuff.mkv
ffmpeg -ss 26.818 -i FFVhuff.mkv trim.mkv
http://svnpenn.blogspot.com/2011/10/ffmpeg-cut-to-frame-same-audio.html