최신 Ubuntu로 업그레이드하기 전에 다음 명령을 사용하여 avi 파일에서 mp3를 추출했습니다.
$ for x in *.avi; do ffmpeg -vol 100 -ab 160k -ar 44100 -i "$x" "`basename "$x" .avi`.mp3"; done
이것은 효과가 있었습니다. 하지만 우분투 12.04부터 나는옵션 샘플_레이트를 찾을 수 없습니다.이 명령을 실행하려고 할 때. 내가 생략하면-ar 44100(또는 -sample_rate 44100) mp3를 추출하지만 대부분의 경우 추출된 mp3의 길이가 더 이상 맞지 않습니다. 즉, avi의 길이는 5분에 불과하지만 길이는 약 43분입니다.
ffmpeg와 avconv 모두 동일한 문제가 있습니다. 이러한 문제를 해결하는 방법에 대한 아이디어가 있습니까?
답변1
대신 이것을 사용해 보세요:
ffmpeg -i "$x" -vol 100 -ab 160k -ar 44100 "`basename "$x" .avi`.mp3"
이전에는 옵션이 입력 파일 앞에 있었지만 출력 파일에 대해 설정하려는 것 같습니다.
답변2
다른 avi 파일을 사용해 보셨나요? 파일의 오디오 트랙은 비디오 트랙보다 길 수 있습니다(추측일 뿐입니다).
-t 옵션을 사용해 보셨나요?
-t duration
Restrict the transcoded/captured video sequence to the duration
specified in seconds. "hh:mm:ss[.xxx]" syntax is also supported.
ffmpeg에서 오디오 비트스트림 필터를 설정해 볼 수도 있습니다. 나는 그것을 시도한 적이 없지만 "remove_extra" 필터가 유망해 보입니다. ;)
-absf bitstream_filter
Bitstream filters available are "dump_extra", "remove_extra",
"noise", "mp3comp", "mp3decomp".
파일에 대한 정보를 확인하고 이에 따라 옵션을 설정하기 위해 ExifTool과 같은 명령을 사용하는 것을 고려해 보셨나요(아마도 출력을 구문 분석하고 스크립트에서 자동화하는 것까지 가능)?
무손실 형식으로 오디오 파일을 추출한 다음 오디오 파일을 트랜스코딩할 수도 있지만 이보다 더 좋은 방법이 있어야 합니다.
문제가 해결되면 수행한 작업을 게시해 주세요. 저는 역다중화에 필요한 1000개의 비디오 파일을 처리하는 확실한 방법이 마음에 들지 않습니다. 나는 당신과 비슷한 스크립트를 만들었지만 공간을 낭비하지 않고 가능한 최고 품질의 오디오 파일을 얻고 싶었습니다. 내 트랜스코딩 옵션은 확실히 동적이므로 한 줄보다 더 복잡한 것이 필요합니다.
답변3
ffmpeg -version은 Ubuntu 12.04용 ffmpeg를 컴파일할 때 어떤 빌드 옵션이 활성화되었는지 알려줍니다. 라이브러리가 누락되었거나 빌드 중에 옵션이 활성화되지 않았을 수 있으며 비활성화된 옵션을 활성화한 상태로 다시 컴파일해야 합니다. ffmpeg의 기본 샘플 속도는 44100이고 비트 전송률은 64k입니다.
답변4
ppa:jon-severinsson/ffmpeg에서 ffmpeg용 ppa를 설치하면 문제가 해결됩니다.