ホームコレクションの写真およびビデオファイル-処理と保存

まえがき


私のようなアマチュア写真家は皆、私の写真を処理して保存する最良の方法の選択に直面したと思います。 この記事では、このトピックに触れて、自分のバージョンを提案したいと思います。 私は本当に他のユースケースを聞きたいです。

そのため、Linuxシステムでタスクを実行して快適に作業できるようになりました。したがって、すべてのLinuxスクリプトです。 しかし、軸は主なものではなく、主なものは正しいアプローチです。



私はRAWのアマチュアSLRで写真を撮り、その後、すべてをJPGに転送します。これは、オリジナルと共にNASに保存されます。 すべては日付でソートされ、個々のイベントには将来の検索を容易にするためにタグが付けられます。 また、1080pビデオカメラで撮影します。

カメラ/ビデオカメラのSDカードはLinuxのネットトップに挿入され、メインキャラクターである24時間動作します。 次に、udevを介してデバイス名が割り当てられるため、独自の方法でカードを呼び出して、事前に準備されたスクリプトを実行できます(udevルールのコンパイルの詳細については、 こちらを参照してください )。 私のルールのバージョンは次のとおりです。

$ cat /etc/udev/rules.d/81-local.rules



KERNEL=="sdb1", SUBSYSTEM=="block", ATTR{size}=="63395840", NAME="SDcard_camcorder", RUN+="/usr/bin/zprocess_sd.sh" KERNEL=="sdb1", SUBSYSTEM=="block", ATTR{size}=="7919616", NAME="SDcard_camera", RUN+="/usr/bin/zprocess_sd.sh"
      
      







カードのサイズ(ATTR {size})に応じてカードに異なる名前(NAME)を割り当て、その後スクリプト(RUN)を実行します。 デバイスのパラメーターは、udevinfoまたはudevadm(ディストリビューションに応じて)を使用して確認できます。

udevadm info -a -p `udevadm info -q path -n /dev/sdb`





(/ dev / sdbの代わりにデバイスを置きます)

ルールを作成する場合、デバイス一意に識別することが重要です 。そうしないと、RUN + =の後に指定されたコマンドが複数回起動され、混乱が生じます。

Udevは単純なスクリプト/usr/bin/zprocess.shを実行し、SDカードから情報を移動してソートを実行します。

 #!/bin/bash { sleep 10 su igor -c "/home/igor/scripts/move_from_sd.pl"; umount /dev/SDcard_cam*; su igor -c "/home/igor/scripts/sort.pl"; } &
      
      







move_from_sd.plは、カードの内容をNASのto_sortフォルダーに移動し、ログに書き込み、作業の完了時に5回きしむ-カードを引き出すことができます。

 #!/usr/bin/perl -w use strict; use File::Copy; use File::Find; my $today = `date +%F_%T`; my $logfile = "/mnt/tank/media/move_from_sd_$today.log"; my @mount_string = split /\s+/, `mount|grep -i sdcard`; my $to_sort_folder = "/mnt/tank/media/to_sort/"; open LOGFILE, ">>$logfile" or die "Cannot create logfile: $!"; select LOGFILE; if (defined $mount_string[2]) { print "SD card is mounted on $mount_string[2]\n"; find(\&movefiles, $mount_string[2]); } else { print "SD card is not mounted!\n"; } sub movefiles { if (/(\.CR2$|\.MTS$)/) { print "Old file: $_\n"; my $newfile = $to_sort_folder . $_; print "New file: $newfile\nMoving file...\n"; if (-e $newfile) { $newfile = "$newfile"."_1"; move ($_, $newfile); print "Done! Had to rename to $newfile\n"; } elsif (move ($_, $newfile)) { print "Done!\n"; } else { print "moving $_ to $newfile failed: $!\n"; } } } `beep -D 300 -l 700 -r 5`;
      
      







このスクリプトを使用して、ビデオカメラからAVCHDファイルもドロップします。 CR2およびMTSの代わりにファイルタイプを配置します。 私はプログラマーではないので、コードを熱くしないでください。



sort.plは、exiftoolを使用して、日付、月、年ごとにファイルをフォルダーにソートします。

 #!/usr/bin/perl -w use strict; my $today = `date +%F_%T`; my $logfile = "/mnt/tank/media/sort_$today.log"; my $raw_video_dir = "/mnt/tank/media/AVCHD"; my $video_dir = "/mnt/tank/media/Videos"; my $raw_photo_dir = "/mnt/tank/media/RAW"; my $photo_dir = "/mnt/tank/media/Pictures"; my $to_sort_dir = "/mnt/tank/media/to_sort"; open LOGFILE, ">>$logfile" or die "Cannot create logfile: $!"; select LOGFILE; foreach (<$to_sort_dir/*.MTS>) { if (! /\d+_\d+\.MTS/) { print "Renaming file $_..\n"; `exiftool '-FileName<DateTimeOriginal' -d %Y%m%d_%H%M%S%%-c.%%e $_`; } } foreach (<$to_sort_dir/*.MTS>) { chdir($raw_video_dir); print "Copying video file $_ into AVCHD ($raw_video_dir) folder..\n"; `exiftool -o . '-Directory<DateTimeOriginal' -d %Y/%m/%d $_`; chdir($video_dir); print "Moving video file $_ into Videos ($video_dir) folder..\n"; `exiftool '-Directory<DateTimeOriginal' -d %Y/%m/ $_`; } foreach (<$to_sort_dir/*.CR2>) { chdir($raw_photo_dir); print "Copying photo file $_ into RAW ($raw_photo_dir) folder..\n"; `exiftool -o . '-Directory<DateTimeOriginal' -d %Y/%m/%d $_`; chdir($photo_dir); print "Moving photo file $_ into Pictures ($photo_dir) folder..\n"; `exiftool '-Directory<DateTimeOriginal' -d %Y/%m/ $_`; }
      
      







まず、ビデオカメラのファイルの名前をYYYYMMDD_HHMMSSに変更します。 to_sortのすべてのオリジナル-RAWおよびAVCHDファイル-それぞれRAWおよびAVCHDフォルダーの年/月/日のDateTimeOriginalスナップショットの日付に従ってコピーします。 次に、すべてを写真とビデオのフォルダーに移動します-同じ方法で、ただし年/月に移動します。 おおよそフォルダー内のファイルの分布が判明します。

-> RAW-> 2011-> 11-> 12

IMG1234.CR2

IMG1236.CR2

-> AVCHD-> 2011-> 11-> 10

20111110_112323.MTS

->写真-> 2011-> 11

IMG1234.CR2

IMG1236.CR2

->ビデオ-> 2011--11

20111110_112323.MTS

画像と動画フォルダ内で既に変換しますが、元の画像には触れません。



変換


写真はピクチャフォルダーに変換されます。 RAW処理にはRAWTherapeeを使用します

プログラムの設定では「ファイルの横に処理パラメータを保存」が設定されているため、RAWファイルを変更した後、変換プロファイルである拡張子pp3の同じファイルが表示されます。 JPGへの変換は、次のスクリプトを使用してクラウンに従って1日に3回行われ、完了時にRAWファイル自体が削除されます。



 #/usr/bin/perl use strict; use warnings; use File::Find; my $today = `date +%F_%T`; my $logfile = "/mnt/tank/media/raw_conversion_$today.log"; my $photo_dir = "/mnt/tank/media/Pictures/"; my $rt_path = "/home/igor/RawTherapee/rawtherapee"; open LOGFILE, ">>$logfile" or die "Cannot create logfile: $!"; select LOGFILE; find(\&convert, $photo_dir); sub convert { if (/\.CR2$/) { print "----"x7 . "\n"; print "Converting $_ into jpeg..\n"; print (my $result = `$rt_path/rawtherapee -o . -S -j67 -c $_ 2>&1`); (my $picture = $_) =~ s/CR2/jpg/; my $pp3 = $_ . ".pp3"; if (-e "$picture") { unlink $_; unlink $pp3; } } }
      
      







変換自体はrawtherapee -oコマンドです。 -S -j67 -c

同じディレクトリ(-o。)、バッチモード(-c)で圧縮67を使用してJPGに変換します。 -Sオプションは、対応するpp3ファイル(-S)がない場合(つまり、表示/変更されたRAWファイルのみ)、rawtherapeeがRAWファイルをスキップすることを意味します。 -sフラグを設定し、変換に使用されるプロファイルの名前を-pを介して指定できます。



ビデオはビデオフォルダーに変換されます。既存のすべてのMTSファイルはHandBrakeCLIを使用してMKVに変換されます。 クラウンのために1日2回実行されます。

 #!/usr/bin/perl -w use strict; use File::Find; my $today = `date +%F_%T`; my $logfile = "/mnt/tank/media/mts_conversion_$today.log"; my $video_dir = "/mnt/tank/media/Videos"; open LOGFILE, ">>$logfile" or die "Cannot create logfile: $!"; select LOGFILE; find(\&convert, $video_dir); sub convert { if (/MTS$/) { (my $outfile = $_) =~ s/MTS/mkv/; print "Converting $_ into $outfile ...\n"; `HandBrakeCLI -e x264 -q 20 -f mkv -i $_ -o $outfile`; unlink $_; } }
      
      







その結果、PicturesおよびVideosフォルダーにはJPGとMKVがあります。

さらに表示と評価、タグ付け、Picasa / FlickrへのアップロードShotwellで行います。



おわりに


このようにして、職場のラップトップをアンロードし、すべての変換がホームネットワーク上の別のホストで自動的に行われるようになりました。 すべての写真とビデオはRAID-6のNASに保存されるため、ラップトップで何かが起こっても心配する必要はありません。

彼らが言うように、Tim Towdy、私はあなたがあなたの写真とビデオファイルをどのように処理し、保存するか、特にGNU / Linux OSを使用して聞いてうれしいです。



All Articles