0

我从 DatagramSocket 获取视频数据,我们知道它是一个字节 [],我无法准确解码这个字节 []。所以我必须使用 MediaExtractor 来完成这项工作。这是我的代码:

@Override
public void run() {
    eosReceived = false;
    try {
        socket.receive(packet);
        ParcelFileDescriptor pfd = ParcelFileDescriptor.fromDatagramSocket(socket);
        FileDescriptor fd = pfd.getFileDescriptor();
        mExtractor.setDataSource(fd, 0, packet.getData().length);
        for (int i = 0; i < mExtractor.getTrackCount(); i++) {
            MediaFormat format = mExtractor.getTrackFormat(i);
            String mime = format.getString(MediaFormat.KEY_MIME);
            if (mime.startsWith(VIDEO)) {
                mExtractor.selectTrack(i);
                mDecoder = MediaCodec.createDecoderByType(mime);
                try {
                    Log.d(TAG, "format : " + format);
                    mDecoder.configure(format, surface, null, 0 /* Decoder */);

                } catch (IllegalStateException e) {
                    Log.e(TAG, "codec '" + mime + "' failed configuration. " + e);
                }
                mDecoder.start();
                break;
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

当代码运行在 mExtractor.setDataSource(fd, 0, packet.getData().length); 异常是 java.io.IOException: Failed to instantiate extractor。我真的不知道如何解决这个问题....顺便说一句。昨天早上工作,但从昨天下午开始,它不再工作......请帮忙,非常感谢:)

4

0 回答 0