עבור לתוכן

תוכנה שסורקת קבצי וידיאו בלי סאונד ומוחקת אותם

Featured Replies

פורסם
  • מחבר

ואוו, זה כזה מסובך.

ffmpeg.exe יש לי בגלל שמותקן FormatFactory.

מה זה normalize ?

זה : http://necolas.github.io/normalize.css/ ?

שורת קוד ראשונה:

מה הכוונה לכוננים במחשב? איפה שהקבצים אודיו-וידיאו נמצאים?

שורת קוד שניה:

איך בידיוק להעתיק את התוכנות לcygwin? הכוונה לC:\Program Files\cygwin ?

שורת קוד רביעית:

איך מריצים את הסקריפט? לאן נכנסים בתוכנה?

מה הרצת שם? לא ברור לי מדוע זה קובץ WAV. סתם להמחשה? כי הרי אנחנו מדברים הרי על AVI/FLV והשאר

אם יש צורך להמיר את הAVI/FLVים לWAV כאודיו זה סירבול.

וזה כבר מסורבל פחד :screwy:

אם אתה יכול תנסה להסביר למישהו שאין לו מושג בתכנות.

  • תגובות 33
  • צפיות 18.1k
  • נוצר
  • תגובה אחרונה
פורסם

כדיי שהסקריפט יוכל לרוץ על וינדוס הוא צריך סביבת עבודה יוניקסית. את זה נותן cygwin

ffmpeg ו normalize הם לא חלק מ cygwin, תוריד אותם בנפרד ותעתיק לתוך תיקיית התוכנות

http://normalize.nongnu.org/

שורת קוד ראשונה :

בלינוקס/יוניקס, ולכן גם בסביבה הוירטואלית של cygwin, אין כוננים כמו C D וכו. יש מערכת תיקיות אחת יחידה. היא נמצאת בתיקיה כלשהיא של התוכנה cygwin

הפקודה :

mount

מראה לנו איך דברים נקראים בוינדוס מול איך הם נקראים בתוך ה cygwin. בין היתר :

C:/cygwin on / type ntfs (binary,auto)

תיקיית ה "/" (התיקיה הראשית) של cygwin נמצאת ב c:\cygwin בוינדוס

C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)
M: on /cygdrive/m type ntfs (binary,posix=0,user,noumount,auto)

הגישה ל c של וינדוס היא דרך /cygdrive/c של cygwin

הגישה ל m של וינדוס היא דרך /cygdrive/m של cygwin (סתם כונן רשת שהיה מוגדר על אותו מחשב, באותה צורה יהיה מוגדר d אם יש כונן כזה וכו)

בתוך cygwin תיקיית התוכנות היא /bin לכן בוינדוס התיקייה היא c:\cygwin\bin. תעתיק לשם את ffmpeg.exe ו normalize.exe

שורת קוד שלישית :

נניח שהקבצי וידאו נמצאים ב d:\video. לפי מה שראינו בפקודה 1, מה שבוינדוס הוא d ב cygwin הוא /cygdrive/d, לכן התיקיה d:\video תהיה ב /cygdrive/d/video

כדיי להיכנס לשם אם ה cygwin תריץ

cd /cygdrive/d/video

שורת קוד רביעית :

זה הסקריפט. תריץ אותו (העתק הדבק של השורה הארוכה הזאת מהפורום לשורת הפקודה).....

touch silent\ files.txt ; IFS=$'\n' ; for x in $(find . -iname "*" -type f) ; do ffmpeg -i $x -ar 4096 temp.wav ; let p=$[0`normalize -n temp.wav 2>/dev/null |sed -e "s/\./\n/g" |head -n 1`] ; rm temp.wav ; if [ $p -eq 0 ] ; then echo NO_DATA $x >> silent\ files.txt ; else if [ $p -lt -40 ] ; then echo SILENCE $x >> silent\ files.txt ; fi ; fi ; done

יקח לסקריפט זמן מה לעבוד, ואתה אמור לקבל קובץ silent files.txt בתיקיה ביחד אם כל קבצי הוידאו. בקובץ הזה תראה שמות של קבצי וידאו שהסקריפט חושב שהם בלי קול. תבדוק כל אחד מהם, אם הוא אכן בלי קול

הסקריפט משתמש ב normalize כדיי למדוד מה ה dB של כל קובץ. אם ה dB נמוך מאוד (פחות ממינוס 40 dB) הסקריפט יחשוב שהקובץ שקט מידי. אם ה dB הוא 0, הסקריפט יחשוב שהקובץ לא מכיל אודיו (קובץ שכן מכיל אודיו הוא בדרך כלל באיזור מינוס 5 dB). כל אחד מ 2 המקרים האלה ידווח לקובץ silent files.txt

בעיה : normalize יודע לעבוד רק אם wav.... צריך להסתדר אם מה שיש : אם ניתן לבדוק רק wav, נמיר כל קובץ וידאו ל wav על ידיי ffmpeg, ואז ניתן ל normalize לבדוק את ה wav

הסקריפט כמו שהוא (בלי שינויים) יכול לרוץ בתיקיה שמכילה קבצים שונים. כל הפורמטים של וידאו ש ffmpeg יודע להמיר ל wav ייבדקו. פורמטים ש ffmpeg לא יודע להמיר (פורמט לא נתמך, או אם בטעות היה שם קובץ לא קשור כמו exe) לא ייבדקו ולקובץ silent files.txt ייכתב שהם לא מכילים מידע אודיו

פורסם
  • מחבר

התקנתי את cygwin

הכנתי מראש קבצי WAV שהמרתי מFLX/AVI

הורדתי את ffmpeg, ו-normalize . העתקתי לC:\cygwin64

משם אני לא יודע איך להתקדם.

תגיד, יש מצב שאתה מכין "מדריך" קצרצר בCAMTASIA בזמנך הפנוי? אפילו לא מדריך, רק להקליט ולהבין מה אתה עושה שם.

כמעט בלתי אפשרי להבין ככה, בחיי סינית :x

פורסם

אתה אמור להעתיק את הקבצים לתיקיית התוכנות, לא לתיקייה הראשית. בדוגמה שלי תיקיית התוכנות היא c:\cygwin\bin ולא c:\cygwin, אצלך cygwin64 בהתאמה כנראה

אתה לא ממיר כלום ל wav, הסקריפט דואג לזה בעצמו. תמחוק את ה wav (אחרת הסקריפט יבדוק אותם בנוסף לקבצי הוידאו וסתם יקח לו זמן נוסף לעבוד....)

אין לי cygwin ולא וינדוס (כשכתבתי על ה cygwin הייתי על מחשב וינדוס לא שלי). לכן נעשה את זה בכיאלו : לדוגמה נניח שקבצי הוידאו שלך נמצאים ב d:\files\video. העתקת כבר 2 קבצי exe ל c:\cygwin\bin

בחלון הפקודות של cygwin :

1

בדיקה איך מגיעים לכונן d מתוך cygwin

פקודה :

mount

תוצאה :

C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)
D: on /cygdrive/d type ntfs (binary,posix=0,user,noumount,auto)

מכאן ניתן להבין ש d: של וינדוס הוא /cygdrive/d של cygwin, לכן d:\files\video של וינדוס הוא /cygdrive/d/files/video של cygwin

(שים לב לכיוון ההפוך של / : בוינדוס \, ב cygwin /)

2

כניסה לתיקיית הוידאו שלך (שנה בהתאם את שם התיקיה וכו' למה שיש אצלך באמת)

cd /cygdrive/d/files/video

3

הרצת הסקריפט

הקוד הארוך של הסקריפט בשורה אחת

פורסם
  • מחבר

אוקי, אז הצלחתי סוף סוף להריץ את הסקריפט ויצר לי קובץ silent files.txt בדקתי אותו ידני עפ"י שמות הקבצי וידיאו , ובדקתי 4 - באמת היו בלי קול, אח''כ ה5 ה6 עם קול . ה7 בלי קול, ה8 עם קול

אז למה זה מפשל? :x

פורסם

בוא נבדוק

תיצור תיקיה בצד ותעביר אליה כמה קבצים עליהם הזיהוי לא היה נכון (אם היו כמה צורות של זיהוי לא נכון אז דוגמה מכל 1) + קובץ תקין להשוואה. תריץ בה את הסקריפט הזה (בדיוק כמו שנכנסת והרצת את הסקריפט המקורי)

הוא כותב לקובץ טקסט את כל הפלט של ffmpeg ו normalize כך שרואים מה התרחש בעבודה אם כל קובץ, והוא לא מוחק את ה wav. אבל שים לב שיהיה מספיק מקום בדיסק לפניי שאתה מריץ אותו. ה wav לוקחים בערך 1MB/דקה

touch test\ files.txt ; IFS=$'\n' ; for x in $(find . -iname "*" -type f) ; do echo $x >> test\ files.txt ; echo >> test\ files.txt ; ffmpeg -i $x -ar 4096 $x.wav 2>> test\ files.txt ; echo >> test\ files.txt ; echo _`normalize -n $x.wav 2>>test\ files.txt` >> test\ files.txt ; echo >> test\ files.txt ; echo >> test\ files.txt ; echo >> test\ files.txt ; done

תעלה לכאן את הקובץ טקסט שמתקבל + איזה קבצי וידאו הם מה (שמכילים / לא מכילים קול, שהזיהוי שלהם היה נכון / לא נכון) + אם יש קול בקובץ ה wav המתאים כשאתה פותח אותו בעצמך ובודק

פורסם
  • מחבר

בודדים הקבצים בהם יצר קובץ WAV.

NO_DATA ./1 (1).avi - יש סאונד
NO_DATA ./1 (1).flv - יש סאונד
NO_DATA ./1 (1).mp4 - יש סאונד
NO_DATA ./1 (10).avi - אין סאונד
NO_DATA ./1 (11).avi - יש סאונד
NO_DATA ./1 (12).avi - יש סאונד
NO_DATA ./1 (13).avi - יש סאונד
NO_DATA ./1 (14).avi - אין סאונד
NO_DATA ./1 (18).avi - יש סאונד
NO_DATA ./1 (19).avi - יש סאונד
NO_DATA ./1 (2).avi - יש סאונד + קובץ WAV עם סאונד
NO_DATA ./1 (2).flv - יש סאונד
NO_DATA ./1 (2).mp4 - יש סאונד
NO_DATA ./1 (20).avi - יש סאונד
NO_DATA ./1 (21).avi - יש סאונד
NO_DATA ./1 (22).avi - אין סאונד
NO_DATA ./1 (23).avi - יש סאונד
NO_DATA ./1 (24).avi - יש סאונד
NO_DATA ./1 (25).avi - יש סאונד
NO_DATA ./1 (26).avi - יש סאונד
NO_DATA ./1 (27).avi - יש סאונד
NO_DATA ./1 (28).avi - יש סאונד
NO_DATA ./1 (29).avi - יש סאונד
NO_DATA ./1 (30).avi - יש סאונד

פורסם

עכשו תריץ את הסקריפט השני (זה שהבאתי בהודעה הקודמת)

פורסם
  • מחבר


./1 (1).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (1).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (1).flv

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (1).flv.wav: No such file or directory
normalize.exe: no files!
_



./1 (1).mp4

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (1).mp4.wav: No such file or directory
normalize.exe: no files!
_



./1 (10).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (10).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (11).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (11).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (12).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (12).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (13).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (13).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (14).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (14).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (18).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (18).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (19).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (19).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (2).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (2).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (2).flv

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (2).flv.wav: No such file or directory
normalize.exe: no files!
_



./1 (2).mp4

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (2).mp4.wav: No such file or directory
normalize.exe: no files!
_



./1 (20).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (20).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (21).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (21).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (22).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (22).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (23).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (23).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (24).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (24).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (25).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (25).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (26).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (26).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (27).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (27).avi.wav: No such file or directory
normalize.exe: no files!
_



./1 (28).avi

/usr/bin/ffmpeg.exe: error while loading shared libraries: swscale-2.dll: cannot open shared object file: No such file or directory

normalize.exe: file ./1 (28).avi.wav: No such file or directory
normalize.exe: no files!

:nixweiss:

פורסם

ffmpeg לא עובד כי הוא לא מוצא את ה dll הזה, ואז הוא לא יכול לייצר קבצי wav

תחפש את ה dll (אמור להיות באותו מקום שממנו לקחת את ffmpeg.exe) ותנסה להעתיק אותו לתיקיות bin/ (איפה שנמצא ffmpeg.exe) ו /lib של cygwin

פורסם
  • מחבר

הוא ביקש גם עוד מלא DLLים מC:\Program Files\FFModules

הכנסתי והרצתי, יצר WAVים וזה הסלט שהוא עשה

:s0403:

פורסם

הקובץ נראה כמו סלט כי notepad לא יודע לפתוח אותו. פתח אותו ב word והוא יהיה בסדר. הוא אמור להיראות כך :

test_files1.png

אני רואה קבצים ש ffmpeg מצליח להמיר, ו normalize מצליח לזהות נכון את הווליום שלהם. למשל

1 (1).avi - ווליום -18dB, אני חושב שהוא מכיל קול

1 (13).avi - ווליום -37dB, לא יודע אם זה עדיין נחשב לקול. תבדוק אותו ותחליט החל מכמה dB אתה רוצה שייחשב לשקט

1 (46).avi - ווליום -67dB, אני חושב שהוא שקט

..

וקבצים ש ffmpeg מצליח להמיר ו normalize מצליח לזהות שהם לא מכילים קול בכלל. למשל

1 (6).avi - לפי normalize אין בו מידע קול

חוץ מהם יש קבצים ש ffmpeg יוצר מהם wav ריק :

1 (10).avi

1 (14).avi

..

כאלה לא היו צלי כשבדקתי את הסקריפט על המחשב שלי. ffmpeg כותב שהם Output file #0 does not contain any stream ואז normalize לא מצליח לפתוח אותם

אם אתה יכול לבדוק :

- את הקבצים 13 ו 46, מה הווליום שלהם ? האם היית מחשיב את אחד מהם בתור שקט או לא ?

- את הקובץ 6, לפי normalize הוא שקט לחלוטין, האם זה נכון ?

- את הקבצים כמו 10 ו 14 ש ffmpeg לא מצליח להמיר - מה קורה איתם ? יש או אין בהם קול ? האם אתה מצליח לפתוח את ה wav שנוצר מהם בנגן כלשהוא ? האם הם נפתחים בכלל ? מכילים קול ? שקטים ?

פורסם
  • מחבר

אז ככה:

1 (1).av,מכיל קול מצוין

1 (13).avi - קול מצוין

1 (46).avi - לא שומעים כלום, רק רעש לבן

1 (6).avi - אכן אין קול בכלל

1 (10).avi - אין קול

1 (14).avi - אין קול

13- סביר לחלוטין, לא צריך להגביר יותר מדי ואכן הסרטון מעט שקט

46- לא שומעים כלום, אם מגבירים ממש הרבה יש רעש לבן

10- אין קול(לא מצליח לפתוח WAV, הוא 0KB)

14- אין קול(לא מצליח לפתוח WAV, הוא 0KB)

פורסם

הקבצים 10 ו 14 הם "הבעייתיים" - ffmpeg לא יוצר מהם wav תקין, ואז normalize לא מצליח לפתוח את ה wav

הסקריפט (המקורי) מצפה לקבל מ normalize מדידה של ה dB. אם הוא מקבל מדידה והיא נמוכה מ -40, הוא קובע שהקובץ שקט מידי. אם הוא לא מקבל מדידה בכלל (וזה מה שיקרה בקבצים 10 ו 14) הוא קובע שהקובץ לא מכיל מידע של קול. ב 2 המקרים האלה הוא יכתוב ל silent files את שם הקובץ ועל מה הוא הגיע לשם

כך שלדעתי אם תריץ עכשו את הסקריפט המקורי, הוא יעשה את העבודה כמו שרצינו

בסקריפט המקורי ה dB שמתחתיו הקבצים נחשבים לשקטים הוא -40

ה dB של קובץ 13 הוא -37. זה כבר דיי קרוב - אם יש קובץ אחר שקצת יותר שקט מ 13, אבל עדיין מכיל קול, הוא יגיע לרשימה בתור קובץ שקט מידי. אם אתה בודק את הקבצים לפניי שאתה מוחק אותם אתה תעלה על זה

אם אתה רוצה להוריד את ה dB בסקריפט (למשל שהחל מ -60 ומטה בלבד ייחשב לשקט וקבצים של -40 לא יגיעו ל silent files), פשוט תשנה את ה -40 ל -60 (או מה שתרצה) - זה נמצא במקום יחיד בסקריפט לקראת הסוף

להערכה : קובץ 13 הוא -37 וזה נחשב למכיל קול. קובץ 46 הוא -67 וזה נחשב לשקט. אז הגבול נמצא איפה שהוא ביניהם

(ואם אתה רוצה ניתן להוסיף לסקריפט שיכתוב את ה dB שהוא מדד לכל קובץ ב silent files)

תמחוק את הקובץ silent files הישן (אם יש), את כל קבצי ה wav שהסקריפט החדש יצר (כדיי שהסקריפט המקורי לא יבדוק אותם סתם), ותריץ את הסקריפט המקורי (על הכמה קבצים בתיקיה הזאת לבדיקה). בדוק מה אתה מקבל בקובץ silent files עכשו

פורסם
  • מחבר

אוקי, מצוין :)


NO_DATA ./1 (10).avi
NO_DATA ./1 (14).avi
NO_DATA ./1 (22).avi
NO_DATA ./1 (3).mp4
NO_DATA ./1 (4).avi
NO_DATA ./1 (41).avi
NO_DATA ./1 (42).avi
NO_DATA ./1 (45).avi
SILENCE ./1 (46).avi
NO_DATA ./1 (48).avi
NO_DATA ./1 (5).mp4
NO_DATA ./1 (51).avi
NO_DATA ./1 (54).avi
NO_DATA ./1 (6).avi
NO_DATA ./1 (6).mp4
NO_DATA ./1 (7).mp4
NO_DATA ./1 (9).avi
NO_DATA ./silent files

לאחר בדיקה ידנית,

כולם שקטים ולא מכילים קול.

עכשיו השאלה איך לבצע חיפוש נוח שימצא אותם באותה תיקיה וככה אוכל לסמן ולמחוק אותם במקום לסמן אחד אחד ולחפש ידני ?

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים