(I'm sorry for re-posting this, I can't find where I can edit my title in my previous post)
Hi, I have a ffmpeg problem that I'm hoping someone can help me sort out:
I'm trying to create a fade-in effect and fade-out effect on a video, but it ends up with some corruption.
Here are the major steps I'm doing:
1) get 3 second segment from the beginning of the video and 3 second segment from end of the video (and keeping a copy of the middle part)
2) add fade in and fade out effects to the small begin/end clips
3) rejoin the three clips back together for an overall fade-in/fade-out
The corruption appears to only effect the middle segment of the video - I get Green Screen flashes, etc.
(there are a few other minor steps I do which I will mention below)
Here is a copy of the ffprobe on the input video (in case it helps)
user@ubuntu:/var/www$ /home/user/bin/ffprobe all.mp4
ffprobe version git-2013-12-06-59398c1 Copyright (c) 2007-2013 the FFmpeg developers
built on Nov 30 2013 09:45:12 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
configuration: --prefix=/home/user/ffmpeg_build --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --bindir=/home/user/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
libavutil 52. 56.100 / 52. 56.100
libavcodec 55. 45.100 / 55. 45.100
libavformat 55. 22.100 / 55. 22.100
libavdevice 55. 5.102 / 55. 5.102
libavfilter 3. 92.100 / 3. 92.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'all.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.22.100
Duration: 00:00:14.14, start: 0.000000, bitrate: 5980 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 5762 kb/s, 29.97 fps, 30 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 235 kb/s (default)
Metadata:
handler_name : SoundHandler
I have a routine that will tell me the number of seconds in a video, the all.mp4 video is 14 seconds in length
Here is my command I am using to extract the three parts of the video:
ffmpeg -y -i /var/www/all.mp4 -vcodec copy -acodec copy -ss 00:00:00 -to 00:00:03 -sn /var/www/a.tmp.mp4 \
-vcodec copy -acodec copy -ss 00:00:03 -to 00:00:11 -sn /var/www/b.tmp.mp4 \
-vcodec copy -acodec copy -ss 00:00:11 -to 00:00:14 -sn /var/www/c.tmp.mp4
I have a routine that counts the number of frames in a segment, I use it on the a.tmp.mp4 and c.tmp.mp4 files (python code below)
cmd = "ffmpeg -i " + fileName + " -vcodec copy -f rawvideo -y /dev/null 2>&1"
I look at the output and find the number of frames: (python code below)
numFrames = re.search('frame\W+(\d+)', output).group(1)
using the numFrames for a.tmp.mp4 (89) and c.tmp.mp4 (58) I add the fade in and fade out effect:
ffmpeg -i /var/www/a.tmp.mp4 -vf 'fade=in:0:89' -y /var/www/a_withfade.tmp.mp4
ffmpeg -i /var/www/c.tmp.mp4 -vf 'fade=out:0:58' -y /var/www/c_withfade.tmp.mp4
I then create a concat.txt file with the contents:
file 'a_withfade.tmp.mp4'
file 'b.tmp.mp4'
file 'c_withfade.tmp.mp4'
ffmpeg -f concat -i /var/www/concat.txt -c copy -y /var/www/all.mp4
(yes, I want to overwrite my original file)
I have examined each of the three parts of the video individually and they all play fine
(ie, a_withfade.tmp.mp4, b.tmp.mp4 and c_withfade.tmp.mp4)
As I mentioned, the middle portion becomes corrupted as a result of the joining of the files.
Any pointers would be appreciated, I have been working with video for a week+ now so I'm still somewhat of a newcomer to ffmpeg, etc.
I'm guessing that this has to do with the way the mp4 video is compressed vs rawvideo but I'm not really sure.
I have found that some people have fixed corrupted videos using a command like the following (which doesn't help me):
ffmpeg -i all.mp4 -vcodec copy -acodec copy all_fixed.mp4
I can upload the video if it will help, but I suspect that it won't help with this problem.
Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays! or rip iTunes movies!
+ Reply to Thread
Results 1 to 2 of 2
Thread
-
-
update:
I have a partial solution, there still are some problems with the resulting output, the frames sometimes freeze in the final video. But the Green screen flashes are gone.
Using the three files from the previous post:
'a_withfade.tmp.mp4'
'b.tmp.mp4'
'c_withfade.tmp.mp4'
I found some information at this web page:
https://trac.ffmpeg.org/wiki/How%20to%20concatenate%20(join,%20merge)%20media%20files
search for this line:
If you have MP4 files, these could be losslessly concatenated by first transcoding them to mpeg transport streams. With h.264 video and AAC audio, the following can be used:
ffmpeg -i a_withfade.tmp.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts i_a.ts
ffmpeg -i b.tmp.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts i_b.ts
ffmpeg -i c_withfade.tmp.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts i_c.ts
then join them back together:
ffmpeg -i "concat:i_a.ts|i_b.ts|i_c.ts" -c copy -bsf:a aac_adtstoasc abc.mp4
some output errors show up: (many copies of this line)
[mp4 @ 0x36fa6a0] Non-monotonous DTS in output stream 0:0; previous: 553728, current: 553728; changing to 553729. This may result in incorrect timestamps in the output file.
I still have a problem with this solution: Some frames freeze
Similar Threads
-
Adding fadein and fadeout effects to video
By hockeyhabit in forum EditingReplies: 1Last Post: 19th Dec 2013, 21:40 -
FadeIn/FadeOut (Avisynth) question
By Cherbette in forum EditingReplies: 5Last Post: 20th Jan 2012, 21:27 -
avisynth - overlay fadein from transparent
By doma79 in forum EditingReplies: 12Last Post: 6th Dec 2011, 11:38 -
Problem with adding transition effects to HDV footage in Vegas 9 Pro
By btodorov in forum EditingReplies: 4Last Post: 24th Aug 2009, 14:46 -
AviSynth - JDL_ApplyRange() & FadeIn() Compatibility Issue?
By Typhoon859 in forum Video ConversionReplies: 18Last Post: 4th May 2009, 19:29