오디오 / 비디오 파일을 변환하기위한 데스크탑 항목 (이름 지정 질문)

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/bin/sh가이 구문을 지원하지 않는를 통해 전달 되기 때문에 bash를 명시 적으로 호출해야 합니다.

주의 사항

이 두 옵션 모두 공백이있는 파일 이름에서 작동합니다. 그러나 다음과 같은 다른 경우에는 예상대로 작동하지 않습니다.

  • MP3 파일 이름이 이미 있으면 자동으로 실패합니다.

  • WAV 파일 이름은 매개 변수 확장 문자열 등이 포함 된 경우 $0또는 $USER이 자동으로 실패합니다.

  • WAV 파일 이름에 `date`or 와 같은 명령 대체 문자열이 포함되어 있으면 $(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/

단일 사용자 용으로 설치하거나 루트 권한이없는 경우에 유용합니다.

마지막으로

MimeType=audio/x-wav

대신에

MimeType=audio/*

이것은 WAV 파일에서만 작동하기 때문입니다.

관련 질문 :

  • FFmpeg를 사용한 이중 파일 확장명