2016년 업데이트
ffmpeg 필터에 fieldmatch필터가 추가됨


vf 부분에

fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate

이거만 넣어주면 해결됨

알아서 필드매치해주고 잘 안되는건 yadif로 밀어줌 추후에 decimate까지해줌

공중파에서 방송된 영화 원본이거나 iptv에서 60i 추출한 영화의 경우 ivtc가 필요함

iptv추출본은 보통 decimate를 안하고 30p로 나오는데

30p를 24p로 변환하는 경우에는 vf에 decimate만 넣어주면 해결됨




============아랫부분은 오래된 정보입니다 ==============
아직 ffmpeg의 mp필터가 봉인된 관계로

이방법은 약간 수동으로 노가다가 필요합니다

ffmpeg대신 걍 mencoder를 이용해서 연구해봐야할듯....

약간 불친절하게 적습니다 참고만 하시길 

ffmpeg 설치 및 배치파일 사용법은 이전글 참고

2011/07/01 - hdtv 60프레임 인코딩 ffmpeg으로 메구이보다 더 간단하게 인코딩

ffmpeg설치후 다음과 같이 배치파일을 만들어서 인코딩

ffmpeg.exe -y -i "%input%" -threads 2 -vcodec libx264 -preset medium -b 3000k -sws_flags lanczos -vf "yadif=0:-1, crop=in_w-2*16:in_h-2*16, scale=1280:720, setsar=1:1, select=mod((n+2)\,5), setpts=N/(24000/1001*TB)" -r 24000/1001 -acodec libmp3lame -ab 160k "%output%.mkv"

핵심 명령줄 설명 

yadif=0:-1

텔레시네로 조각난 필드를 프레임으로 되돌립니다

a, b, c, d ->텔레시네과정-> a1+a2, b1+b2, b1+c2, c1+d2, d1+d2

a1+a2, b1+b2, b1+c2, c1+d2, d1+d2 -> yadif -> a, b, b, c, d

이제 select=mod((n+2)\,5) 를 동해 a b c d를 뽑습니다

근데 5장 중에 a b b c 가 뽑힐수도잇고 b b c d가 될수도있기때문에

 5초정도 인코딩후 q키를 눌러 인코딩을 종료하고

결과물 프레임을 하나씩 이동해보며 중복프레임이 나오지 않는지 확인을 해줘야합니다

만약 중복프레임이 나온다면 n+2에서 +2를 +0~ +4까지 변화시켜주면 됩니다

이거대신 mp=decimate 옵션을 쓴다면 훨씬 편할텐데 현재는 이 필터가 봉인된 관계로 이렇게 가야죠 ㅋ

그래서 실재로 사용하기는 어렵고

걍 이렇게 decimation을 할수도 있구나 참고만 하세요 ^^;;

ffmpeg형제뻘인 mencoder를 본격적으로 연구해봐야겠습니다

mencoder는 미디어 재생기인 mplayer와 같이 개발되었기때문에 필터쪽이 더 강하다고 합니다













 


Posted by 아싸좋구나
,