Android 앱을 개발 중입니다. 내 요구 사항은 안드로이드에 rtsp 스트리밍 서버를 구현하는 것입니다. MediaRecorder
을 사용하여 캡처 한 스트림 비디오 및 오디오를 라이브로 재생해야합니다. 또 다른 요구 사항은 live555를 스트리밍 서버로 사용해야한다는 것입니다. 내가 MediaRecorder
에서 얻은 것은 MP4 또는 3GP 형식입니다. live555는 둘 다 스트리밍 할 수 없습니다. 그러나 'RAW_AMR'형식으로 만 녹음하면 오디오를 스트리밍 할 수 있습니다. Live555가 스트리밍을위한 'mpg'형식을 지원하기 때문에 중간에 mpg 또는 3gp를 mpg로 변환 할 수있는 사람을 배치하기로 결심했으며 ffmpeg를 선택했습니다.ffmpeg - 변환 도중 오류가 발생했습니다.
나는 live555와 ffmpeg를 android에 이식했습니다. ffmpeg가 완료되면 MediaRecorder
에 의해 기록 된 파일을 변환 할 수 있습니다. 그러나 문제는 ffmpeg가 동시에 그것을 수행 할 수 없다는 것입니다. 즉, ffmpeg는 녹음하는 동안 파일을 변환 할 수 없습니다. Operation not permitted
오류가 표시됩니다. 내 리눅스 컴퓨터에서 동일한 시도, 안드로이드에 MediaRecorder
대신 기록 VLC를 사용합니다. 결과는 같습니다. ffmpeg는 레코딩이 끝나면 변환 할 수 있으며 레코딩 중에는 동일한 작업을 수행 할 수 없습니다. test.mp4
파일입니다
ffmpeg -v 9 -loglevel 99 -i test.mp4 test.mpg
는 VLC는 mp4
형식으로 기록되는 : 여기
test.mpg
입니다. 다음은 터미널에서 ffmpeg의 출력입니다.
ffmpeg version 0.8.9, Copyright (c) 2000-2011 the FFmpeg developers
built on Feb 1 2012 18:29:27 with gcc 4.6.2 20111027 (Red Hat 4.6.2-1)
configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --enable-bzlib --enable-libcelt --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
libavutil 51. 9. 1/51. 9. 1
libavcodec 53. 8. 0/53. 8. 0
libavformat 53. 5. 0/53. 5. 0
libavdevice 53. 1. 1/53. 1. 1
libavfilter 2. 23. 0/2. 23. 0
libswscale 2. 0. 0/2. 0. 0
libpostproc 51. 2. 0/51. 2. 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1672600] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1672600] ISO: File Type Major Brand: isom
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1672600] moov atom not found
test.mp4: Operation not permitted
아무도 문제를 일으키지 않았습니까? 또는 위의 시나리오가 ffmpeg에 의해 가능합니다. 즉, ffmpeg는 레코딩과 동시에 변환을 수행 할 수 있습니까? ffmpeg로는 가능하지 않다면 다른 대안을 제안 해 주시겠습니까?
참고 : 나는 ffmpeg에서 C로 조정할 수 있다면, 내가 그럴 준비가되어 있기 때문에 (나는 그 끔찍한 해결책을 원한다) C
태그를 달고있다. 그러나 올바른 방향에 대한 조언을 해주십시오.