Tôi đang cố phân tích các dòng FFmpeg của các tệp đầu ra. Tôi đang cố gắng tạo một var đọc từng dòng một nhưng mỗi khi tôi làm điều đó sẽ cho tôi cái này "[NULL @ 0x7fa9cb000000] Không thể tìm thấy định dạng đầu ra phù hợp cho '': Đối số không hợp lệ"
#!/bin/bash
origfolderdirectory=${PWD} # This is the original folder directory path.
origfoldername=${PWD##*/} # This is the original folder name.
# This creates a temp folder where all the temporary files will stay.
mkdir -p Temp
# This grabs a list of all .mp4 files and puts the output into files.txt
find . -name "*.mp4" >> ./Temp/files.txt
cd Temp
# This removes the dots from the start of every line in files.txt and outputs fileswithoutdot.txt
cat files.txt | sed 's/^..//' > fileswithoutdot.txt
# This adds the original folder name to the start of each line in fileswithoutdot.txt and outputs to prefixfiles.txt
cat fileswithoutdot.txt | sed -e "s#^#$origfolderdirectory#g" > prefixfiles.txt
# This adds ../Encoded. to the start of every line in prefixfiles.txt and outputs to prefixedfiles.txt
cat prefixfiles.txt | sed -e "s#$origfoldername#Encoded./$origfoldername./#" > prefixedfiles.txt
# Reads out prefixedfiles.txt for FFMPEG.
OUTPUT="$(cat prefixedfiles.txt)"
# Backs out of Temp folder
cd ../
# Copies folder structure of $origfoldername to ../Encoded.
find . -type d -exec mkdir -p -- ../Encoded./$origfoldername{} \;
# Removes temp folder from ../Encoded
rm -r ../Encoded./$origfoldername./Temp
# Do Encode
find . -name *.mp4 -exec ffmpeg -i {} -vcodec libx264 -acodec copy -threads 10 -crf 18 "${OUTPUT}" \;
Ví dụ cho tiền tốfiles.txt
Test/test.mp4
Test/More Testing/test2.mp4
Cả hai đều sử dụng cùng một lệnh, có vẻ như chúng xuất ra như nhau. Như với những gì tôi mong đợi với FFmpeg, tôi cũng mong nó sử dụng từng dòng tệp văn bản cho từng thao tác.
—
Ninsto
Tôi bỏ phần còn lại của tập lệnh vì tôi nghĩ nó không liên quan nhưng tập lệnh lặp lại thao tác cho mỗi tập tin.
—
Ninsto
Trong trường hợp đó xin vui lòng bao gồm phần còn lại. Vì nó là kịch bản của bạn không thực sự có ý nghĩa. Bằng cách thực sự chạy ffmpeg trong vòng lặp, nó sẽ có một chút ý nghĩa nhưng bạn sẽ ghi đè cùng một tệp nhiều lần. nếu bạn nhìn vào tài liệu bạn có thể đang đi đúng hướng nhưng tôi hy vọng rằng bạn không thể ngắt dòng trong đối số đầu ra của mình.
—
Seth
Chỉ cần thêm toàn bộ kịch bản.
—
Ninsto
find
tìm thấy nhiều hơn hai tập tin? Theo như tôi biếtfind
có thể cung cấp cho bạn các kết quả theo thứ tự ngẫu nhiên, làm thế nào bạn mong muốn biết tệp nguồn nào được mã hóa lại vào tệp mục tiêu nào?OUTPUT
chỉ nên là nội dung của tệp văn bản (bạn có thể chỉ cần chạycat prefixedfiles.txt
). Bạn mong đợi ffmpeg sẽ làm gì với đầu vào đó?