1

MediaPlayer を使用して LocalSocket からメディアを再生しようとしています。ストリームのタイプは MPEG-TS であり、LocalSocket 入力ストリームで使用できます

次のコードは of を試みsetDataSourceますFileDescriptorLocalSocket、失敗します。

LocalSocket wsIns = fileThread.getReadSocket();
p = new MediaPlayer();
p.setDisplay(holder);
FileDescriptor fd = wsIns.getFileDescriptor();
Log.e("TS","is valid ? "+fd.valid());
p.setDataSource(fd ,0, fileThread.getLength());

setDataSource は次の例外で失敗します。

10-13 17:21:31.510: W/System.err(6472): java.io.IOException: setDataSourceFD failed.: status=0x80000000
10-13 17:21:31.510: W/System.err(6472):     at android.media.MediaPlayer.setDataSource(Native Method)
10-13 17:21:31.510: W/System.err(6472):     at com.example.test.TSRenderActivity.surfaceCreated(TSRenderActivity.java:94)

デバッグ ログは、エラーが主にこれによるものであることを示唆していますfstat。LocalSocket のファイル記述子では、ファイルのサイズが 0 として返されます。

しかし、wsIns.getInputStream().available()このAPIを試してみると、利用可能なバイト数が0以外になります。

注:使用時の同じエラーp.setDataSource(fp);

4

0 に答える 0