안녕하세요 ^^
4편에 걸친 강좌의 전체 소스 코드를 공개해 드립니다.
용량이 커서 ffmpeg 폴더안의 쓰지 않는 폴더는 모두 삭제하고 어떻게 하니 간신히 5M 안에 들어가는군요 ^^
압축 푸신 후
ndk-build로 c 코드 빌드하시고
eclipse에서 프로젝트 열어서 java 코드에서 파일 경로 수정하시고
실행하시면 바로 동작할 겁니다.
지금 만들고 있는 자신의 소스와 비교해 보면서 하시면 도움이 되실 듯 하네요~
(현재 소스는 AAC 코덱 디코딩시 다소 문제가 있음이 확인되었습니다. 일단 neon disable 하시고 하면 문제는 없습니다.)
좋은 강좌 감사드립니다.
마지막 한가지만 더 질문드려도 될까요? ^^..
NEON을 지원하지 않는 Device에서 구동시키려면 어느부분을 손대거나 살펴봐야 하는지요..^^
감사합니다. ^^
직접 해보시면 될 거 같네요 ^^
어차피 neon은 "+알파" 이기 때문에 neon 관련 코드나 옵션 부분만 빼주면서 진행하시면 되지요~
뭐 생각나는대로 조금 짚어드리면
configure 하실 때, extra-cflags 와 extra-ldflags 에서 -marm, -march 두 개 옵션 빼고 나머지는 neon 옵션이니 빼고 하시구요
common.mk 마지막에 "FFFILES := 어쩌고..." 라고 컴파일할 소스 코드들 대입해주는데
거기에도 NEON 으로 정의된 것들은 필요없으니 지워주시면 되겠지요~
libavcodec 폴더의 Android.mk 에도 NEON 관련 코드가 있을 텐데 역시 지우시구요
(중간에 4줄인가? NEON 관련해서 추가되어 있는 부분)
java 어플 코드에서 neon 인지 검사해서 오류 처리 하는 부분...
이것 외에도 더 있을 수도 있는데 단계별로 꼼꼼히 확인하면서 해보세요~
안녕하세요 강좌 잘 보았습니다. 제가 neon을 빼고 빌드하고싶은데 하루종일 지금 이틀째 ..도전하는데도 계속 빌드가 안되네요.. 일단 제가 한 부분은 neon 이 나오는 부분을 다..빼긴했습니다. 1.config.sh에 아래와 같이 수정했구요. --extra-cflags="-marm -march=armv7-a -mfloat-abi=softfp " \ --extra-ldflags= \
좋은 강의 감사드립니다.
다음번에 시간이 되시면 ffmpeg+자막+스트리밍 등을 플러그인 방식으로 활용한 vlc 를 안드로이드에 포팅한 faplayer(https://github.com/tewilove/faplayer/ ) 에 대한 강의도 부탁드립니다...^^;
neon 을 포함하여 빌드되어 있는 상태에서요 Interface.c BasicPlayer.c 부분에서 정확히 어느부분에서 neon 을 사용하고 있는지와
사용한다면 parameter 로 무엇을 쓰는지 알고 싶습니다.
제가 알기로는 따로 .c 소스코드에서 네온을 사용, 비사용을 지정하는 부분은 없는 것으로 보입니다.
저도 그루터기님 강좌를 보고 네온 옵션을 제하고 so파일을 만들어 사용하고 있는데요.
so파일을 만들 때 속성을 지정해서 neon의 사용여부를 결정하게 되는 것 같네요.
결국 configure할 때에 지정된 네온 속성이 함수와 무관하게 계속 적용되는 것 같습니다.
저도 현재 그렇게 사용하고 있구요.
한마디로 configure의 옵션 지정 비지정 여부가 추후 해당 so파일 사용 시 neon의 사용 비사용 여부를 결정하게 되는 것 같네요.
도움이 되셨으면 좋겠습니다.
혹 코드로 지정하는 법을 아시는 분이 있으면 댓글 부탁드립니다. ^^
감사합니다.
강의 잘 보았습니다~
저도 ffmpeg를 사용해서 개발을 하고 있는데 동영상 음원도 같이 재생을 시키고 싶으면 어떤식으로 하면 되나요?
오디오 스트리밍에 대한 예제가 그렇게 많지가 않아서 이렇게 질문을 드립니다ㅠㅜ 꼭 좀 알려주세요!!
이 부분은 짧게 답변 드릴수가 없네요 ^^
일단 제 경험에 비추어 말씀드리면
http://dranger.com/ffmpeg/ 강좌를 충분히 참고하시고, 부족한 부분은 ffmpeg/ffplay.c 소스 코드를 분석해 보시면 충분히 구현이 가능하실 겁니다.
sync 맞추고 하는 부분이 골이아픈 것이지...
1단계로 그냥 sound 만 뽑아서 대충 재생만하려면 별로 어렵지 않습니다.
BasicPlayer의 영상 디코딩 하는 코드와 크게 다르지도 않습니다.
영상 출력은 BasicPlayer 소스와 같이
jnigraphics library를 이용해 Java 단의 bitmap에 데이터를 쓴 후,
Java 단에서 SurfaceView를 이용해서 출력합니다.
음성 출력은 오디오 데이터를 일정 길이 단위로 배열에 넣어서
jni를 통해 java 단으로 보낸 후,
Java 단에서는 AudioTrack을 이용해서 재생합니다.
(Google IO 2010 - Advanced Android audio techniques 동영상 초반 부분 참고)
이것 외에도 다른 방법도 얼마든지 있을 수 있지요... ^^
일단 제가 제시한 것은 한 가지 방법일 뿐입니다.
안녕하세요. 강좌 잘보았습니다. ^^
열심히 플레이어를 만들어보고 있습니다만 mp3포멧 audio는 재생이 되는데 aac포멧 audio는 재생이 안되더라고요;;
혹시 aac포멧 audio재생에 성공하셨나요?;
수고하셨습니다.
감사합니다 ^^