Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
A command line tool to handle a multi audio track video file.
マルチオーディオトラック動画ファイルを取り扱うためのコマンドラインツール
基本的にFFmpegのラッパーです。別途FFmpegのインストールが必要です。 FFmpeg 4.2(Ubuntu 20.04の標準バージョン)および4.4(Ubuntu 22.04の標準バージョン)をサポートしています。
matvtool
本体は、以下からダウンロード・インストールできます。
Pythonパッケージとして導入する場合、Python 3.11をサポートしています。
pip3 install aoirint_matvtool
docker run --rm -v "$PWD:/work" aoirint/matvtoolpy:ubuntu-latest --help
docker run --rm --gpus all -v "$PWD:/work" aoirint/matvtoolpy:nvidia-latest --help
OBS Studioの録画機能やGeForce Experienceの録画機能などで作成した、マルチオーディオトラック動画ファイルを、 マルチオーディオトラックの状態を保ったまま簡易に編集し、後に高度な動画編集ソフトで使う素材として使いやすい形に整えるためのツール。
再エンコードしないため、高速ですが時間精度が低いです。 長時間の録画をおおまかに分割する用途を想定しています。 フレーム単位でクリップしたい場合、後段の動画編集ソフトで改めて加工してください。
matvtool slice -ss 00:05:00 -to 00:10:00 -i input.mkv output.mkv
-vcodec
/--video_codec
オプションで出力映像コーデックを指定できます(未指定時は既定のエンコーダを使用)。
# 左上1600x900を切り取って、1920x1080に拡大
matvtool crop_scale -i input.mkv --crop w=1600:h=900:x=0:y=0 --scale 1920:1080 output.mkv
# 右下1600x900を切り取って、1920x1080に拡大
matvtool crop_scale -i input.mkv --crop w=1600:h=900:x=iw-ow:y=ih-oh --scale 1920:1080 output.mkv
# 左上1600x900を切り取って、1920x1080に拡大、libx264でエンコード
matvtool crop_scale -i input.mkv --crop w=1600:h=900:x=0:y=0 --scale 1920:1080 -vcodec libx264 output.mkv
# 左上1600x900を切り取って、1920x1080に拡大、nvenc_h264でエンコード
matvtool crop_scale -i input.mkv --crop w=1600:h=900:x=0:y=0 --scale 1920:1080 -vcodec nvenc_h264 output.mkv
# 左上1600x900を切り取って、1920x1080に拡大、nvenc_hevcでエンコード
matvtool crop_scale -i input.mkv --crop w=1600:h=900:x=0:y=0 --scale 1920:1080 -vcodec nvenc_hevc output.mkv
動画のスナップショットやクロップ画像を使用して、出現時間・出現フレームを検索します。
特定シーンの頭出しやチャプターを作成する用途を想定しています。
確実・正確に検出できるとは限りません。
出力は、VSCodeのマルチカーソル機能やseq
コマンドなどを使って手動処理することを想定しています(試合1~試合10までの連番文字列生成:seq -f "試合%g" 1 10
)。
slice
と同様のオプションで検索範囲の時間を指定できます。--fps
オプションで比較処理におけるフレームの読み飛ばしができます(コーデックにおけるフレーム間予測の関係で、全フレームのデコードは発生すると思われるため、デコード処理時間が支配的な場合はあまり意味がないと思われます)。
出力は、内部処理における時間・フレームと、入力動画における時間・フレームが併記されます。
-icrop
/--input_video_crop
オプション、-refcrop
/--reference_image_crop
オプションで、入力動画や参照画像の一部を使用した検索ができます。値はcrop_scale
の--crop
オプションと同様です。
特定のアイコンが含まれることがわかっているが、フレーム中の他の部分が大きく違うケースの検索に有用です。
-it
/--output_interval
オプションで、連続出現時の出力を抑制できます。手動処理を減らすためのオプションです。
例えば、-it 10
を指定すると、前回出現してから10秒間のフレームで再び出現を検出しても、ログ出力しません(YouTubeのチャプター機能では、最小チャプター間隔は10秒)。
-p
, --progress_type
オプションで、処理の進捗状況の出力方法を変更できます。
値は、tqdm
標準エラー出力・インタラクティブシェル用(デフォルト)、plain
標準エラー出力・逐次出力、none
出力なし、が利用できます。
処理に時間のかかる長い動画を入力するときは、tee
コマンドなどで出力を永続化したり、tmux
コマンドなどでバックグラウンド処理したりすると便利です。うまく出力が表示されないときは、一時的に環境変数PYTHONUNBUFFERED=1
を設定すると改善するかもしれません。
# reference.pngに一致するフレームを検索
matvtool find_image -i input.mkv -ref reference.png
# 10 FPSでreference.pngに一致するフレームを検索(フレームの読み飛ばしによる高速化を意図)
matvtool find_image -i input.mkv -ref reference.png --fps 10
# 左上1600x900を使用してreference.pngに一致するフレームを検索
matvtool find_image -i input.mkv -icrop w=1600:h=900:x=0:y=0 -ref reference.png -refcrop w=1600:h=900:x=0:y=0
# 最小10秒間隔で同上、10 FPS、出力永続化
PYTHONUNBUFFERED=1 matvtool find_image -i input.mkv -icrop w=1600:h=900:x=0:y=0 -ref reference.png -refcrop w=1600:h=900:x=0:y=0 --fps 10 -it 10 | tee chapters.txt
matvtool audio -i input.mkv
matvtool select_audio -i input.mkv --audio_index 2 3 -- output.mkv
Python 3.11を使って開発しています。
依存関係の管理にPoetryを使っています。
# Pythonパッケージを追加
poetry add pydantic
poetry add --group dev pytest
FAQs
A command line tool to handle a multi audio track video file
We found that aoirint-matvtool demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.