오디오 / 비디오 파일을 변환하기위한 데스크탑 항목 (이름 지정 질문)
내 질문 : 오디오 / 비디오 파일을 변환하기 위해 (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로 이름을 바꾸는 명령을 어떻게 변경할 수 있습니까?
답변
옵션 # 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를 사용한 이중 파일 확장명