파일 아이콘 이미지를 올바르게 표시하기 위해 전송 스트림으로 인코딩된 파일을 얻는 방법은 무엇입니까?

파일 아이콘 이미지를 올바르게 표시하기 위해 전송 스트림으로 인코딩된 파일을 얻는 방법은 무엇입니까?

내가 이것을 올바르게 묻고 있는지는 모르겠지만 여기에 있습니다. 내 생일을 맞아 DVD 상자 세트를 받았고 파일을 트랜스코딩하여 내 컴퓨터에 저장하여 볼 수 있게 했습니다. 원시 파일을 내 컴퓨터에 덤프한 후 다음 배치 명령을 사용하여 압축했습니다.

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.ts"
mv "$i.ts" "$i.mp4"
sleep 3
done

그 결과 압축률과 품질이 향상되었지만 폴더를 보면 아이콘에 있는 파일은 회색 상자일 뿐인데, 같은 폴더의 원본 파일에 비디오 이미지가 표시되어 있었습니다. (웃음, 그냥 화장품일 뿐이라는 건 알지만 귀찮습니다. :)

명령을 사용하면;

ffmpeg -i input.mp4 -vcodec h264 -acodec libfaac output.mp4

이미지 아이콘은 잘 표시되지만 (h264) 대신 (AVC1)로 인코딩되는데 이는 내가 원하는 것이 아닙니다.

배치 파일 명령에서 이 문제를 해결하여 원하는 대로 파일 아이콘을 표시할 수 있는 방법이 있습니까? 감사합니다!

답변1

Gyan이 제공한 정보 덕분에 배치 파일 명령 수정을 요청한 질문에 대해 다음과 같은 효과적인 솔루션을 찾을 수 있었습니다.

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.ts"
ffmpeg -i "$i.ts" -bsf:a aac_adtstoasc -c copy "$i.mp4"
rm *.ts
sleep 3
done

그러나 Gyan이 제공한 정보를 고려하면 전송 스트림 파일로 인코딩하는 단계를 건너뛴 다음 mp4로 다시 다중화하고 다음 배치 명령에서 mp4 파일을 간단히 압축할 수 있습니다.

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.mp4"
sleep 3
done

이는 이전 버전의 ffmpeg를 사용하여 수행되었다는 점을 명심하세요. 최신 버전의 ffmpeg의 경우 다음을 사용하여 압축 중인 비디오의 적절한 이미지 아이콘을 유지하면서 비디오를 압축합니다.

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec aac "$i.mp4"
sleep 3
done

배치 파일 명령을 사용하는 유일한 문제는 한 번의 클릭으로 여러 디렉터리 아래의 모든 파일에서 추가 파일 확장자를 제거하기 위해 pyrenamer를 사용하여 해결하는 파일 이름(filename.mp4.mp4)에 추가 파일 확장자를 추가한다는 것입니다.

배치 명령 내에서 이 문제를 해결하는 방법을 아는 사람이 있으면 댓글을 달아 주시면 이 답변을 수정하겠습니다. 나는 'mv' 명령의 변형을 시도했지만 운이 없었습니다.

관련 정보