2

この質問で申し訳ありませんが、答えは非常に簡単だと思いますが、検索を行ったところ、答えが見つかりませんでした。

私は次のように書いています。

while read p                        # reads in each line of the text
do                                  # file- folder_list.txt each iteration.
    echo "$p"                       # print out current line
    if [ -f  $p/frame_number1.jpg ] # checks if the image exists in the specific folder
    then
        echo "$p"                   #prints specific folder name
        sleep 1                     #pause for 1 second
        ffmpeg -f image2 -r 10 -i $p/frame_number%01d.jpg -r 30 $p/out.mp4  #create video
     fi                             # end if statement
done <folder_list.txt               #end of while loop

スクリプトは、フォルダー ツリー構造を含むテキスト ファイルを読み取り、フォルダーに指定された JPEG が含まれているかどうかを確認し、含まれている場合は、指定されたフォルダー内に含まれる画像からビデオを作成する必要があります。

ただし、スクリプトが確実に画像を含むフォルダー全体をスキップしているように見えます。ビデオの作成中にwhileループが繰り返されているのか、それとも何か他のことが起こっているのか疑問に思っていましたか?

どんな助けでも大歓迎です。

よろしくお願いします

ローレンス

4

1 に答える 1

0

一部のフォルダーにスペースやその他の奇妙な文字が含まれている可能性があります。

これを試してください(すべてでは機能しませんが、ほとんどの場合は機能しません):

while read p            # reads in each line of the text file- folder_list.txt
do                      #each iteration
   echo "$p"               #print out current line
   if [  -f   "${p}/frame_number1.jpg"  ] #checks wether the image exists in the specific folder
   then echo "$p"      #printsout specific folder name
        sleep 1                 #pause for 1 second
        ffmpeg -f image2 -r 10 -i "${p}/frame_number%01d.jpg" -r 30 "${p}/out.mp4"  #create video
   fi                  # end if statement
done <folder_list.txt   #end of while loop

「$p」を含む引数の周りに引用符を追加したので、スペース(およびその他のもの)が含まれている場合、コマンドが壊れていくつかの引数に分割されません

これが機能しない場合は、問題のないディレクトリと問題のないディレクトリを正確にいくつか教えてください。

ls -ald  /some/ok/dir     /some/NOTOK/dir #will show which directories belong to who
id  #will tell us which user you are using, so we can compare to the previous and find out why you can't access some
于 2013-06-17T15:12:27.140 に答える