최신 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은 ffmpeg가 Ubuntu 12.04용으로 컴파일될 때 어떤 빌드 옵션이 활성화되었는지 알려줍니다. 라이브러리가 누락되었거나 빌드 시간 동안 옵션이 활성화되지 않았을 수 있으므로 비활성화된 옵션을 활성화한 상태로 다시 컴파일해야 합니다. ffmpeg의 기본 샘플 속도는 44100이고 비트 전송률은 64k입니다.
답변4
ppa:jon-severinsson/ffmpeg에서 ffmpeg의 ppa를 설치하면 문제가 해결됩니다.