FFmpeg - 필터 연결 및 매핑 출력

FFmpeg - 필터 연결 및 매핑 출력

FFmpeg에서 필터 체인 중간의 출력을 매핑할 수 있습니까?

예를 들어 다음 명령에서는 다음과 같습니다.

ffmpeg -f lavfi -i smptehdbars=rate=25:size=1920x1080 -filter_complex "[0:v]drawtext=text=text1:x=100/2:y=100:fontsize=50[txt1];[txt1]drawtext=text=text2:x=200/2:y=200:fontsize=50[txt2];[txt2]drawtext=text=text3:x=300/2:y=300:fontsize=50[txt3];[txt3]drawtext=text=text4:x=400/2:y=400:fontsize=50[txt4]" -map "[txt4]" -t 10 -y ~/Desktop/mapping.mp4

이것은 작동합니다: -map "[txt4]". -map "[txt3]"(또는 txt2 또는 txt1)을 시도하면 "

'txt3' 라벨이 있는 출력이 정의된 필터 그래프에 존재하지 않거나 이미 다른 곳에서 사용되었습니다."

전체 명령을 호출하고 필터 체인( -map [$val])의 다른 부분을 사용하여 다른 파일을 출력하고 싶습니다.

감사해요

답변1

가능하지만 사용해야합니다나뉘다"중간 필터"에 대한 필터입니다.

"중간 필터"가 다른 필터에 대한 입력으로 사용되면 해당 필터에 의해 "소비"되며 나중에 사용할 수 없습니다.


다음은 하나의 명령으로 모든 "중간 필터"에서 비디오 파일을 생성하는 예입니다.

ffmpeg -y -f lavfi -i smptehdbars=rate=25:size=1920x1080 -filter_complex "[0:v]drawtext=text=text1:x=100/2:y=100:fontsize=50:fontfile=arial.ttf,split[txt1][txt1out];[txt1]drawtext=text=text2:x=200/2:y=200:fontsize=50:fontfile=arial.ttf,split[txt2][txt2out];[txt2]drawtext=text=text3:x=300/2:y=300:fontsize=50:fontfile=arial.ttf,split[txt3][txt3out];[txt3]drawtext=text=text4:x=400/2:y=400:fontsize=50:fontfile=arial.ttf[txt4]" -t 10 -map "[txt1out]" mapping1.mp4 -t 10 -map "[txt2out]" mapping2.mp4 -t 10 -map "[txt3out]" mapping3.mp4 -t 10 -map "[txt4]" mapping4.mp4


각 파일을 별도로 인코딩하기 위해 다음을 추가할 수 있습니다.스트림 선택필터(필터 체인 끝에 있음):

[txt1out][txt2out][txt3out][txt4]streamselect=4:map=1[out]

map=0선택용으로 설정 [txt1out], map=1선택용으로 설정 [txt2out]...

샘플 명령:

ffmpeg -y -f lavfi -i smptehdbars=rate=25:size=1920x1080 -filter_complex "[0:v]drawtext=text=text1:x=100/2:y=100:fontsize=50:fontfile=arial.ttf,split[txt1][txt1out];[txt1]drawtext=text=text2:x=200/2:y=200:fontsize=50:fontfile=arial.ttf,split[txt2][txt2out];[txt2]drawtext=text=text3:x=300/2:y=300:fontsize=50:fontfile=arial.ttf,split[txt3][txt3out];[txt3]drawtext=text=text4:x=400/2:y=400:fontsize=50:fontfile=arial.ttf[txt4];[txt1out][txt2out][txt3out][txt4]streamselect=4:map=1[out]" -t 10 -map "[out]" mapping2.mp4


참고: Windows에서 작동 하려면
추가가 fontfile=arial.ttf필요했습니다 .drawtext

관련 정보