Hello everyone. I write because i have a problem with cut mp4 and ffmpeg.
I need make precise cuts without re-encode the original video. FFmpeg makes cuts without trouble but as long as the cut is started on a keyframe. To solve this we are doing the next one. We analyzed the video with ffprobe reading the frames which are keyframes in a limited time using read_intervals and cut from the nearest keyframe top. We perform the transcoding from the second desired to the frame before cutting keyframe and left it in .TS format (use the same encoding options for this piece of video, that we get with ffprobe) Then join the two segments with concat filter into only one mp4 file. The operation is super fast, even for large videos, the problem is that the video does not play well in certain devices or video players, the most common failure is when the video is transformed to HLS format. Am I missing something? can you give me some help? Thank you very much!. PS: sorry mi english. Example: ###analysis keyframes and codec options ffprobe -read_intervals 00:11:31%00:11:34 -select_streams v:0 -show_frames -show_streams -print_format json -i /mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/53e4d93747372bcc5a7b4e92_53e4d93747372bcc5a7b4e94.mp4 #### cut from fisrt keyframe found. ffmpeg -y -ss 692.025000 -i /mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/53e4d93747372bcc5a7b4e92_53e4d93747372bcc5a7b4e94.mp4 -t 2101.571062 -c copy -f mp4 /mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/53e4d93747372bcc5a7b4e92_53e4d93747372bcc5a7b4e94.mp4.MDA6MTE6MzEtMDA6MzU6MDE=_1.mp4 #### encoding from second 691.991685 using options prefile, level and bf from original video ffmpeg -y -ss 691.991685 -i /mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/53e4d93747372bcc5a7b4e92_53e4d93747372bcc5a7b4e94.mp4 -t 0.03331500000001597 -acodec libfaac -vcodec libx264 -profile:v baseline -level 31 -bf 0 /mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/53e4d93747372bcc5a7b4e92_53e4d93747372bcc5a7b4e94.mp4.MDA6MTE6MzEtMDA6MzU6MDE=_2.mp4 ###transform parts to ts ffmpeg -y -i /mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/53e4d93747372bcc5a7b4e92_53e4d93747372bcc5a7b4e94.mp4.MDA6MTE6MzEtMDA6MzU6MDE=_1.mp4 -c copy -vbsf h264_mp4toannexb /mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/53e4d93747372bcc5a7b4e92_53e4d93747372bcc5a7b4e94.mp4.MDA6MTE6MzEtMDA6MzU6MDE=_1.ts ffmpeg -y -i /mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/53e4d93747372bcc5a7b4e92_53e4d93747372bcc5a7b4e94.mp4.MDA6MTE6MzEtMDA6MzU6MDE=_2.mp4 -c copy -vbsf h264_mp4toannexb /mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/53e4d93747372bcc5a7b4e92_53e4d93747372bcc5a7b4e94.mp4.MDA6MTE6MzEtMDA6MzU6MDE=_2.ts ###concat video ffmpeg -y -i concat:"/mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/53e4d93747372bcc5a7b4e92_53e4d93747372bcc5a7b4e94.mp4.MDA6MTE6MzEtMDA6MzU6MDE=_2.ts|/mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/53e4d93747372bcc5a7b4e92_53e4d93747372bcc5a7b4e94.mp4.MDA6MTE6MzEtMDA6MzU6MDE=_1.ts" -c copy -bsf:a aac_adtstoasc -f mp4 /mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/540d9b4dbd3025a36dc27689.mp4 ###Problem making hls with fffmpeg: root@web2:~# ffmpeg -i /mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/540d9b4dbd3025a36dc27689.mp4 -acodec copy -bsf:v h264_mp4toannexb -vcodec copy -f hls /tmp/playlist.m3u8 ffmpeg version git-2014-09-03-75a9859 Copyright (c) 2000-2014 the FFmpeg developers built on Sep 3 2014 22:42:41 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5) configuration: --prefix=/opt/ffmpeg --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib --extra-libs=-ldl --enable-gpl --enable-libfaac --enable-libx264 --enable-nonfree libavutil 54. 7.100 / 54. 7.100 libavcodec 56. 1.100 / 56. 1.100 libavformat 56. 4.100 / 56. 4.100 libavdevice 56. 0.100 / 56. 0.100 libavfilter 5. 0.103 / 5. 0.103 libswscale 3. 0.100 / 3. 0.100 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 0.100 / 53. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/mnt/gfs1/medias/public/v/509bccb2e213843e650009eb/540d9b4dbd3025a36dc27689.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf56.4.100 Duration: 00:35:01.64, start: 0.000000, bitrate: 1305 kb/s Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 854x480 [SAR 1:1 DAR 427:240], 1202 kb/s, 30 fps, 29.97 tbr, 90k tbn, 59.94 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 93 kb/s (default) Metadata: handler_name : SoundHandler [mpegts @ 0x23a00c0] Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead. Last message repeated 1 times [adts @ 0x23a1000] Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead. Output #0, hls, to '/tmp/playlist.m3u8': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf56.4.100 Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p, 854x480 [SAR 1:1 DAR 427:240], q=2-31, 1202 kb/s, 30 fps, 29.97 tbn, 29.97 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, mono, 93 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 [hls @ 0x23bfcc0] Non-monotonous DTS in output stream 0:0; previous: 0, current: 0; changing to 1. This may result in incorrect timestamps in the output file. [hls @ 0x23bfcc0] Non-monotonous DTS in output stream 0:0; previous: 1, current: 1; changing to 2. This may result in incorrect timestamps in the output file. [hls @ 0x23bfcc0] Non-monotonous DTS in output stream 0:0; previous: 2, current: 2; changing to 3. This may result in incorrect timestamps in the output file. [hls @ 0x23bfcc0] Non-monotonous DTS in output stream 0:0; previous: 3, current: 3; changing to 4. This may result in incorrect timestamps in the output file. ..... ..... ..... [hls @ 0x23bfcc0] Non-monotonous DTS in output stream 0:0; previous: 63046, current: 62983; changing to 63047. This may result in incorrect timestamps in the output file. [hls @ 0x23bfcc0] Non-monotonous DTS in output stream 0:0; previous: 63047, current: 62984; changing to 63048. This may result in incorrect timestamps in the output file. [hls @ 0x23bfcc0] Non-monotonous DTS in output stream 0:0; previous: 63048, current: 62985; changing to 63049. This may result in incorrect timestamps in the output file. frame=63050 fps=2419 q=-1.0 Lsize=N/A time=00:35:03.76 bitrate=N/A video:308430kB audio:24070kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Url HLS video: Player: http://www.jwplayer.com/wizard/ Url: http://edge-20-us.edge.mdstrm.com/media-us/_definst_/v/509bccb2e213843e650009eb/540d9b4dbd3025a36dc27689.mp4/playlist.m3u8 -- César Sepúlveda. _______________________________________________ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user