質問

Androidアプリを開発しています。私の要件は、AndroidにRTSPストリーミングサーバーを実装することです。使用してキャプチャされたビデオとオーディオをライブストリームする必要があります MediaRecorder. 。別の要件は、Live555をストリーミングサーバーとして使用する必要があることです。私が得るもの MediaRecorder MP4または3GP形式です。 Live555は両方をストリーミングできません。ただし、「raw_amr」形式でのみ記録した場合、オーディオをストリーミングできます。 Live555はストリーミングに「MPG」形式をサポートしているため、「MP4」または「3GP」を「MPG」に変換できる人を中央に置くことにし、FFMPEGを選択しました。

Live555とFFMPEGをAndroidに移植しました。 FFMPEGは、記録されたファイルを変換できます MediaRecorder 終了したら。しかし、問題は、FFMPEGが同時にそれを行うことができないことです。つまり、FFMPEGは録画中にファイルを変換することができません。それはを示しています Operation not permitted エラー。 Linuxマシンで同じことを試してみました。 MediaRecorder Androidで。結果は同じです。 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で不可能な場合は、代替ソリューションを提案してください。

注:私はaを置いています C タグは、FFMPEGのCで微調整することで可能であれば、それをする準備ができているからです(私はそれほどひどく解決策が欲しいです)。しかし、正しい方向にいくつかのポインターを提供してください。

役に立ちましたか?

解決

両方 3gpmp4 形式には、ファイルが確定したときに記述されるMoov Atom(データの塊)が含まれます。それまでは、ファイルが不完全です。

使用できます FLV 「ミドル」形式として。ライブストリーミングをサポートする他の形式も使用できます。オプション -re 必要に応じて、エンコーダーにストリームレートで実行するように指示するのに役立つ場合があります。

参照してください エンコーダがエンコードされているときに、エンコーダーから出力ビデオファイルを再生することは可能ですか?.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top