Tất cả các ý tưởng tốt về cách sửa chữa chỉ mục AVI bị hỏng (sở thích của tôi là ffmpeg
), nhưng đóng góp ở đây một cách để tìm các tệp avi có chỉ mục bị hỏng để kiểm tra chúng và chủ động sửa chữa chúng. Sau khi không thành công khi cố gắng sử dụng mediainfo
ffprobe
và những người khác để phát hiện các tệp mà vlc sẽ phàn nàn, cuối cùng tôi đã quyết định sử dụng vlc
vì đó là một trong những khiếu nại. Đây là một đoạn có thể hữu ích như là một phần của tập lệnh sửa chữa quét và tự động.
if grep -q "avi demux error" \
<(cvlc --vout null --aout null --stop-time 2 "${VIDFILE}" vlc://quit 2>&1 )
# alternate ways to stop after two seconds
#<(timeout 2 cvlc --vout null --aout null "${VIDFILE}" 2>&1)
#<(cvlc --vout null --aout null "${VIDFILE}" 2>&1 & sleep 2; kill $!)
then
echo "avi demux error: ${VIDFILE}"
exit 1
fi
Lưu ý: các phương pháp dừng thay thế (vì vậy nó không phát toàn bộ video trước khi thoát) được bao gồm vì một số phiên bản của VLC có lỗi trong - stop-time và các hệ thống khác có thể không có timeout
.