H264로 인코딩되지 않은 파일 나열

H264로 인코딩되지 않은 파일 나열

H264로 인코딩되지 않은 대규모 미디어 컬렉션의 파일을 변환하고 싶습니다. 이를 위해서는 변환해야 하는 모든 파일을 나열하는 도구가 필요합니다. 확인해야 할 서류가 많습니다. 파일이 /media/tv Shows/show name/season 01/filename.extension 형식으로 저장되므로 검색에는 재귀가 필요합니다.

답변1

지금까지 내가 생각한 것은 다음과 같습니다. 이는 수행해야 할 작업에 대한 대략적인 근사치입니다.

먼저 모든 비디오 파일을 찾아 읽을 수 있는 파일로 출력합니다. 이 부분을 건너뛰고 결과를 다음 단계로 전달해도 됩니다.

find path/to/videos/directory -name \*.mp4 >> /tmp/videoList.txt

.mp4그러면 미디어 디렉터리의 모든 하위 폴더에 있는 모든 파일을 찾아 하나의 파일에 넣습니다.

다음으로 이미지에 표시된 도구를 사용할 수 있습니다이 예각 비디오 파일에서 사용되는 인코딩을 감지합니다. 이 경우 우리는 h264를 찾고 있습니다.

while read p; do
mediainfo $p | grep -v h264 | grep .mp4 | \
  cut -f2 -d: >> /tmp/h264List.txt
done </tmp/videoList.txt

이 예에서는 h264를 사용하여 인코딩된 모든 파일을 포함하는 파일을 만듭니다 /tmp/h264List.txt. 여기에서 h264가 아닌 모든 비디오 파일을 비교하고 찾을 수 있습니다.

sort /tmp/videoFiles.txt /tmp/h264List.txt | uniq -u >> /tmp/nonh264List.txt

이 시점에서 검색한 디렉터리에 h264가 아닌 모든 비디오 파일이 포함된 파일이 있어야 합니다. 전반적으로 다음과 같이 보일 수 있습니다.

대략적인 예시이니 참고해주세요!

#!/bin/bash

find /home/user/videos/tvshows -name \*.mp4 >> /tmp/videoList.txt

while read p; do
  mediainfo $p | grep -v h264 | grep .mp4 | \
  cut -f2 -d: >> /tmp/h264List.txt
done </tmp/videoList.txt

sort /tmp/videoList.txt /tmp/h264List.txt | uniq -u >> /tmp/nonh264List.txt

#Optional Cleanup, only if necessary
mv /tmp/nonh264List.txt /home/user/needToEncode.txt
rm /tmp/*.txt

그런 다음 여기에서 파일에 대해 유사한 루프를 수행하여 needToEncode.txt원하는 ffmpeg인코딩을 실행할 수 있습니다. 미디어가 저장되는 경로는 물론 파일 확장자와 인코딩도 원하는 대로 변경해야 합니다.

링크를 추가하겠습니다문서에 대한 ffmpeg~을 위한mediainfo. 그림에 표시된 ffmpeg도구를 사용할 수도 있습니다.ffprobe여기이 작업을 완료하려면

무엇이든 시도하기 전에 제가 제공하는 모든 링크를 꼭 읽어보시기 바랍니다. 이 스크립트는 최적이 아닐 수도 있고 예상한 대로 정확히 작동할 수도 있지만 이 스크립트를 사용하여 모든 비디오 파일을 찾고, 정렬하고, 출력을 파일에 저장할 수 있었습니다.

관련 정보