[FFmpeg-user] Cut stream to file, transcode, merge trancoded file without gaps

frafart at free.fr frafart at free.fr
Wed Dec 11 14:44:10 CET 2013


I attempt to achieve this with an UDP Mpeg/Ts input stream :

1- Generate 5 minutes length .ts files from this stream, for shirt time storage purpose.
I've tested multicat, ffmpeg segment and some homemade tools, none of them make TS files starting with a KeyFrame (IFrame). This is normal.

Joining two produced .ts files to a new one with the ffmpeg concat muxer or a cat command works great, no gap, no scratch, no artefact.

2- Generate 5 minutes length .mp4 (h264/aacplus) files from this generated 5min .ts.

I use this ffmpeg command :

ffmpeg -i <INPUT_5MIN_TS> -y -movflags +faststart -c:v libx264 -vf yadif=0:1:0,scale=-1:288 -vprofile baseline -preset fast -crf 18 -maxrate 450k -bufsize 450k -pix_fmt yuv420p -c:a libaacplus -ab 64k -ac 2 <OUTPUT_5MIN_MP4>

(I try with and without -copyinkf)

All generated files (.ts, .mp4) must join smoothly (without any gaps or cracks) with subsequent one to produce a new file (eg: 05to10.mp4 | 10to15.mp4 | 15to20.mp4 => 05to20.mp4 ).

I've tried the technic described in this post https://trac.ffmpeg.org/wiki/How%20to%20concatenate%20(join,%20merge)%20media%20files to join .mp4 files

ffmpeg -i 05to10.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
ffmpeg -i 10to15.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy -bsf:a aac_adtstoasc 05to15.mp4

Sadly, the output "05to15.mp4" contains video artefacts around the cutting point (~4 min 59 sec).

Is there another method to cut the ts stream or tricks to prevent this artifacts ?

Anybody can help me to solve this problem ?

I use this version : 

ffmpeg version 1.0.8 Copyright (c) 2000-2013 the FFmpeg developers
  built on Sep 12 2013 11:57:09 with gcc 4.7 (Debian 4.7.2-5)
  configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/x86_64-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libfdk-aac --enable-libdc1394 --disable-altivec --dis  libavutil      51. 73.101 / 51. 73.101
  libavcodec     54. 59.100 / 54. 59.100
  libavformat    54. 29.104 / 54. 29.104
  libavdevice    54.  2.101 / 54.  2.101
  libavfilter     3. 17.100 /  3. 17.100
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100


More information about the ffmpeg-user mailing list