![MEncoder를 사용하여 현재 디렉토리에 있는 모든 png 파일을 날짜 수정 순서대로 avi 파일로 인코딩하는 방법은 무엇입니까?](https://linux55.com/image/48660/MEncoder%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%98%84%EC%9E%AC%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%97%90%20%EC%9E%88%EB%8A%94%20%EB%AA%A8%EB%93%A0%20png%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%82%A0%EC%A7%9C%20%EC%88%98%EC%A0%95%20%EC%88%9C%EC%84%9C%EB%8C%80%EB%A1%9C%20avi%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EC%9D%B8%EC%BD%94%EB%94%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
따라서 MEncoder가 모든 png 파일을 가장 이른 수정 날짜부터 마지막 수정 날짜까지 avi 파일로 인코딩하고 각 프레임의 간격을 3초로 설정하고 싶습니다.
답변1
mf:// 구문은 파일 목록을 전달할 수 있음을 의미하므로 이 방법으로 날짜별로 정렬된 파일 목록을 전달할 수 있습니다.
파일을 정렬하려면 이름이 충분히 간단하고 모두 디렉토리에 있으면 ls -t
다음과 같이 수행됩니다 ls -t *.png > file-list
.
그런 다음 mencoder mf://@file-list -mf fps=1/3:type=png …
이 작업을 수행해야 합니다( mplayer
대신 mencoder를 사용하면 쉽게 확인할 수 있습니다).
더 복잡한 콘텐츠(예: 하위 디렉터리)를 처리해야 하는 경우 find와 perl을 함께 사용할 수 있습니다. 나는 mencoder
이것이 처리될 수 있을지 의심스럽기 때문에 파일 이름에 개행 문자가 들어갈 가능성을 무시했습니다 .
find -type f -name '*.png' | perl -E 'chomp(@a = <>); @a = sort { -M $a <=> -M $b } @a; $,="\n"; say @a'
이는 특별히 효율적이지는 않지만(필요한 것보다 더 많이 호출됨 stat
) 파일이 많지 않은 한 충분합니다. 수천 개의 파일이 필요한 경우 Orcish Maneuver, Schwartzian 변환 등을 통해 효율성을 높일 수 있습니다.