我正在尝试连接视频,在我生成的视频中,我遇到的问题是,在连接边缘,我的视频正在跳过/出现故障。
一般来说,我的工作流程看起来像这样
因为我正在处理2小时+视频,所以我不想重新编码整个视频。所以我正在寻找最接近我的In和Outpoint的I帧并在前/后切1帧。根据我的结果,我得到3个视频(前/中/后)。现在它只需要重新编码正面和背面,并连接所有三个视频。 到目前为止理论
当我看到我拍摄的视频时,我观察了以下内容。 前部持续时间是例如3.2秒我通过视频跳过framewise并得到漂亮和干净的时间戳(00:00:02.620,00:00:02:660) 一旦我到达最前沿,时间戳就会跳过一些帧并改变(00:00:03.200,00:00:03.408,00:00:03.409)。当我只看单帧图像时,它们没有丢失/丢帧
当我连接我的TS文件时,结果包含一个混乱的帧速率,例如从恒定的25 F / s到25.0096 F / s
前视频
ffmpeg -ss 232.52 -i src.mp4 -t 3.24 -filter_complex "setpts=PTS-STARTPTS" -vcodec libx264 -profile:v baseline -level 31 -bf 0 -f mp4 -y front.mp4
ffmpeg version n3.3 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/usr --extra-cflags=-I/usr/include --extra-ldflags=-L/usr/lib --bindir=/usr/local/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-libssh --enable-openssl
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'src.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.33.100
Duration: 01:06:00.33, start: 0.000000, bitrate: 610 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x464 [SAR 1:1 DAR 80:29], 537 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 65 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream mapping:
Stream #0:0 (h264) -> setpts (graph 0)
setpts (graph 0) -> Stream #0:0 (libx264)
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x31ea160] using SAR=1/1
[libx264 @ 0x31ea160] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX LZCNT
[libx264 @ 0x31ea160] profile Constrained Baseline, level 3.1
[libx264 @ 0x31ea160] 264 - core 148 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=0 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'front.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1280x464 [SAR 1:1 DAR 80:29], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
Metadata:
encoder : Lavc57.89.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, mono, fltp, 69 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc57.89.100 aac
frame= 81 fps= 31 q=-1.0 Lsize= 151kB time=00:00:03.25 bitrate= 379.5kbits/s speed=1.23x
video:119kB audio:28kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.531915%
[libx264 @ 0x31ea160] frame I:1 Avg QP:17.43 size: 38268
[libx264 @ 0x31ea160] frame P:80 Avg QP:21.05 size: 1038
[libx264 @ 0x31ea160] mb I I16..4: 71.4% 0.0% 28.6%
[libx264 @ 0x31ea160] mb P I16..4: 0.2% 0.0% 0.0% P16..4: 7.8% 1.8% 0.6% 0.0% 0.0% skip:89.6%
[libx264 @ 0x31ea160] coded y,uvDC,uvAC intra: 21.8% 40.8% 23.1% inter: 1.6% 4.2% 0.2%
[libx264 @ 0x31ea160] i16 v,h,dc,p: 66% 25% 5% 4%
[libx264 @ 0x31ea160] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 28% 15% 4% 4% 5% 4% 5% 4%
[libx264 @ 0x31ea160] i8c dc,h,v,p: 51% 24% 21% 4%
[libx264 @ 0x31ea160] ref P L0: 74.3% 15.2% 10.5%
[libx264 @ 0x31ea160] kb/s:299.56
[aac @ 0x31edfa0] Qavg: 123.323
MIDDLE视频
ffmpeg -ss 235.88 -i src.mp4 -c copy -t 1492.96 -f mp4 -y middle.mp4
ffmpeg version n3.3 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/usr --extra-cflags=-I/usr/include --extra-ldflags=-L/usr/lib --bindir=/usr/local/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-libssh --enable-openssl
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'src.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.33.100
Duration: 01:06:00.33, start: 0.000000, bitrate: 610 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x464 [SAR 1:1 DAR 80:29], 537 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 65 kb/s (default)
Metadata:
handler_name : SoundHandler
Output #0, mp4, to 'middle.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Stream #0:0(und): Video: h264 (Main) ([33][0][0][0] / 0x0021), yuv420p, 1280x464 [SAR 1:1 DAR 80:29], q=2-31, 537 kb/s, 25 fps, 25 tbr, 90k tbn, 90k tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, mono, fltp, 65 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=37329 fps=16333 q=-1.0 Lsize= 113774kB time=00:24:52.95 bitrate= 624.3kbits/s speed= 653x
video:100359kB audio:12095kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.173957%
返回视频
ffmpeg -ss 1728.88 -i 'src.mp4' -t 3.9199999999998 -filter_complex "setpts=PTS-STARTPTS" -vcodec libx264 -profile:v baseline -level 31 -bf 0 -f mp4 -y back.mp4
ffmpeg version n3.3 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/usr --extra-cflags=-I/usr/include --extra-ldflags=-L/usr/lib --bindir=/usr/local/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-libssh --enable-openssl
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'src.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.33.100
Duration: 01:06:00.33, start: 0.000000, bitrate: 610 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x464 [SAR 1:1 DAR 80:29], 537 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 65 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream mapping:
Stream #0:0 (h264) -> setpts (graph 0)
setpts (graph 0) -> Stream #0:0 (libx264)
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x2672160] using SAR=1/1
[libx264 @ 0x2672160] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX LZCNT
[libx264 @ 0x2672160] profile Constrained Baseline, level 3.1
[libx264 @ 0x2672160] 264 - core 148 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=0 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'back.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1280x464 [SAR 1:1 DAR 80:29], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
Metadata:
encoder : Lavc57.89.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, mono, fltp, 69 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc57.89.100 aac
frame= 98 fps= 27 q=-1.0 Lsize= 268kB time=00:00:03.92 bitrate= 559.2kbits/s speed=1.07x
video:230kB audio:33kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.538479%
[libx264 @ 0x2672160] frame I:1 Avg QP:19.57 size:112129
[libx264 @ 0x2672160] frame P:97 Avg QP:21.68 size: 1270
[libx264 @ 0x2672160] mb I I16..4: 35.4% 0.0% 64.6%
[libx264 @ 0x2672160] mb P I16..4: 0.2% 0.0% 0.1% P16..4: 6.9% 2.0% 0.8% 0.0% 0.0% skip:90.1%
[libx264 @ 0x2672160] coded y,uvDC,uvAC intra: 54.4% 69.1% 54.2% inter: 2.0% 3.6% 0.3%
[libx264 @ 0x2672160] i16 v,h,dc,p: 63% 23% 8% 6%
[libx264 @ 0x2672160] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 17% 11% 6% 8% 9% 7% 8% 8%
[libx264 @ 0x2672160] i8c dc,h,v,p: 50% 18% 24% 7%
[libx264 @ 0x2672160] ref P L0: 81.8% 11.5% 6.7%
[libx264 @ 0x2672160] kb/s:480.15
[aac @ 0x2675fa0] Qavg: 119.994
CONCAT视频
ffmpeg -f concat -safe 0 -i concat.txt -c copy -r 25 -y /concat.mp4
ffmpeg version n3.3 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/usr --extra-cflags=-I/usr/include --extra-ldflags=-L/usr/lib --bindir=/usr/local/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-libssh --enable-openssl
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
Input #0, concat, from 'concat.txt':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x464 [SAR 1:1 DAR 80:29], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1(und): Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, mono, fltp, 74 kb/s
Output #0, mp4, to 'concat.mp4':
Metadata:
encoder : Lavf57.71.100
Stream #0:0: Video: h264 (Constrained Baseline) ([33][0][0][0] / 0x0021), yuv420p(progressive), 1280x464 [SAR 1:1 DAR 80:29], q=2-31, 25 fps, 25 tbr, 12800 tbn, 25 tbc
Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, mono, fltp, 74 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=37508 fps=7256 q=-1.0 Lsize= 114285kB time=00:25:00.59 bitrate= 623.9kbits/s speed= 290x
video:100672kB audio:12598kB subtitle:0kB other streams:0kB global headers:1kB muxing overhead: 0.896435%
如果需要,我可以提供样品。