תוכנה שסורקת קבצי וידיאו בלי סאונד ומוחקת אותם - תוכנה - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


SaXtoR

Recommended Posts

  • תגובות 33
  • נוצר
  • תגובה אחרונה

קשה לי להאמין שקיימת תוכנה כזאת.

יש הרבה דברים שהייתי רוצה לעשות רקורסיבית על תיקיות ולא מצאתי להם פתרונות.

העניין שלך יחסית מסובך.

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

במיוחד כשהם דורשים הרבה עבודה ובדיקות ועדכונים.

הפיתרון לכל הדברים האלו הוא לפתח ממשקים חכמים מסוג חדש למערכות הפעלה, ועליהם לבנות כלים.

סוג של אינטליגנציה מובנית ברמת מערכת ההפעלה, המאפשרת ניסוח יותר אנושי כדי לבצע פעולות מורכבות שתוצאתן פשוטות להבנה.

קישור לתוכן
שתף באתרים אחרים

העתיד כבר כאן.....


[ash@renesance New Folder]$ cp ../../Progressive\ PsyTrance\ Mix\ May\ 2013-ms7bVEdPO7o.mp4 ./

[ash@renesance New Folder]$ ffmpeg -i Progressive\ PsyTrance\ Mix\ May\ 2013-ms7bVEdPO7o.mp4 -t 0:01:00.00 psytrance.wav
ffmpeg version 2.0.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Aug 11 2013 14:58:31 with gcc 4.8.1 (GCC) 20130725 (prerelease)
configuration: --prefix=/usr --disable-debug --disable-static --enable-avresample --enable-dxva2 --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libv4l2 --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-pic --enable-postproc --enable-runtime-cpudetect --enable-shared --enable-swresample --enable-vdpau --enable-version3 --enable-x11grab
libavutil 52. 38.100 / 52. 38.100
libavcodec 55. 18.102 / 55. 18.102
libavformat 55. 12.100 / 55. 12.100
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 79.101 / 3. 79.101
libavresample 1. 1. 0 / 1. 1. 0
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Progressive PsyTrance Mix May 2013-ms7bVEdPO7o.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2013-05-17 13:03:35
Duration: 01:04:24.33, start: 0.000000, bitrate: 1218 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 1023 kb/s, 29.97 fps, 29.97 tbr, 60k tbn, 59.94 tbc
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 191 kb/s
Metadata:
creation_time : 2013-05-17 13:04:59
handler_name : IsoMedia File Produced by , 5-11-2011
Output #0, wav, to 'psytrance.wav':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
ISFT : Lavf55.12.100
Stream #0:0(und): Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Metadata:
creation_time : 2013-05-17 13:04:59
handler_name : IsoMedia File Produced by , 5-11-2011
Stream mapping:
Stream #0:1 -> #0:0 (aac -> pcm_s16le)
Press [q] to stop, [?] for help
size= 10336kB time=00:01:00.00 bitrate=1411.2kbits/s
video:0kB audio:10336kB subtitle:0 global headers:0kB muxing overhead 0.000756%


[ash@renesance New Folder]$ cp ../silence.wav ./



[ash@renesance New Folder]$ normalize -n psytrance.wav
Computing levels...
level peak gain
-8.2475dBFS 0.0000dBFS -3.7525dB psytrance.wav

[ash@renesance New Folder]$ normalize -n silence.wav
Computing levels...
level peak gain
-80.1523dBFS -67.3862dBFS 68.1523dB silence.wav



[ash@renesance New Folder]$ normalize -n psytrance.wav 2>/dev/null
-8.2475dBFS 0.0000dBFS -3.7525dB psytrance.wav

[ash@renesance New Folder]$ normalize -n psytrance.wav 2>/dev/null |sed -e "s/\./\n/g" |head -n 1
-8



[ash@renesance New Folder]$ if [ -8 -lt -40 ] ; then echo silent ; else echo not silent ; fi
not silent

[ash@renesance New Folder]$ if [ -80 -lt -40 ] ; then echo silent ; else echo not silent ; fi
silent

[ash@renesance New Folder]$ if [ `normalize -n psytrance.wav 2>/dev/null |sed -e "s/\./\n/g" |head -n 1` -lt -40 ] ; then echo silent ; else echo not silent ; fi
not silent

[ash@renesance New Folder]$ if [ `normalize -n silence.wav 2>/dev/null |sed -e "s/\./\n/g" |head -n 1` -lt -40 ] ; then echo silent ; else echo not silent ; fi
silent



[ash@renesance New Folder]$ for x in `ls *wav` ; do if [ `normalize -n $x 2>/dev/null |sed -e "s/\./\n/g" |head -n 1` -lt -40 ] ; then echo $x silent ; else echo $x not silent ; fi ; done
psytrance.wav not silent
silence.wav silent

[ash@renesance New Folder]$

קישור לתוכן
שתף באתרים אחרים

לעבור על כל הקבצים רקורסיבית זה לא בעיה.

גם להעביר קובץ דרך תוכנה שמוציאה FALSE וTRUE אם אין או יש בו AUDIO CHANNEL זה אפשרי.

הבעיה היא שאתה רוצה למחוק את מה שאין בו AUDIO, וזה יכול להיות מסוכן כי בשביל זה צריך לסמוך ב100% על תוצאות תוכנת הבדיקה, שאולי לא יודעת לזהות תמיד מהו כל CHANNEL בכל פורמט וקובץ קיים.

הדרך האידיאלית להתמודד עם הבעיה היא ליצור מנגנון תוצאה בו אתה מקבל רשימה ועובר עליה לפני אישור/ביטול מחיקה לקבצים.

ולא שבלתי אפשרי ליצור את הדבר, פשוט אף אחד לא יטרח ליצור ללא סיבה טובה.

כמובן שיכול להיות שלמישהו כבר היתה סיבה טובה, ותוכנה כזאת כבר קיימת.

אם לי היה צורך דומה וודאי שהייתי מחפש.

ואם הייתי יודע מספיק תכנות וודאי שהייתי מנסה לבנות.

אבל אני מאוד הייתי נזהר לא להשתמש בפעולות רקורסיביות על תיקיות עם מחיקה אוטומטית דרך BATCH FILE(או אותה שיטה לינארית ומסוכנת), כי בעבר כבר היו לי "תאונות".

אחד הדברים שמעצבנים אותי הם הקבצים שמצורפים לכל הורדת טורנט.

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

אבל באמת שאין כלים שמאפשרים ליצור דברים כאלו באופן שאני מדמיין אותם, ויודע שאפשרי!!!

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

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

ואם היה לי מספיק ידע בתכנות כבר מזמן הייתי מקים פרויקט פתוח עם הקונספט הזה.

- - - תגובה אוחדה: - - -

הייתי קורא לה משהו כמו CLOCKWORK FILE COMMANDER.

או בקיצור CFC.

ואחרי שהכלים הבסיסיים קיימים באופן מספק, הייתי מתחיל לעבוד על מימד ניהול אוטומטי לו יכולות פשוטות של .

והייתי קורא לתוכנה CLOCKWORK FILE COMMANDER .

CFC-.

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

ואז היה לי על מה לסמוך שיעשה בשבילי מגוון פעולות תדירות שאני כרגע ידנית.

למשל להעביר אוטומטית תיקיות סרטים מתיקיית ההורדות לתיקיית האיחסון כשמתחיל להיגמר לי המקום בכונן ההורדות.

למחוק קבצי פרסומות של אתרים וקבוצות release.

למחוק קבצי/תיקיות SAMPLES מסרטים/סדרות.

להעביר קבצי סדרות למקומן היחסי למקום האיחסון של הסדרה.

לפתוח הורדות בהם קבצי ARCHIVE, לוודא שהמידע נפרס כמו שצריך, ואז למחוק את הARCHIVES.

והכל עם אפשרות להחזיר את הזמן אחורה אם צריך, וממשק בו אפשר לראות לעקוב ולהתערב בכל המתרחש.

הרבה הרבה דברים אפשר לעשות עם ממשק חכם למטרות אלו.

ואני מנחש שאם הדבר יהיה מספיק מוצלח, אולי אפילו וגוגל יתחילו להתעניין.

קישור לתוכן
שתף באתרים אחרים

השיטה של 11010010110 מתאימה רק למצב שבו ניתן להגדיר מה הוא שקט בצורה אבסולוטית ע"י חיפוש text string בתוך קבצים.

במקרה של מה שפותח הדיון מבקש צריך להגדיר מה הוא "שקט" ואיך בדיוק ניתן למפות אותו בכל המצבים האפשריים. זאת כבר פעולת אלגוריטם DSP ולא shell script.

קישור לתוכן
שתף באתרים אחרים

לבדוק את הAUDIO CHANNEL ולקבוע מה עוצמת הרעש זה סיפור אחר.

אני הנחתי שהוא רוצה למחוק את הקבצים להם אין AUDIO CHANNEL בכלל(דבר יותר פשוט לעשות).

אבל אז מה יקרה כשהוא לא יזהה פורמט מסויים כAUDIO CHANNEL? ימחק אותו סתם.

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

אני מניח שאם קוד הזיהוי יעשה עבודה מושלמת בקלות רבה, הדרך לתוצר הרצוי לא רחוקה בכלל.

אם לפחות תוכנת הזיהוי תוכל לזהות שיש CHANNEL נוסף חוץ מהוידאו, גם אם היא לא תדע מהו, אפשר לתכנת מנגנון שאילתה בסוף פעולת הסריקה בו העובדה שיש CHANNEL לא מזוהה יובלט כדי שהמשתמש יוכל לוודא את העניין.

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

קישור לתוכן
שתף באתרים אחרים

התכוונתי לצורך של פותח הדיון.

נראה שהוא מעוניין לדעת אם יש בכלל ערוץ AUDIO, ולא כמה DB האודיו בערוץ שקיים.

ואולי הוא מעוניין בגם וגם.

אם הדרך שלך משיגה במקביל את שני המטרות אז אולי היא תהיה שימושית לבניית התוכנה/סקריפט.

אם לא, אז חזרנו למשבצת הראשונה.

קישור לתוכן
שתף באתרים אחרים

קשה לי להאמין שקיימת תוכנה כזאת.

יש הרבה דברים שהייתי רוצה לעשות רקורסיבית על תיקיות ולא מצאתי להם פתרונות.

העניין שלך יחסית מסובך.

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

במיוחד כשהם דורשים הרבה עבודה ובדיקות ועדכונים.

הפיתרון לכל הדברים האלו הוא לפתח ממשקים חכמים מסוג חדש למערכות הפעלה, ועליהם לבנות כלים.

סוג של אינטליגנציה מובנית ברמת מערכת ההפעלה, המאפשרת ניסוח יותר אנושי כדי לבצע פעולות מורכבות שתוצאתן פשוטות להבנה.

נקווה שאתה טועה והעתיד באמת כבר כאן :)

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

העתיד כבר כאן.....

ההייתי שמח לנסות להשתמש במה שיצרת, השאלה איך? זה נראה כאילו אתה מפעיל את זה מלינקוס או משהו.

יש לי WIN 7 64, מה אני צריך לעשות ?

אהה כן, ושקט הוא שקט אבסולוטי - ללא . או לפחות DB מינימלי שקיים שלא שומעים כמעט כלום וצריך להגביר פי 40 בשביל לשמוע 1% בקושי.

קישור לתוכן
שתף באתרים אחרים

הרצתי אכן על לינוקס. הסקריפט שלי משתמש בתוכנות שמותקנות במערכת :

ffmpeg - להמרת כל וידאו לקובץ wav

http://ffmpeg.org/

normalize - למדידת הווליום של ה wav

http://normalize.nongnu.org

האם ניתן להריץ על וינדוס ? התוכנות האלה קיימות גם לוינדוס, אבל תצתרך או למצוא דרך להריץ bash script על וינדוס, או לכתוב את הסקריפט בשפה אחרת

הסקריפט עצמו ב bash הוא שורה אחת

touch silent\ files ; 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 ; else if [ $p -lt -40 ] ; then echo SILENCE $x >> silent\ files ; fi ; fi ; done

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

צור קובץ silent files

הבדל בין קבצים ברשימה הוא על ידיי שורה חדשה בלבד (קריטי לקבצים אם רווחים / תווי יוניקוד בשם)

for כל קובץ ב (חפש קבצים בשם * מסוג "קובץ") :

{

המר את הקובץ ל temp.wav

p = 0(normalize temp.wav)

(מה שהשורה הזאת עושה הוא, אם normalize מחזיר -40dB מקבלים p = 0-40 = -40, אם normalize לא מחזיר כלום - למשל אם אין בכלל אודיו מקודד בקובץ - מקבלים p = 0)

מחק את temp.wav

אם p = 0 כתוב ל silent files שהקובץ לא מכיל אודיו

אם p < -40 כתוב ל silent files שהקובץ שקט מידי

}

אם אתה רוצה לשחק אם הווליום שהחל ממנו הקבצים נחשבים לשקטים, תשנה את ה -40 ב [ $p -lt -40 ]. הווליום האמיתי באותו ללא היה משהוא כמו -60dB, אני מניח ש -40dB הוא גבול עליון נורמלי (סרטון שהווליום שלו נמוך מ -40dB יגיע לקובץ הטקסט)

קישור לתוכן
שתף באתרים אחרים

כמה אפשרויות :

- תנסה להריץ את הסקריפט שלי בתוך אמולטור, למשל http://www.cygwin.com

- תמצא מי שמכיר שפות סקריפט של וינדוס, ויוכל לבנות את הסקריפט בהתאמה לוינדוס. ה "קוד בעברית" שהבאתי מיועד בשביל זה : תבנו עליו את הסקריפט שלכם. לא יכול לעזור כאן מעבר לזה, אין לי וינדוס

- תעלה מ live של ותריץ את הסקריפט בלינוקס (על התיקיה בדיסק הקשיח שלך), הבעיה שצפויה במקרה הזה היא ש live אוליי לא יכיל ffmpeg מותקן ודיי בטוח לא יכיל normalize מותקן (זה תוכנה קטנה שמישהוא כתב והיא לא משהוא נפוץ שמותקן בדרך כלל). אוליי יש איזה שהיא מערכת live ל DJים שתכיל את הדברים האלה, לא יודע

קישור לתוכן
שתף באתרים אחרים

בדקתי עכשו את האפשרות של הרצה באמולטור על וינדוס - עובד

הורדתי את ffmpeg ו normalize וכן כמה קבצים שמכילים או לא מכילים אודיו לתיקיות בדסקטופ. זה ההרצה באמולטור :

איפה הכוננים של המחשב

GUEST@M105-PC3 ~
$ mount
C:/cygwin/bin on /usr/bin type ntfs (binary,auto)
C:/cygwin/lib on /usr/lib type ntfs (binary,auto)
C:/cygwin on / type ntfs (binary,auto)
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)
M: on /cygdrive/m type ntfs (binary,posix=0,user,noumount,auto)

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

GUEST@M105-PC3 ~
$ ls /bin
[.exe file.exe printenv.exe
addftinfo.exe find.exe printf.exe
..
..

GUEST@M105-PC3 ~
$ cp /cygdrive/c/Documents\ and\ Settings/GUEST/Desktop/ffmpeg-20140130-git-e1cb6dc-win32-static/bin/ffmpeg.exe /bin/

GUEST@M105-PC3 ~
$ cp /cygdrive/c/Documents\ and\ Settings/GUEST/Desktop/normalize-0.7.7-win32/normalize.exe /bin/

נעבור לתיקיה אם הקבצים

GUEST@M105-PC3 ~
$ cd /cygdrive/c/Documents\ and\ Settings/GUEST/Desktop/files/

נריץ את הסקריפט

GUEST@M105-PC3 /cygdrive/c/Documents and Settings/GUEST/Desktop/files
$ 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
ffmpeg version N-60240-ge1cb6dc Copyright (c) 2000-2014 the FFmpeg developers
..
..

מתקבל קובץ silent files.txt כמו בהרצה על , אלא מה, notepad לא יודע לפתוח אותו והכול נמצא בשורה אחת.... במקום זה תפתח אותו ב word ותבחר utf-8 אם יש שם שמות קבצים בעברית

תבדוק אם הוא אכן מוצא את הקבצים לפי רמת השקט שאתה רוצה, יכול להיות שתרצה לשנות את ה dB שהחל ממנו קבצים נחשבים לשקטים

קישור לתוכן
שתף באתרים אחרים

ארכיון

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


×
  • צור חדש...