파일이 몇개 있어요
Joapira___BERLINA_DEL_HIERRO.mp4
Joapira___EL_BAILE_DEL_VIVO.mp4
Joapira___EL_CONDE_CABRA.mp4
Joapira___FLAIRE.mp4
Joapira___MAZULKA_DEL_HIERRO.mp4
Joapira___MEDA_A_MANOLITO_DIAZ_ARTESANO_TALLISTA.mp4
ffmpeg
GNU를 사용하여 다른 형식으로 변환하고 싶습니다 parallel
. 예를 들어 flac로 변환합니다.
parallel --bar ffmpeg -i "{}" -map_metadata 0 "{/.}.flac" ::: *
아니면 mp3로 변환하려면 이렇게 하세요
parallel --bar ffmpeg -i "{}" -vn -ar 44100 -ab 128k -map_metadata 0 "{/.}.mp3" ::: $@
하지만 이 프로세스는 영원히 계속되며 첫 번째 파일은 항상 손실됩니다. 왜?
정보
나는 Fedora 22를 사용하고 있습니다
GNU 병렬 20160222
그리고
ffmpeg 버전 N-80953-gd4c8e93-statichttp://johnvansickle.com/ffmpeg/
고쳐 쓰다
신기하네요 시도해 봤습니다ffmpeg 버전 2.6.8(Fedora와 함께 제공) 작동합니다! 최신 정적 빌드인 git을 사용하더라도 그렇지 않습니다. :-(
업데이트 2
ffmpeg를 실행 ps auxwww
하고 검색하면 상태가 있는 모든 작업이 표시됩니다.리엘, 상태가 다음과 같은 누락된 파일 명령을 제외하고시간.
GNU 병렬 상태 저장S+, 그러나 때로는 다음과 같이 변경됩니다.오른쪽+.
매뉴얼 페이지에는 ps
다음 내용이 나와 있습니다.
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped by job control signal
t stopped by debugger during the tracing
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent
< high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ is in the foreground process group
어쩌면 이것이 문제를 이해하는 데 도움이 될 수도 있습니다.
답변1
해결책은 @OleTange가 의견에서 제안한 대로 Parallel의 새 버전으로 업데이트하는 것입니다. 즉, GNU parallel 20161122
모든 것이 다시 잘 작동합니다.
작은따옴표를 사용하여 셸 상호 작용으로부터 명령을 보호하는 것이 가장 좋습니다. 예:
parallel --bar 'ffmpeg -i {} -map_metadata 0 {/.}.flac' ::: *
그리고
parallel --bar 'ffmpeg -i {} -vn -ar 44100 -ab 128k -map_metadata 0 {/.}.mp3' ::: $@