폴더에 있는 모든 비디오를 가져와서 .ts
세그먼트로 변환하고 m3u8
재생 목록을 만드는 명령이 있습니다.
그런 다음 이를 파일로 연결해야 하므로 playlist.txt
다음과 같이 합니다.
cd /var/myfolder && find ./ -name "*.*" -exec ffmpeg -i {} -c:v h264 -crf 1 -flags +cgop -g 30 -hls_time 1 -hls_list_size 0 {}.m3u8 2>&1 > /dev/null \; && ls /var/myfolder/*.m3u8 | sed "s:.*/::" | xargs -i echo file {} > /var/myfolder/playlist.txt && echo done';
첫 번째 및 두 번째 명령이 작동하면(폴더의 cd 및 ffmpeg 변환) 명령이 && ls /var/myfolder/*.m3u8 | sed "s:.*/::" | xargs -i echo file {} > /var/myfolder/playlist.txt && echo done';
실행되지 않습니다.
세 번째 명령이 실행되지 않는 이유를 이해할 수 없습니다.
답변1
당신은 에 있을 수 없습니다 find -exec
.
xargs
기본값은 ...입니다 . 하지만 이미 디렉토리에 echo
있으므로 마지막 줄을 크게 단순화하고 및 를 제거할 수 있습니다 .cd
xargs
sed
cd /var/myfolder &&
find ./ -name "*.*" -exec ffmpeg -i {} -c:v h264 -crf 1 -flags +cgop -g 30 -hls_time 1 -hls_list_size 0 {}.m3u8 \; 2>&1 > /dev/null &&
printf 'file %s\n' *.m3u8 > /var/myfolder/playlist.txt &&
echo done