ExoPlayer RTMP支持H265扩展
RTMP是由Adobe公司提出的一种应用层的协议。RTMP和FLV格式友好的兼容性,主要体现在RTMP封装可播放的音视频流时,RTMP Packet中封装的音视频数据流时,其实和FLV/tag封装音频和视频数据的方式是相同的,FLV封装采用H264和AAC的方式,以下是对ExoPlayer FLV封装代码扩展H265编码。
ExoPlayer/library/core/src/main/java/com/google/android/exoplayer2/extractor/flv/VideoTagPayloadReader.java
package com.google.android.exoplayer2.extractor.flv;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.ParserException;
import com.google.android.exoplayer2.extractor.TrackOutput;
import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.NalUnitUtil;
import com.google.android.exoplayer2.util.ParsableByteArray;
import com.google.android.exoplayer2.video.AvcConfig;
import com.google.android.exoplayer2.video.HevcConfig;
import java.util.Collections;
/**
* Parses video tags from an FLV stream and extracts H.264 nal units.
*/
/* package */ final class VideoTagPayloadReader extends TagPayloadReader {
// Video codec.
private static final int VIDEO_CODEC_AVC = 7;
// 添加 h265 hevc.
private static final int VIDEO_CODEC_HEVC = 12;
// Frame types.
private static final int VIDEO_FRAME_KEYFRAME = 1;