
Janus 가 만든 화상 회의에서 최소 4개의 비디오가 있으며 meetecho/janus-gateway
각 사용자에 대해 두 개의 mjr 비디오 및 오디오 파일을 만들고 먼저 하나의 webm 파일로 병합한 다음 모두 500*500 비디오로 변환합니다.
이제 이러한 비디오를 모자이크처럼 결합하려고 하는데 다음 코드를 찾았습니다.
ffmpeg -i 1.webm -i 2.webm -i 3.webm -i 4.webm \
-speed 8 -deadline realtime -filter_complex "[0]pad=2*iw:2*ih[l]; \
[1]setpts=PTS-STARTPTS+428/TB[1v]; [l][1v]overlay=x=W/2[a]; \
[2]setpts=PTS-STARTPTS+439/TB[2v]; [a][2v]overlay=y=H/2[b]; \
[3]setpts=PTS-STARTPTS+514/TB[3v]; [b][3v]overlay=y=H/2:x=W/2[v]; \
[1]adelay=428372|428372[1a]; \
[2]adelay=439999|439999[2a]; \
[3]adelay=514589|514589[3a]; \
[0][1a][2a][3a]amix=inputs=4[a]" \
-map "[v]" -map "[a]" merged.webm
첫 번째 영상과 관련된 각 파일의 생성 날짜/시간을 기준으로 지연 시간을 계산했습니다.
내 문제:
이 코드는 작동하지 않습니다! 몇 분 동안 콘솔이 정지되면 다음 줄이 표시됩니다.
29fps=0.1 q=0.0 크기= 1kB 시간=00:04:30.07 비트 전송률= 0.0kbits/s 속도=0.896x
오버레이 전후 문자의 의미를 찾지 못했습니다 [1v][2v][3v][l][a][b][v]...
답변1
오버레이를 여러 번 사용하는 대신 모든 비디오 트랙에 "xstack" 필터를 사용해 보십시오. 먼저 모든 입력을 지연시킨 다음 xstack으로 파이프하여 자신만의 레이아웃을 만들 수 있습니다.
여기에 xstack으로 파이핑을 사용하여 모자이크를 만드는 방법의 예가 있습니다.
[와 ] 사이의 기호 의미는 트랙을 식별하기 위한 이름/ID일 뿐입니다.
"scale"과 같은 필터에 하나의 입력이 주어지고 해당 출력을 다른 필터로 처리하려는 경우 다음과 같이 할 수 있습니다.
-filter_complex "[0:v]scale=1920:1080[video_yourscaledoutput];[video_yourscaledoutput]your_next_filter=args[video_finaloutput]" -map "[video_finaloutput]" your_final_file.mp4
[0:v]
여기에 첫 번째 입력 스트림의 비디오 트랙에 대한 ID가 있습니다. 나머지 이름은 원하는 대로 지정할 수 있습니다. :)