FFMPEG로 다른 SAR을 가진 이미지에서 비디오 만들기


1

나는 너를 도망 가고있다. ffmpeg 명령:

ffmpeg -y -threads 2  -loop 1 -t 5 -i watermark-0.png -loop 1 -t 2.5 -i watermark-1.png -loop 1 -t 2.5 -iwatermark-2.png -loop 1 -t 2.5 -i watermark-3.png -loop 1 -t 2.5 -i4.png -loop 1 -t 2.5 -i watermark-5.png -loop 1 -t 2.5 -i watermark-6.png -loop 1 -t 2.5 -i watermark-7.png -filter_complex [1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v];[2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v];[3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v];[4:v][3:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b4v];[5:v][4:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b5v];[6:v][5:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b6v];[7:v][6:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b7v];[0:v][b1v][1:v][b2v][2:v][b3v][3:v][b4v][4:v][b5v][5:v][b6v][6:v][b7v][7:v]concat=n=15:v=1:a=0,format=yuv420p[v] -map [v] -c:v libx264 -r 120 -s 1280x720 -aspect 16:9 -crf 1 -preset ultrafast output.mp4

그러나 ffmpeg 오류가 발생합니다. 첫 번째 입력 링크 상단 매개 변수 (크기 1280x720, SAR 5689 : 5669)가 해당 두 번째 입력 링크 하단 매개 변수 (1280x720, SAR 1 : 1)와 일치하지 않습니다.

ffmpeg 표준 출력은 다음과 같습니다.

Input #0, png_pipe, from '/media/test/a0201d256f97c39d4f05-watermark-0.png':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: png, rgb24, 1280x720 [SAR 72:72 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #1, png_pipe, from '/media/test/a0201d256f97c39d4f05-watermark-1.png':
  Duration: N/A, bitrate: N/A
    Stream #1:0: Video: png, rgb24, 1280x720 [SAR 5905:5905 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #2, png_pipe, from '/media/test/a0201d256f97c39d4f05-watermark-2.png':
  Duration: N/A, bitrate: N/A
    Stream #2:0: Video: png, rgb24, 1280x720 [SAR 100:100 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #3, png_pipe, from '/media/test/a0201d256f97c39d4f05-watermark-3.png':
  Duration: N/A, bitrate: N/A
    Stream #3:0: Video: png, rgb24, 1280x720 [SAR 11378:11338 DAR 91024:51021], 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #4, png_pipe, from '/media/test/a0201d256f97c39d4f05-watermark-4.png':
  Duration: N/A, bitrate: N/A
    Stream #4:0: Video: png, rgb24, 1280x720 [SAR 72:72 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #5, png_pipe, from '/media/test/a0201d256f97c39d4f05-watermark-5.png':
  Duration: N/A, bitrate: N/A
    Stream #5:0: Video: png, rgb24, 1280x720 [SAR 3779:3779 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #6, png_pipe, from '/media/test/a0201d256f97c39d4f05-watermark-6.png':
  Duration: N/A, bitrate: N/A
    Stream #6:0: Video: png, rgb24, 1280x720 [SAR 100:100 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #7, png_pipe, from '/media/test/a0201d256f97c39d4f05-watermark-7.png':
  Duration: N/A, bitrate: N/A
    Stream #7:0: Video: png, rgb24, 1280x720 [SAR 72:72 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
[Parsed_blend_2 @ 0x1d8ce80] First input link top parameters (size 1280x720, SAR 5689:5669) do not match the corresponding second input link bottom parameters (1280x720, SAR 1:1)
[Parsed_blend_2 @ 0x1d8ce80] Failed to configure output pad on Parsed_blend_2

따라서 다음 명령에서 SAR을 지정하려고합니다.

ffmpeg -y -threads 2  -loop 1 -t 5 -i watermark-0.png -loop 1 -t 2.5 -i watermark-1.png -loop 1 -t 2.5 -iwatermark-2.png -loop 1 -t 2.5 -i watermark-3.png -loop 1 -t 2.5 -i4.png -loop 1 -t 2.5 -i watermark-5.png -loop 1 -t 2.5 -i watermark-6.png -loop 1 -t 2.5 -i watermark-7.png -filter_complex [0:v]setsar=1[sar0];[1:v][sar0]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v];[1:v]setsar=1[sar1];[2:v][sar1]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v];[2:v]setsar=1[sar2];[3:v][sar2]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v];[3:v]setsar=1[sar3];[4:v][sar3]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b4v];[4:v]setsar=1[sar4];[5:v][sar4]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b5v];[5:v]setsar=1[sar5];[6:v][sar5]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b6v];[6:v]setsar=1[sar6];[7:v][sar6]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b7v];[0:v][b1v][1:v][b2v][2:v][b3v][3:v][b4v][4:v][b5v][5:v][b6v][6:v][b7v][7:v]concat=n=15:v=1:a=0,format=yuv420p[v] -map [v] -c:v libx264 -r 120 -s 1280x720 -aspect 16:9 -crf 1 -preset ultrafast output.mp4

그러나 여전히 정확한 오류가 발생합니다. 첫 번째 입력 링크 상단 매개 변수 (크기 1280x720, SAR 5689 : 5669)가 해당 두 번째 입력 링크 하단 매개 변수 (1280x720, SAR 1 : 1)와 일치하지 않습니다.

그것이 첫 번째 문제입니다. 두 번째 문제는 zoompan 필터를 사용하여이 명령을 실행해야하므로 추가 필터를 작동 시키거나 어디에서 명령을 입력해야하는지조차 알지 못합니다.

도움??

답변:


1

미리 모든 SAR을 설정해야합니다. 그래서, [1:v][sar0]blend=.. 실패 할 것이기 때문에 1:v 여전히 다른 SAR을 제공합니다. [sar1][sar0]blend=.. "일할 것입니다.

각 입력 이미지에 대해 선행 적으로 별도의 명령에서이 작업을 수행하고 출력을 사용하는 것이 더 쉽습니다.

ffmpeg -i watermark-5.png -vf setsar=1 watermark-5n.png

신난다, 그것은 일했다. 명령을 분리하여 sar를 설정 한 다음 위의 명령을 실행했습니다. 이제 zoompan 필터를 각 이미지에 추가해야합니다. 나는 이것을하기위한 가장 쉬운 방법은이 초기 분리 명령에 필터를 포함시키고 png 파일 대신 mpeg를 만드는 것입니다. 나는 그것을했고 지금 나는 MP4에 결합 할 필요가있는 몇 가지 .mpg 파일이있다. 어떻게해야합니까? 그리고이 mpeg들간에 블렌드 필터를 사용해야한다는 것을 명심하십시오.
Jon Stevens

또는 zoompan 필터를 블렌드 필터로 초기 명령에 추가 할 수 있습니까? 비디오를 최상의 품질로 만들어 주기만하면됩니다.
Jon Stevens

zoompan 비디오를 사용하여 출력 -c:v qtrle.mov
Gyan

이미 모든 비디오를 mpeg로 받았습니다. 어떻게 모든 mpeg를 mp4로 결합 할 수 있습니까? .mov 파일을 만들고 싶지 않습니다.
Jon Stevens

자세한 내용이 필요합니다. 각 MPG의 지속 시간. 각 교차 페이드는 얼마나 오래 지속되며 언제 시작됩니까?
Gyan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.