ฉันมีฟังก์ชั่นต่อไปนี้ในสคริปต์ทุบตี เมื่อฉันดำเนินการ ฉันมักจะได้รับสตริงที่ส่งคืนจากคำสั่ง ffprobe ที่มีข้อผิดพลาดในรูปแบบ:
อาร์กิวเมนต์ '-' ระบุเป็นชื่อไฟล์อินพุต แต่ระบุ '/media/Testing/Sorted/badfile.mp4' ไว้แล้ว
ฉันได้ลองย้ายอาร์กิวเมนต์ไปที่ ffprobe ภายในเครื่องหมายคำพูดสำหรับชื่อไฟล์ (ไม่สามารถแก้ปัญหาได้) ฉันได้ลองย้ายอาร์กิวเมนต์ไปยังอาร์เรย์และผ่าน "${array[@]}" (ไม่สามารถแก้ปัญหาได้) เห็นได้ชัดว่าฉันพลาดบางสิ่งที่เห็นได้ชัดที่นี่ฉันไปผิดที่ไหน
# วิดีโอขั้นตอน
#
# ใช้ชื่อไฟล์อินพุต (น่าจะเป็นไฟล์วิดีโอ แต่ฟังก์ชันไม่ใช่
# พยายามตรวจสอบสิ่งนั้นจริง ๆ ) และส่งต่อให้ ffprobe เพื่อทำขั้นพื้นฐาน
# การประมวลผลของสตรีมวิดีโอ เราตั้งค่าสถานะเพื่อให้ข้อผิดพลาดใด ๆ เกิดขึ้น
# ทำให้ ffmpeg ออกพร้อมกับชุดรหัสข้อผิดพลาด หาก ffmpeg ตั้งรหัสข้อผิดพลาด เรา
# บันทึกชื่อไฟล์เป็นไฟล์
#
# ProcessVideo <เส้นทางไปยังวิดีโอ>
วิดีโอกระบวนการ ()
{
vfn ท้องถิ่น = $1
ec ท้องถิ่น = 0
เอาต์พุตในเครื่อง
echo "กำลังตรวจสอบวิดีโอ $vfn"
oput=$(ffprobe -loglevel คำเตือน "$vfn" - 2>&1)
อีซี=$?
# ถ้า (( ec > 0 ))
# แล้ว
# echo "เกิดข้อผิดพลาดในการออกจาก $ec $vfn"
# LogErr "ข้อผิดพลาดในการออกจาก $ec $vfn"
#ฟิค
# ถ้า [[ "$oput" == *"moov atom"* ]]
ถ้า [[ -n "$oput" ]]
แล้ว
echo "ข้อผิดพลาดสตริง $vfn"
LogErr "ข้อผิดพลาดสตริง $vfn"
LogErr "$oput"
ไฟ
}
โปรดทราบว่า LogErr ในสคริปต์ด้านบนเป็นฟังก์ชันอื่น ทั้งหมดที่ทำคือใช้สตริงที่ส่งผ่านและเขียนไปยังไฟล์บันทึกที่ระบุ หากมีคนคิดว่าเกี่ยวข้องกับปัญหา ฉันจะโพสต์ แต่ฉันไม่คิดว่าเป็นเช่นนั้น