이 질문에 대한 후속 조치로 이제 비디오 및 오디오의 동기 편집과 싸우고 있습니다.
여전히 비디오를 프레임별로 잘라내려고합니다. 결과 타임 스탬프가 비디오에서 올바른 것처럼 보이지만 오디오는 동기화되지 않습니다. 에 일정한 시간을 추가하는 것도 도움이되지 않습니다 asetpts
. 내가 사용하는 모든 프레임 범위마다 변경되는 것 같습니다.
여기 내가 가진 것이 있습니다 (더 긴 스크립트의 관련 부분 일뿐입니다).
SET SELECT=select='gte(n\,%4)*lte(n\,%5)'
SET ASELECT=aselect='gte(n\,%4)*lte(n\,%5)'
SET SETPTS=setpts='PTS-STARTPTS'
SET ASETPTS=asetpts='PTS-STARTPTS'
SET SCALE=scale='1280:-1'
SET CROP=%3
:
ffmpeg -y -i %1 -af %ASELECT%,%ASETPTS% -vf %SELECT%,%SETPTS%,%SCALE%,%CROP% ^
-ab 128k -crf 18 -pix_fmt yuv420p "%1 converted.mp4"
한마디로
- 작물과 시작 / 종료 프레임을 매개 변수로 사용합니다.
- 동기화 된 비디오가 시작되기 전에 소스 파일이 ~ 1 초의 오디오로 시작
- no
setpts/asetpts
와 noselect/aselect
를 사용하면 결과 비디오는 1 초의 정지 된 프레임에서 오디오로 시작한 다음 비디오가 오디오와 함께 동시에 재생됩니다 - no를 사용
setpts/asetpts
하면 결과 비디오가 정지 된 프레임으로 시작한 다음 오디오가 들어오고 전달 된 시작 프레임으로 시작하여 오디오와 함께 비디오가 동시에 재생됩니다. - no를 사용
select/aselect
하면 결과 비디오에 비디오와 오디오가 모두 약 1 초 정도 걸립니다. - 내가 모두 사용하면 결과 비디오에는 시작 프레임으로 비디오와 오디오가 시작되고 오디오는 약 1 초 정도 꺼집니다.
나는 select/aselect
잘 작동하고 있지만 setpts/asetpts
문제를 일으키는 것 같습니다. 비디오 필터 또는 오디오 필터 만 사용하면 더 나빠집니다.
분명히 나는 여기서 뭔가 잘못하고 있습니다. 그러므로 누구든지 나를 도울 수 있습니까? 어쩌면 하나조차 설명 할 수있는 방법 setpts
과 asetpts
함께 작동?
편집 :
다른 시도 :
ffmpeg -y -i %1 ^
-filter_complex %ASELECT%,%ASETPTS%;%SELECT%,%SETPTS%,%SCALE%,%CROP% ^
-ab 128k -crf 18 -pix_fmt yuv420p "%1 converted.mp4"
두 개의 입력으로 (이것은 매우 느립니다) :
ffmpeg -y -i %1 -i %1 ^
-filter_complex [1:1]%ASELECT%,%ASETPTS%[aud];[0:0]%SELECT%,%SETPTS%,%SCALE%,%CROP%[vid] ^
-map [vid] -map [aud] ^
-ab 128k -crf 18 -pix_fmt yuv420p "%1 converted.mp4"