짧은 : 내 안드로이드 애플 리케이션에서 ffmpeg로 변환 된 사운드 파일을 재생하려고하지만, 일하는 데 문제가 발생.ffmpeg를 사용하여 안드로이드 애플 리케이션에서 사용하기 위해 사운드 파일을 변환
long : 우리는 아이폰 앱과 안드로이드 앱이 같은 일을하고 있으며, 사용자 상호 작용에서 사운드를 재생하는 기능을 포팅해야합니다. aiff
형식의 소스 파일을 가지고 있으며이를 Android 용 mp3
으로 변환하려고 시도했습니다. 이 파일을
AssetFileDescriptor fileDescriptor = context.getResources().openRawResourceFd(resid);
final MediaPlayer mp = new MediaPlayer();
mp.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getLength());
fileDescriptor.close();
mp.prepare();
더 구체적으로, mp.setDataSource
충돌을로드 할 때하지만 응용 프로그램이 충돌 유지합니다. 일부 파고 들자면 인코딩에 문제가 있다고 생각하게되었습니다. 사운드 파일 자체는 res/raw에 있습니다.
11-29 17:11:48.012: ERROR/SoundManager(15580): java.io.IOException: setDataSourceFD failed.: status=0x80000000
11-29 17:11:48.012: ERROR/SoundManager(15580): at android.media.MediaPlayer.setDataSource(Native Method)
...
는 내가 뭘하려합니다 :
- 이미 다른 장소에서 같은 코드로 사용되는 다른 MP3를 사용. 이 작품.
- 은 wav 파일로 변환되었습니다. 이로 인해 앱이 충돌하지는 않지만 소리가 나지 않았습니다. 그것은 다른 문제 일 수 있습니다.
- 을 ogg로 변환했습니다. 다음과 같이
그래서,하여 ffmpeg
변환 매개 변수는 추락 다음 android.media.MediaPlayer로드 할 때 VLC와 충돌에서 재생되지 않습니다
$ ffmpeg -i click_24db.aif -f mp3 ~/foobar/wheel_click.mp3
ffmpeg version 0.7.8, Copyright (c) 2000-2011 the FFmpeg developers
built on Nov 24 2011 14:31:00 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3)
configuration: --prefix=/opt/local --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libopenjpeg --enable-libxvid --enable-libx264 --enable-libvpx --enable-libspeex --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/gcc-4.2 --arch=x86_64 --enable-yasm
libavutil 50. 43. 0/50. 43. 0
libavcodec 52.123. 0/52.123. 0
libavformat 52.111. 0/52.111. 0
libavdevice 52. 5. 0/52. 5. 0
libavfilter 1. 80. 0/1. 80. 0
libswscale 0. 14. 1/0. 14. 1
libpostproc 51. 2. 0/51. 2. 0
Input #0, aiff, from 'click_24db.aif':
Duration: 00:00:00.01, start: 0.000000, bitrate: 1570 kb/s
Stream #0.0: Audio: pcm_s16be, 44100 Hz, 2 channels, s16, 1411 kb/s
Output #0, mp3, to '/Users/xyz/foobar/wheel_click.mp3':
Metadata:
TSSE : Lavf52.111.0
Stream #0.0: Audio: libmp3lame, 44100 Hz, 2 channels, s16, 64 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
size= 1kB time=00:00:00.05 bitrate= 92.9kbits/s
video:0kB audio:0kB global headers:0kB muxing overhead 45.563549%
결과 파일은 아이튠즈에서 좋은 활약 (참고 : 나는 SoundPool 라이브러리에서 mp3와 ogg를 사용하여 처음 시도했지만 그 중 하나는 작동하지 않았습니다.
내가 또한 작동하지 않았다 다음 paramters, 시도 : 오늘 MacPorts를 함께 내장는 FFmpeg을 내가 OSX에서 일하고 있어요
ffmpeg -i inputfile.aif -f mp3 -acodec libmp3lame -ab 192000 -ar 44100 outputfile.mp3
을, 안드로이드 API 레벨 7 (구글 API를, 2.1 갱신 1) . dev.android에있는 "지원되는 형식"표를 보면 내 파일이 사양을 벗어 났음을 나타내지는 않았지만 그 점은 잘못되었을 수 있습니다.
비트 전송률과 관련하여 가장 단서가 없으므로 누구나 ffmpeg 매개 변수의 올바른 조합을 통해 안드로이드 용 mp3를 얻으실 수 있습니까? 결과 파일이 mp3, ogg 또는 3gp이든 상관 없어요.
주셔서 감사합니다. 나는 그것을 볼 것이다! – stefs