Показ дописів із міткою ffmpeg. Показати всі дописи
Показ дописів із міткою ffmpeg. Показати всі дописи

Вирізка аудіо з відео та оцифровка в текст

Вирізка аудіо з відео

# ffmpeg -i video.mp4 -q:a 0 -map a audio.mp3

Оцифровка тексту з аудіофайлу

# whisper файл.mp4 --language Ukrainian

zoneminder: images to avi converter

#!/bin/bash

MYSQL_HOST="localhost"
MYSQL_USER="user"
MYSQL_DB="zm"
MYSQL_PASS="pass"

CACHE_DIR="/var/cache/zoneminder/events"
VIDEO_DIR="video-archive"
cameras=(
 5 # kafedra
 1 # krapka1
 2 # krapka2
 6 # krapka2in
 3 # krapka3
 4 # stoyanka
)

for i in ${cameras[@]}; do
    echo
    echo "Monitor $i"
    echo

    if [ ! -d $CACHE_DIR/$i/$VIDEO_DIR ]; then
 mkdir $CACHE_DIR/$i/$VIDEO_DIR
    fi

    IFS=$'\t\n'
    #MYSQL_RESULT=(`mysql --skip-column-names -h$MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASS $MYSQL_DB -e "SELECT StartTime, EndTime FROM Events WHERE MonitorId='$i' AND EndTime IS NOT NULL"`)
    MYSQL_RESULT=(`mysql --skip-column-names -h$MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASS $MYSQL_DB -e "SELECT StartTime FROM Events WHERE MonitorId='$i' AND EndTime IS NOT NULL"`)
    IFS=$' \t\n'

    for (( j=0 ; j<${#MYSQL_RESULT[*]}; j++ )) ; do 
 echo "${MYSQL_RESULT[j][1]}"
 PARSED_DATE=(`echo ${MYSQL_RESULT[j]} | sed -e 's/[:-]/ /g'`)
 YEAR=${PARSED_DATE[0]:2:3}
 MONTH=${PARSED_DATE[1]}
 DAY=${PARSED_DATE[2]}
 HOUR=${PARSED_DATE[3]}
 MINUTE=${PARSED_DATE[4]}
 SECOND=${PARSED_DATE[5]}
 #echo ${PARSED_DATE[*]}

 if [ -d  $CACHE_DIR/$i/$YEAR/$MONTH/$DAY/$HOUR/$MINUTE/$SECOND ]; then
     ffmpeg -f image2 -framerate 5 -r 5 -i $CACHE_DIR/$i/$YEAR/$MONTH/$DAY/$HOUR/$MINUTE/$SECOND/%03d-capture.jpg -s 640x480 $CACHE_DIR/$i/$VIDEO_DIR/${YEAR}.${MONTH}.${DAY}-${HOUR}.${MINUTE}.${SECOND}.avi
     rm -rf $CACHE_DIR/$i/$YEAR/$MONTH/$DAY/$HOUR/$MINUTE/$SECOND
 fi
 
    done
done

Робимо з серії JPEG-файлів відео-файл в Zoneminder

Все просто, r - кількість кадрів за секунду (можна глянути в налаштуваннях камери), -b - бітрейт (якість).

ffmpeg -r 5 -b 1800 -i %03d-capture.jpg out.mp4

пакетна нормалізація звуку в avi файлах

Є старий DVD-плеєр в публічному місці, який не має функції shuffle (випадкового програвання файлів з плей-ліста), крім того, старі відео-файли мають різний рівень звуку, що створює певні незручності.
Погуглив віндові рішення, але нічого толкового і безкоштовного не знайшов. Тож лінукс виручає, як завжди.


#!/bin/bash

IN_DIR="music_in"
OUT_DIR="music_out"

for i in `ls $IN_DIR`; do
##### extract MP3 file
ffmpeg -i $IN_DIR/$i $OUT_DIR/$i.mp3
##### normalize MP3 file
normalize -m -v $OUT_DIR/$i.mp3
##### remove MP3 from AVI
ffmpeg -i $IN_DIR/$i -vcodec copy -an $OUT_DIR/$i.avi
##### merge AVI and new normalized MP3
ffmpeg -i $OUT_DIR/$i.avi \
-i $OUT_DIR/$i.mp3 \
-vcodec copy \
-acodec copy \
$OUT_DIR/$i.new.avi
##### remove temp files
rm -f $OUT_DIR/$i.mp3
rm -f $OUT_DIR/$i.avi
##### change filename to random
mv $OUT_DIR/$i.new.avi $OUT_DIR/$RANDOM.avi
done