使用MediaCodec播放视频
来源:互联网 发布:淘宝代理货源要钱吗 编辑:程序博客网 时间:2024/06/11 17:07
public class MediaCodecPlayer { private static final String PATH = "/sdcard/a.mp4"; private static MediaExtractor mediaExtractor; @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public static void codec(Surface surface) { mediaExtractor = new MediaExtractor(); MediaCodec mediaCodec = null; try { mediaExtractor.setDataSource(PATH); for (int i = 0; i < mediaExtractor.getTrackCount(); i++) { MediaFormat mediaFormat = mediaExtractor.getTrackFormat(i); String mime = mediaFormat.getString(MediaFormat.KEY_MIME); if (mime.startsWith("video")) { mediaExtractor.selectTrack(i); mediaCodec = MediaCodec.createDecoderByType(mime); mediaCodec.setCallback(callback); mediaCodec.configure(mediaFormat, surface, null, 0); break; } } mediaCodec.start(); } catch (IOException e) { e.printStackTrace(); } } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private static MediaCodec.Callback callback = new MediaCodec.Callback() { @Override public void onInputBufferAvailable(@NonNull MediaCodec codec, int index) { ByteBuffer byteBuffer = codec.getInputBuffer(index); byteBuffer.clear(); int sampleSize = mediaExtractor.readSampleData(byteBuffer, 0); if (sampleSize < 0) { codec.queueInputBuffer(index, 0, sampleSize, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM); } else { codec.queueInputBuffer(index, 0, sampleSize, mediaExtractor.getSampleTime(), 0); mediaExtractor.advance(); } } @Override public void onOutputBufferAvailable(@NonNull MediaCodec codec, int index, @NonNull MediaCodec.BufferInfo info) { if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) { mediaExtractor.release(); codec.stop(); codec.release(); } else { codec.releaseOutputBuffer(index, true); } } @Override public void onError(@NonNull MediaCodec codec, @NonNull MediaCodec.CodecException e) { } @Override public void onOutputFormatChanged(@NonNull MediaCodec codec, @NonNull MediaFormat format) { } };}
阅读全文
0 0
- 使用MediaCodec播放视频
- MediaCodec seekto()后解码播放视频,花屏?
- Android使用MediaCodec解码H264视频解码器
- Android利用mediacodec进行视频H264编码解码播放
- Android利用mediacodec进行视频H264编码解码播放
- 基于android MediaCodec 的音视频播放器原理
- Android利用mediacodec进行视频H264编码解码播放
- Android使用MediaCodec硬解码播放H264格式视频文件
- 【多媒体】Android使用MediaCodec硬解码播放H264格式视频文件
- Android使用MediaCodec硬解码播放H264格式视频文件
- MediaCodec解码aac,播放
- 【Android】使用MediaCodec硬编码实现视频直播推流端(一)
- 【Android】使用MediaCodec硬编码实现视频直播推流端(一)
- 【Android】使用MediaCodec硬编码实现视频直播推流端(一)
- 【Android】使用MediaCodec硬编码实现视频直播推流端(一)
- IJKPlayer使用MediaCodec解码和渲染视频过程分析
- Android中使用MediaCodec视频编码异步实现
- Android MediaCodec 视频编码
- ISO-8859 转 UTF-8
- Hive计算引擎切换
- 2017/12/22 jQuery
- iOS开发-关于iOS11适配的一些坑
- 源码剖析之epoll(2)
- 使用MediaCodec播放视频
- 正则表达式
- 153. Find Minimum in Rotated Sorted Array
- python round函数 竟然把5舍去了
- AS3.0 性能分析工具Profier使用总结
- springboot配置中心
- Ubuntu 16.04.1 + NVIDIA driver + cuda 8.0 安装
- solr 中文分词器
- Android启动模式之singleInstance