Вычисление битрейта

Вычисление битрейта


Windows

bitrate.bat

@echo off

IF "%~1"=="" (
 echo Error.
 pause
 exit
)

set "video_file=%~1"

for /f "tokens=*" %%a in ('ffprobe -v error -show_entries format^=duration -of default^=noprint_wrappers^=1:nokey^=1 "%video_file%"') do set "duration=%%a"

set /p "size=File size (X mb): "

set /p "audio_bitrate=Audio bitrate in kbps: "

set /a "size_kb=size*8192"

for /f "usebackq tokens=*" %%a in (`powershell.exe -command "[Math]::Round(%size_kb% / %duration%, 2)"`) do set "video_bitrate=%%a"

set /a "final_bitrate=video_bitrate-audio_bitrate"

echo Max bitrate: %final_bitrate% kbps

pause



Linux

https://www.gnu.org/software/bc/

bitrate.sh

#!/bin/sh
video_file="$1"
if [ -z "$video_file" ]; then
  echo "Укажите видеофайл в качестве аргумента."
  exit 1
fi

duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$video_file")
if [ -z "$duration" ]; then
  echo "Ошибка."
  exit 1
fi

read -p "Целевой размер (X; X.X мб): " megabytes
if ! [[ "$megabytes" =~ ^[0-9]+([.][0-9]+)?$ ]]; then
  echo "Неверное значение."
  exit 1
fi

read -p "Предполагаемый битрейт аудио (X кбит/с): " baudio
if ! [[ "$baudio" =~ ^[0-9]+$ ]]; then
  echo "Неверное значение."
  exit 1
fi

kilobits=$(echo "$megabytes * 8192" | bc)

bitrate=$(echo "scale=0; $kilobits / $duration" | bc)

video_bitrate=$(echo "$bitrate - $baudio" | bc)

echo "Максимальный битрейт видео: $video_bitrate кбит/с"





Report Page