
연결하고 싶은 동영상이 두 개 있습니다.
- 첫 번째 동영상 크기 = 480x640
- 두 번째 비디오 크기 = 640x480
연결을 시도했는데 오류가 발생했습니다. 아래에 전체 오류를 포함시켰습니다.
ffmpeg -i 682_segment_0.mp4 -i 682_segment_1.mp4 -filter_complex \
"[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]" \
-map "[v]" -map "[a]" -ar 44100 -vcodec libx264 \
-strict -2 -acodec aac 682.mp4
ffmpeg version 2.8.8-0ubuntu0.16.04.1 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.2) 20160609
configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '682_segment_0.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.40.101
Duration: 00:00:19.30, start: 0.000000, bitrate: 335 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 480x640 [SAR 1:1 DAR 3:4], 219 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 120 kb/s (default)
Metadata:
handler_name : SoundHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '682_segment_1.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.40.101
Duration: 00:00:09.97, start: 0.000000, bitrate: 568 kb/s
Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 460 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, 3.0, fltp, 104 kb/s (default)
Metadata:
handler_name : SoundHandler
[Parsed_concat_0 @ 0x202dea0] Input link in1:v0 parameters (size 640x480, SAR 1:1) do not match the corresponding output link in0:v0 parameters (480x640, SAR 1:1)
[Parsed_concat_0 @ 0x202dea0] Failed to configure output pad on Parsed_concat_0
Error configuring complex filters.
Invalid argument
조금 확인해 보니 동영상을 연결하기 전에 동영상 중 하나의 크기를 다른 동영상과 같은 크기로 조정해야 하는 것 같습니다. 맞는지는 모르겠지만 ffmpeg를 사용하여 크기를 조정했습니다.
ffmpeg -i 682_segment_0.mp4 -vf scale=640:480 -strict -2 682_segment_0b.mp4
480x640 비디오의 크기를 640x480으로 조정한 후 concat 명령을 다시 시도했습니다. 그리고 또 다른 오류가 발생했습니다. (여기에 최종 오류를 포함했지만 전체 출력은 포함하지 않았습니다.)
Input #0 Video Stream: 640x480 [SAR 9:16 DAR 3:4]
Input #1 Video Stream: 640x480 [SAR 1:1 DAR 4:3]
[Parsed_concat_0 @ 0x22cefe0] Input link in1:v0 parameters (size 640x480, SAR 1:1) do not match the corresponding output link in0:v0 parameters (640x480, SAR 9:16)
[Parsed_concat_0 @ 0x22cefe0] Failed to configure output pad on Parsed_concat_0
DAR의 크기를 조정하면 두 비디오를 연결할 수 있었지만 이제 완성된 비디오의 크기가 조정된 부분의 화면비가 잘못된 것으로 나타났습니다. 나는 기본적으로 비디오를 자르지 않고 크기를 조정하여 측면에 "검은색"이 있기를 바랐습니다.
여기에 예를 첨부했습니다.
작동했지만 가로 세로 비율이 잘못된 DAR 명령 크기 조정:
ffmpeg -i 682_segment_0.mp4 -ar 44100 -vcodec libx264 \
-strict -2 -acodec aac -s 360x480 682_segment_0e.mp4
연결과 크기 조정을 동시에 시도해야 할지 궁금하지만 어떻게 해야 할지 모르겠습니다.
답변1
로부터연결 필터 문서:
모든 해당 스트림은 모든 세그먼트에서 동일한 매개변수를 가져야 합니다. 필터링 시스템은 비디오 스트림에 대한 공통 픽셀 형식과 오디오 스트림에 대한 공통 샘플 형식, 샘플 속도 및 채널 레이아웃을 자동으로 선택하지만 기타 설정은해상도와 같은, 사용자가 명시적으로 변환해야 합니다.
480x640을 640x480에 맞추려면 크기를 조정하고 패딩(또는 자르기)해야 합니다.
ffmpeg -i 480.mp4 -i 640.mp4 -filter_complex \
"[0:v]scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2[v0]; \
[v0][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" \
-map "[v]" -map "[a]" -c:v libx264 -c:a aac -movflags +faststart output.mp4
당신은
ffmpeg
오래되었습니다. 현재 git master 브랜치에서 빌드로 업데이트하는 것을 고려해야 합니다. 그렇게 하는 가장 쉬운 방법은바이너리를 다운로드하다.이를 스크립팅하는 경우 ffmpeg가 예상치 못한 바람직하지 않은 "공통 형식"을 선택하지 않도록 fps, 형식/a형식 및 스케일 필터를 사용하여 각 입력을 공통 매개변수에 "일치"해야 합니다.
또한 참조하십시오
ffmpeg
정적 크기의 플레이어에 맞게 비디오 크기 조정.