Linux系OSのブログです - 設定メモやアプリケーションを紹介 - デスクトップ用途の記事多め
Google
 
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2011年02月15日 (火) | 編集 |
dolphin_script.jpg
Dolphinで右クリックメニューを追加した様子と図解
Ubuntu10.04、KDE4.4.2、Dolphin1.4
(サンプルファイルは某動画サイトより拝借した東方動画)

Konqueror で右クリックメニューを追加する要領で、Dolphinでも使うことが出来るようになっていました。
スクリプトだけ記述して放りこめば使えるNautilus Scriptよりも少し手間がかかって、扱いも少し難です。

簡単ではあるので、押さえておけば支障無い程度のまとめをしてみました。

例題として作成し、以下に記述したスクリプトは、flvなどの動画ファイルからmp3などの音声ファイル部分を劣化なしでオリジナルの抽出をするものです。

同じ動作をするNautilus用のスクリプトはこちら
Nautilusスクリプト 動画ファイルから音声を抽出する方法
前準備
[右クリックメニューを出す為のファイル置場]
$ kde4-config --path services
と端末エミュなどでタイプし
/home/USER_NAME/.kde/share/kde4/services/:/usr/share/kde4/services/
とメッセージがなっていたら
/home/USER_NAME/.kde/share/kde4/services/ServiceMenus/
が有効になっています。

[Dolphin用のスクリプトファイル置場]
$ echo $PATH
と端末エミュなどでタイプし
/home/USER_NAME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
と/.kde/が含まれていなければ

~/.bash_profile
のファイルへ
if [ -d ~/.kde/bin ] ; then
PATH=~/.kde/bin:"${PATH}"
fi

と3行のコードを含め
$ source ~/.bash_profile
と端末エミュでタイプするか、もしくは再度ログアウト&ログインし
$ echo $PATH
と端末エミュなどで再度タイプすれば
/home/USER_NAME/.kde/bin:/home/USER_NAME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
と~/.kde/bin/に仕込んだ実行ファイルが動作するのを確認できます。
(不安があれば、このディレクトリをroot権限にしておくのも良いかもしれません)

右クリックメニューを出すファイルの作成
/home/USER_NAME/.kde/share/kde4/services/ServiceMenus/
へ、テキストファイルを作成し、以下を記述します。
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=video/*
Actions=video
X-KDE-Submenu=File Convert
X-KDE-Submenu[ja]=ファイル変換
Encoding=UTF8

[Desktop Action video]
Name=Video2Audio
Name[ja]=動画から音声を抽出
Icon=audio-basic
Exec=bash video2audio.sh %F


[補足]
場合によってこうすると、全てのファイル形式で右クリックメニューが出るようになります。
ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
この場合、下の MimeType を挿入する必要は無くなります。

ファイルタイプを1つづつ決め打ちでこう指定する事も可能です。
MimeType=video/avi;video/mp4;video/mpeg;video/msvideo;video/ogg;video/quicktime;video/theora;video/vnd.rn-realvideo;application/vnd.rn-realvideo;video/x-matroska;video/x-mpeg;video/x-mpeg2;video/x-ms-asf;video/x-msvideo;video/x-ms-wmv;video/x-ogg;video/x-ogm;video/x-quicktime;video/x-theora;video/x-avi;video/x-flv
しかし、面倒であるので例の様に
MimeType=video/*
と、videoグループ全てを指定すれば簡単になります。

Exec=bash video2audio.sh %F
この部分が実行されます。
ワンライナーのスクリプトを記述しても構いません。
例の様に別スクリプトへ渡してあげれば、複雑なものも実行しやすくなります。
もちろん ~/.kde/bin/ を利用しなくても、直接パスを指定する事により実行が可能です。

ファイルタイプを処理毎に分ける記述はできないので、別の.desktopファイル内に記述をする他ありません。
サブメニュー名を同じくすれば、カテゴリー毎の処理が可能になります。

Dolphin用スクリプト
以下を~/.kde/bin/にテキストファイルを作成し、記述、右クリックから実行権限を付与するチェックを入れます。
ffmpeg を利用しているので、Synapticなどでインストールする必要があります。

#!/bin/bash
for (( I=0; I < $#; ++I ))
do
l_FILE=${BASH_ARGV[$I]}
if va=`file "$l_FILE" --mime-type|grep x-flv`; [ -n "$va" ] ; then
ffmpeg -i "$l_FILE" -acodec copy "${l_FILE%.*}.mp3"
elif va=`file "$l_FILE" --mime-type|grep mp4`; [ -n "$va" ] ; then
ffmpeg -i "$l_FILE" -acodec copy "${l_FILE%.*}.aac"
elif va=`file "$l_FILE" --mime-type|grep asf`; [ -n "$va" ] ; then
ffmpeg -i "$l_FILE" -acodec copy "${l_FILE%.*}.wma"
elif va=`file "$l_FILE" --mime-type|grep msvideo`; [ -n "$va" ] ; then
ffmpeg -i "$l_FILE" -acodec copy "${l_FILE%.*}.mp3"
fi
done


↓よくよく考えたらこうすれば良かったのでした。(動作は同じ)

#!/bin/bash
for F
do
if va=`file "$F" --mime-type|grep x-flv`; [ -n "$va" ] ; then
ffmpeg -i "$F" -acodec copy "${F%.*}.mp3"
elif va=`file "$F" --mime-type|grep mp4`; [ -n "$va" ] ; then
ffmpeg -i "$F" -acodec copy "${F%.*}.aac"
elif va=`file "$F" --mime-type|grep asf`; [ -n "$va" ] ; then
ffmpeg -i "$F" -acodec copy "${F%.*}.wma"
elif va=`file "$F" --mime-type|grep msvideo`; [ -n "$va" ] ; then
ffmpeg -i "$F" -acodec copy "${F%.*}.mp3"
fi
done


↓サウンド形式の判定が不十分だったりしたので、書き直しました。(2011年2月15日追記)

#!/bin/bash

for F do
audio=`ffmpeg -i "$F" 2>&1|grep Audio|awk -F"," '{print $1}'|awk -F": " '{print $3}'`
case "$audio" in
"mp3" ) ffmpeg -i "$F" -acodec copy "${F%.*}.mp3" ;;
"aac" ) ffmpeg -i "$F" -acodec copy "${F%.*}.aac" ;;
"wma" ) ffmpeg -i "$F" -acodec copy "${F%.*}.wma" ;;
esac
done

#echo "$audio" > /tmp/audio.txt
#flvに内包されるサウンド形式のサンプルバリエーションが少なかったので、mp3とaac以外は未検証です。
#元データと同じ形式で劣化せずにcopyかけるという方式がスクリプトの目的です。
#書き出されない形式があれば、echoの行などを使い、適当にトラップしてスクリプトを書き換えてください。
#aacであれば、mp3に変換する形式などへも、ffmpegを参考に書き換えると良いです。

[補足]
上記の例は複数ファイルを選択した場合にも対応しています。
$BASH_ARGVの配列へ収納され(Ubuntu以外は違う動作をするかもしれません)、最後の収納された配列までループして実行されます。
送られた文字列(ファイルのフルパス)を各種操作するスクリプトを書けば、様々な処理が実行可能です。




雑記
KDE4になった直後、ファイラーがKonquerorからDolphinになって困ったのが、右クリックメニューを追加できない事でした。
どうやっても動いてくれないので、暫くDolphinを放り投げていました。

いつから使えるようになったのか調べていませんが、もうKonquerorに未練は無くなりました。
kffmpegthumbnailer のビデオファイルサムネイルを組み合わせれば、Dolphin は満足のゆく出来になりました。

ただ、少し右クリックメニューを整備するのが少し面倒です。
(ほとんどKDE3の頃と同じ形式)
KDE4によって、もっと進化できたのではないかと。
テーマ:Linux
ジャンル:コンピュータ
スポンサード リンク
----------------------------------------------------------

コメント
この記事へのコメント
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
2011/03/17(Thu) 19:01 |   |  #[ 編集]
コメントを投稿
コメント:
Pass:
秘密: 管理者にだけ表示を許可
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。