我从 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。我真的不知道如何解决这个问题....顺便说一句。昨天早上工作,但从昨天下午开始,它不再工作......请帮忙,非常感谢:)