ラベル シェル の投稿を表示しています。 すべての投稿を表示
ラベル シェル の投稿を表示しています。 すべての投稿を表示

[Python + ffmpeg] 動画や音楽ファイルのラウドネス値を正規化 ※いい感じの大きさの音量にする

#!/usr/bin/python3
# -*- coding:utf-8 -*-
# pylint: disable=too-many-lines,too-many-arguments
import json
import os
import re
import subprocess
import sys

filename = sys.argv[1]


# 対象ファイルを解析する
# ・youtube等での基準を指定(ラウドネス値 -14LUFS)
# ・処理結果は指定した基準に近づけるための補正値
#
# 参考資料
# FFmpeg Filters Documentation | 8.97 loudnorm
# https://ffmpeg.org/ffmpeg-filters.html#loudnorm
#loudnorm = "I=-14:LRA=7:TP=-1.5"
loudnorm = "I=-17:LRA=7.0:TP=-2.0"
#loudnorm = "I=-24:LRA=15:TP=-1.5"
command = [
    'ffmpeg',
    '-i', f"{filename}",
    '-af', f"loudnorm={loudnorm}:print_format=json",
    '-f', 'null',
    '-',
]
res = subprocess.run(
   command, encoding='utf-8', capture_output=True, check=False, text=True)
result = re.match(r'.*(\{.*?\}).*', res.stderr, re.DOTALL)
measured = json.loads(result.group(1))


# ラウドネス正規化
basename = os.path.basename(filename)
normname = "{0[0]}_normalized{0[1]}".format(os.path.splitext(basename))
param = (
    f":measured_I={measured['input_i']}"
    f":measured_LRA={measured['input_lra']}"
    f":measured_TP={measured['input_tp']}"
    f":measured_thresh={measured['input_thresh']}"
    f":offset={measured['target_offset']}"
)
command = [
    'ffmpeg',
    '-y',
    '-i', f"{filename}",
    '-af', f"loudnorm={loudnorm}{param}",
    f"{normname}"
]
res = subprocess.run(
   command, encoding='utf-8', capture_output=True, check=False, text=True)
print(f'generated: {normname}')

[bash] カレントパスの画像からEXIFを除去する

#!/bin/bash

LIST="jpg jpeg png bmp tiff"

for EXT in $LIST
do
    FILES="*.$EXT"
    for FILE in $FILES
    do
        if [ ! -e $FILE ]; then
            continue
        fi
        
        echo "$FILE"
        convert -strip "$FILE" "$FILE"
    done;
done;

[WinXP] マスタブラウザを見つける

ネットワーク上のマスターブラウザになっているPCは、リソースキットのbrowstat コマンドなどで判断できるが、Windows 標準コマンドのnet.exe および nbtstat.exeを使っても判断できる。

1. net view コマンドを実行し、ドメインまたはワークグループからブラウズリストを取得する。
2. コンピュータ名のリストを使って、nbtstat -a <コンピュータ名> コマンドを実行し結果に..__MSBROWSE__.<00> が含まれるコンピュータがマスターブラウザ。
3. <ドメインまたはワークグループ名> <1D> が含まれる場合はセグメントマスターブラウザ
4. <ドメイン名> <1B> が含まれる場合はドメインマスターブラウザ。

@echo off
@echo Looking for master browser(s).
FOR /F "skip=3 delims=\, " %%i IN ('net view') DO FOR /F "skip=4 delims=<,> " %%a IN ('nbtstat -a %%i') DO IF %%a == ..__MSBROWSE__. @echo %%i is Master browser.
@echo Master Browser search is finished.

pause

[bash] ファイル名の前にファイルタイムスタンプを挿入

# ファイルリネーム処理
# for filepath in ( aaa/*.jpg | aaa/*.png)で複数ファイル対応可能?
# 拡張子の大小未対応
files="$inPath/*.JPG"
for filepath in ${files}
do
filename=`basename ${filepath}`
timestamp=`ls -d -l --time-style='+%Y%m%d' ${filepath} | cut -d ' ' -f 6`

echo "  $filename >>>> $timestamp-$filename"
`cp -p ${filepath} "${outPath}/${timestamp}-${filename}"`
done