.ts
여러 개의 비디오 파일을 변환 하려고 하는데 .mp4
파일을 찾을 때 find
결과를 루프로 연결하여 각 파일에 대해 수행한 다음 이전 파일을 삭제해야 while
할 것 같습니다. 변환된 파일입니다. 이것이 내가 find로 얻는 것입니다:ffmpeg
.ts
$ find ./ -iname "*.ts"
./Parent-Dir/video1.ts
./Parent-Dir/video2.ts
./Parent-Dir/video3.ts
./Parent-Dir/video4.ts
..
..
.. about a 100 more videos ..
find
루프로 이 작업을 수행 할 수 있나요 while
?
find ./ -iname "*.ts" | while IFS= read video
do
ffmpeg -i "${video}" -c:v libx264 -c:a aac "${video}".mp4
rm -f ${video}.ts
done
답변1
올바른 파일 이름을 얻으려면 변경해야 합니다.
ffmpeg -i "${video}" -c:v libx264 -c:a aac "${video}".mp4
도착하다
ffmpeg -i "${video}" -c:v libx264 -c:a aac "${video%.*}".mp4
다음과 같이 더 잘 사용할 수도 있습니다 for
.
for video in **/*.ts
이것은 포착되지 않지만 .TS
더 나은 검색을 처리합니다.
그리고 파일을 삭제할 때는 항상 따옴표를 추가하세요.
rm -f "${video}"
답변2
결국 이것은 나에게 완벽하게 작동합니다.
find ./ -iname "*.ts" \
| while IFS= read -r video; do
ffmpeg -nostdin -i "${video}" -c:v libx264 -c:a aac "${video%.*}".mp4
rm -f "${video}"
done
그것 에서 내가 찾던 것과 정확히 일치하는 video.ts
것으로 변환됩니다 ! video.mp4
에서 영감을 받다이 답변. @Romeo Ninov에게 도움을 주셔서 감사합니다!