所以我试图将我的Android用作网络摄像头。我的代码适用于API< = 22.我正在使用ParcelFileDescriptor
的{{1}}方法来创建用于读写的管道。
简而言之,我对管道的写作如下:
createPipe()
当我运行它时,我得到以下异常,
ParcelFileDescriptor[] parcelFileDescriptors = ParcelFileDescriptor.createPipe();
ParcelFileDescriptor mParcelWrite =new ParcelFileDescriptor(mParcelFileDescriptors[1]);
MediaRecorder mMediaRecorder = new MediaRecorder();
mMediaRecorder.setOutputFile(mParcelWrite.getFileDescriptor());
..
..// Other settings.
mMediaRecorder.start();
我知道,在API 23中,他们制作了一个change,阻止E/MediaRecorder: start failed: -2147483648
W/System.err: java.lang.RuntimeException: start failed. W/System.err: at android.media.MediaRecorder.start(Native Method)
W/System.err: at com.ksy.recordlib.service.recoder.RecoderVideoSource.prepare(RecoderVideoSource.java:105)
W/System.err: at com.ksy.recordlib.service.recoder.RecoderVideoSource.run(RecoderVideoSource.java:173)
W/System.err: at java.lang.Thread.run(Thread.java:818)
使用不可搜索的文件描述符。
MediaRecorder
一起使用时 ParcelFileDescriptor
似乎不可寻找。
我的问题是,我怎样才能让它成为可追寻者?有什么替代品吗? 感谢。
答案 0 :(得分:0)
我一直在研究这个问题。您可以设置的输出格式中有一种隐藏格式,即
<强> mMediaRecorder.setOutputFormat(8); 强>
来自文档
**@hide H.264/AAC data encapsulated in MPEG2/TS
public static final int OUTPUT_FORMAT_MPEG2TS = 8; **
然而,它仍不适用于棉花糖或牛轧糖。我让它适用于套件kat。如果这有帮助,请告诉我。