私はアンドロイドアプリを開発しています。私の要件は、Android に rtsp ストリーミング サーバーを実装することです。を使用してキャプチャしたビデオとオーディオをライブ ストリームする必要がありますMediaRecorder
。もう 1 つの要件は、ストリーミング サーバーとして live555 を使用する必要があることです。私が得たものMediaRecorder
は、MP4 または 3GP 形式です。live555 は両方をストリーミングすることはできません。ただし、「RAW_AMR」形式でのみ録音した場合は、オーディオをストリーミングできます。live555 はストリーミング用の 'mpg' 形式をサポートしているため、'mp4' または '3gp' を 'mpg' に変換できる人を中間に入れることにし、ffmpeg を選択しました。
live555 と ffmpeg を Android に移植しました。ffmpeg は、記録されたファイルをMediaRecorder
一度変換することができます。しかし問題は、ffmpeg が同時にそれを行うことができないということです。つまり、ffmpeg は記録中にファイルを変換できません。エラーが表示されOperation not permitted
ます。MediaRecorder
Androidの代わりにVLCを使用して、Linuxマシンで同じことを試しました。結果は同じです。ffmpeg は、記録が終了すると変換できますが、記録中に同じことを行うことはできません。
Linuxボックスで発行したffmpegコマンドは次のとおりです。
ffmpeg -v 9 -loglevel 99 -i test.mp4 test.mpg
test.mp4
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 で不可能な場合は、代替ソリューションを提案していただけますか?
注:C
ffmpegでCを微調整することで可能であれば、タグを付けています(解決策が非常に欲しい)。しかし、正しい方向へのいくつかの指針を提供してください。