オーディオ/ビデオファイルを変換するためのデスクトップエントリ(名前の質問)

Mar 03 2020

私の質問:オーディオ/ビデオファイルを変換するために(kde dolphins servicemenu)にデスクトップエントリを作成したいと思います。

私は以下でそれを試しました:

[Desktop Entry]
Actions=Convertwav2Mp3
Icon=audio-x-flac
MimeType=audio/*
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
X-KDE-Priority=TopLevel

[Desktop Action Convertwav2Mp3]
Exec=ffmpeg -i %f -codec:a libmp3lame -b:a 320k .out.mp3 && mv .out.mp3 %f
Icon=audio-x-flac
Name=Convertwav2Mp3

/ usr / share / kservices5 / ServiceMenus /に入れると、チャームのように機能します。

ただし、mvコマンドは、出力ファイルの名前を、ファイル拡張子が付いた元のファイル名に変更します(wavですが、mp3である必要があります)。

Execフィールド内でコマンドの名前をfile.wavからfile.mp3に変更するにはどうすればよいですか?

回答

NathanielM.Beaver Jul 14 2020 at 23:02

オプション#1:.mp3を追加する

Exec=ffmpeg -i %f -codec:a libmp3lame -b:a 320k %f.mp3

これにより、たとえば変換が行われます

my_file.wav

my_file.wav.mp3

これは望ましくない場合があります。

おもしろい事実:次の%nようなベース名を与えるキーが使用されていました:

Exec=ffmpeg -i %f -codec:a libmp3lame -b:a 320k %n.mp3

FreeDesktop仕様では、これはバージョン1.0から非推奨としてリストされています。

非推奨のExecフィールドコード:...%n(ファイルのベース名)..。

https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.0.html

これは古いバージョンのDolphinで機能した可能性がありますが、私が使用したバージョン(17.12.3)では、%nキーはキーと同じように機能する%fため、これは期待どおりに機能しません。

オプション#2:bashパラメーター展開を使用する

代わりにこれを取得するには:

my_file.mp3

ファイル拡張子を削除する必要があります。これは、bashパラメーター展開を使用して実現できます。

Exec=bash -c 'wavfile='\''%f'\''; mp3file="${wavfile%.wav}.mp3"; ffmpeg -i '\''%f'\'' -codec:a libmp3lame -b:a 320k "$mp3file"'

Execキーが渡されるため、bashを明示的に呼び出す必要があり/bin/shます。これは、この構文をサポートしていません。

警告

これらのオプションは両方とも、スペースを含むファイル名で機能します。ただし、次のような他の場合は期待どおりに機能しません。

  • MP3ファイル名がすでに存在する場合、サイレントに失敗します。

  • WAVファイル名に$0またはなどのパラメータ拡張文字列が含まれている場合、$USERサイレントに失敗します。

  • WAVファイル名のようなコマンドの置換文字列が含まれている場合`date`かを$(date)それは黙って失敗します。

  • WAVファイル名がたとえばのexample.WAV代わりにある場合、example.wav結果はexample.WAV.mp3。になります。

これらの問題をより扱いやすく、デバッグしやすくするために、別のシェルスクリプトを作成し、それを直接呼び出すことをお勧めします。多くの例があります:

  • m4aサウンドファイルをmp3に変換する方法は?

  • オーディオをoggからmp3に変換するにはどうすればよいですか?

  • コマンドラインを介してmp3ファイルをoggに一括/バッチ変換しますか?

  • mp4からmp3への変換

  • ffmpegでmp4のフォルダをmp3に変換しますか?

さらなるコメント

余談ですが、あなたはすでにこれを知っているかもしれませんが、デスクトップファイルはにコピーすることができます

~/.local/share/kservices5/ServiceMenus/

の代わりに

/usr/share/kservices5/ServiceMenus/

これは、シングルユーザー用にインストールする場合、またはroot権限を持たない場合に便利です。

最後に、私は使用することをお勧めします

MimeType=audio/x-wav

の代わりに

MimeType=audio/*

これはWAVファイルでのみ機能するためです。

関連する質問:

  • FFmpegによるダブルファイル拡張子