avconv (일명 ffmpeg)로 데스크탑을 녹화 한 다음 720p로 확장합니다.
나는 최근에 xwininfo가있는 창을 선택할 수 있도록 스크립트에 추가했으며 구체적으로 기록합니다.
그러나 출력 형식을 2로 나눌 수 없으면 인코더가 기절하여 비디오를 얻지 못합니다.
ffmpeg 내에서 이것을 고칠 수있는 방법이 있습니까? 그래서 스케일 값을 설정하기 위해 bash에서 수동 수학을 많이 할 필요가 없습니까?
스케일 필터가 고르지 않은 경우 너비 / 높이를 빼거나 더할 수 있습니까? (일주?)
이것을 달성 할 수있는 원래 스케일 이후에 다른 필터를 적용 할 수 있습니까? (입력 크기가 고르지 않고 크기가 조정되지 않은 비디오는 둥글게됩니다)
#!/bin/bash
avconv \
-f x11grab -r $fps -s $capturesize -i :0.0$offset \
-vcodec libx264 \
-vf scale=-1:720 \
-pre:v lossless_ultrafast \
-threads 4 \
-y $@
일부 오래된 메일 링리스트는 round()
필터에서 사용할 수 있는 기능을 제안 하지만 구문이 맞지 않는 것 같습니다. 그것이 작동 scale=round(iw,2):round(ih,2)
하면 끝에 적용된 필터는 한 번에 모든 문제를 해결할 것입니다. iw
및 ih
작동하지 않습니다.
답변
2로 나누면 홀수가 발생하기 때문에 다음과 같아야합니다.
-vf scale="trunc(oh*a/2)*2:720"
이것은 -1:720
구문으로 원하는 것을 수행 합니다 (원래 종횡비 유지)
답변
실제로 필터는 직접 처리 할 수 있습니다. 필터 -2
대신 전달해야합니다 -1
. 예 :
-vf scale="-2:720"
3 년 전의 버그 보고서 에서이 사실을 알게되어 놀랐습니다 .
답변
많은 실험을 한 후 다른 스케일 필터가 너비와 높이를 2로 반올림 한 후에 적용되는 다음 필터처럼 보입니다.
scale=trunc(in_w/2)*2:trunc(in_h/2)*2
기본적으로 나누기, 반올림, 곱하기입니다. 구문이 맞지 않았습니다.