Reputation: 195
I have been trying to concatenate two 48 seconds video bits to one using the following command
ffmpeg -f concat -safe 0 -i C:\moviepy-master\concat.txt -c copy output.mp4
When I played it using Windows media player the first 48 second plays fine but the player closes before playing the second bit .
Then I tried to play it using VLC media player but in the second bit player but the audio and video are not in sync .
Then I also tried giving inputs separately so the following error shows up
C:\Users\SAMHITA VVNK>ffmpeg -f concat -safe 0 -i C:\moviepy-master\extract1.mp4
-i C:\moviepy-master\extract2.mp4 -c copy -flags +global_header output.mp4
ffmpeg version N-86723-g3b3501f Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.1.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --e
nable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --
enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv
--enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-li
bfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug -
-enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enabl
e-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-li
bsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolam
e --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable
-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib
libavutil 55. 67.100 / 55. 67.100
libavcodec 57.100.103 / 57.100.103
libavformat 57. 75.100 / 57. 75.100
libavdevice 57. 7.100 / 57. 7.100
libavfilter 6. 94.100 / 6. 94.100
libswscale 4. 7.101 / 4. 7.101
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
C:\moviepy-master\extract1.mp4: Invalid data found when processing input
These are the input file's specifications are as follows C:\Users\SAMHITA VVNK>ffmpeg -i C:\moviepy-master\extract.mp4 -filter_complex "[ 0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0" -map "[a]" extract1fast.mp4
C:\Users\SAMHITA VVNK>ffmpeg -i C:\moviepy-master\extract2.mp4 -i C:\moviepy-mas
ter\extract1.mp4
ffmpeg version N-86723-g3b3501f Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.1.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --e
nable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --
enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv
--enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-li
bfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug -
-enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enabl
e-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-li
bsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolam
e --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable
-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib
libavutil 55. 67.100 / 55. 67.100
libavcodec 57.100.103 / 57.100.103
libavformat 57. 75.100 / 57. 75.100
libavdevice 57. 7.100 / 57. 7.100
libavfilter 6. 94.100 / 6. 94.100
libswscale 4. 7.101 / 4. 7.101
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\moviepy-master\extract2.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.56.101
Duration: 00:00:49.00, start: 0.012993, bitrate: 785 kb/s
Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yu
v420p(tv, smpte170m/smpte170m/bt709), 640x360, 668 kb/s, 29.97 fps, 29.97 tbr, 1
1988 tbn, 23976 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp,
137 kb/s (default)
Metadata:
handler_name : SoundHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\moviepy-master\extract1.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.56.101
Duration: 00:00:49.00, start: 0.012993, bitrate: 526 kb/s
Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360 [
SAR 1:1 DAR 16:9], 462 kb/s, 24.86 fps, 24.86 tbr, 19888 tbn, 49.72 tbc (default
)
Metadata:
handler_name : VideoHandler
Stream #1:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, flt
p, 95 kb/s (default)
Metadata:
handler_name : SoundHandler
Upvotes: 0
Views: 2518
Reputation: 134283
Your inputs vary in frame rate, H.264 profile, and audio channels, but the concat demuxer requires that everything be the same. Conform everything to similar parameters before using the concat demuxer, or use the concat filter instead.
Basic example:
ffmpeg -i input0.mp4 -i input1.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1" output.mp4
This will rely on the defaults of the concat filter which will automatically choose a common pixel format for video streams, and a common sample format, sample rate and channel layout for audio streams. These "common" parameters will, of course, vary depending on your inputs, so it may be advisable to prefix the concat filter with other filters to conform everything if you want consistent results.
Advanced example:
ffmpeg -i input0.mp4 -i input1.mp4 -filter_complex "[0:v]fps=25,format=yuv420p,setpts=PTS-STARTPTS[v0];[0:a]aformat=sample_rates=44100:channel_layouts=stereo,asetpts=PTS-STARTPTS[a0];[1:v]fps=25,format=yuv420p,setpts=PTS-STARTPTS[v1];[1:a]aformat=sample_rates=44100:channel_layouts=stereo,asetpts=PTS-STARTPTS[a1];[v0][a0][v1][a1]concat=n=2:v=1:a=1" -movflags +faststart output.mp4
Upvotes: 1