From 70041a152f63168a880e6c8ebd46f0b1db52a493 Mon Sep 17 00:00:00 2001 From: skufly Date: Wed, 12 Feb 2020 15:16:32 +0800 Subject: [PATCH] feat(codec): support vp8 vp9 opus --- external/player_ffmpeg_config.sh | 2 +- framework/utils/AFMediaType.h | 14 ++++++++------ framework/utils/ffmpeg_utils.c | 14 ++++++++++++-- .../CicadaDemo/CicadaCode/model/CicadaTool.m | 2 +- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/external/player_ffmpeg_config.sh b/external/player_ffmpeg_config.sh index f38d213e5..662679c44 100644 --- a/external/player_ffmpeg_config.sh +++ b/external/player_ffmpeg_config.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -ffmpeg_config_add_decoders aac aac_latm h264 hevc mpeg4 mp3 mp3adu mp3float mp3on4float mp3adufloat mp3on4 pcm_s16le ac3_at +ffmpeg_config_add_decoders aac aac_latm h264 hevc mpeg4 mp3 mp3adu mp3float mp3on4float mp3adufloat mp3on4 pcm_s16le ac3_at vp8 vp9 opus ffmpeg_config_add_demuxers flv aac live_flv webvtt mov mp3 mpegts matroska h264 ffmpeg_config_add_muxers mp4 adts mpegts ffmpeg_config_add_parsers aac h264 hevc aac_latm ac3 diff --git a/framework/utils/AFMediaType.h b/framework/utils/AFMediaType.h index f6fde096c..853b282c3 100755 --- a/framework/utils/AFMediaType.h +++ b/framework/utils/AFMediaType.h @@ -40,10 +40,11 @@ enum AFCodecID { // AF_CODEC_ID_SVQ3, // AF_CODEC_ID_MPEG1VIDEO, // AF_CODEC_ID_VP6, -// AF_CODEC_ID_VP8, + AF_CODEC_ID_VP8, + AF_CODEC_ID_VP9, // AF_CODEC_ID_MJPEG, // AF_CODEC_ID_H263, - AF_CODEC_ID_HEVC, + AF_CODEC_ID_HEVC, AF_CODEC_ID_AV1, AF_CODEC_ID_AAC, @@ -51,22 +52,23 @@ enum AFCodecID { // AF_CODEC_ID_EAC3, // AF_CODEC_ID_DTS, // AF_CODEC_ID_DTSE, - AF_CODEC_ID_MP3, + AF_CODEC_ID_MP3, // AF_CODEC_ID_APE, // AF_CODEC_ID_COOK, // AF_CODEC_ID_SIPR, // AF_CODEC_ID_QDM2, - AF_CODEC_ID_MP2, + AF_CODEC_ID_MP2, AF_CODEC_ID_MP1, + AF_CODEC_ID_OPUS, // AF_CODEC_ID_AMR_NB, // AF_CODEC_ID_WMAV2, // AF_CODEC_ID_WMAPRO, - AF_CODEC_ID_PCM_S16LE, + AF_CODEC_ID_PCM_S16LE, AF_CODEC_ID_PCM_S16BE, // AF_CODEC_ID_PCM_BLURAY, // AF_CODEC_ID_ADPCM, // AF_CODEC_ID_PCM_S24LE, - AF_CODEC_ID_PCM_U8, + AF_CODEC_ID_PCM_U8, // AF_CODEC_ID_PCM_MULAW, // AF_CODEC_ID_ATRAC3, // AF_CODEC_ID_VORBIS, diff --git a/framework/utils/ffmpeg_utils.c b/framework/utils/ffmpeg_utils.c index 62e27d077..f90c4b55d 100644 --- a/framework/utils/ffmpeg_utils.c +++ b/framework/utils/ffmpeg_utils.c @@ -223,6 +223,9 @@ enum AFCodecID AVCodec2CicadaCodec(enum AVCodecID codec) // case AV_CODEC_ID_FLAC: // return AF_CODEC_ID_FLAC; + case AV_CODEC_ID_OPUS: + return AF_CODEC_ID_OPUS; + /*Video*/ case AV_CODEC_ID_H264: return AF_CODEC_ID_H264; @@ -272,8 +275,12 @@ enum AFCodecID AVCodec2CicadaCodec(enum AVCodecID codec) // case AV_CODEC_ID_VP6F: // return AF_CODEC_ID_VP6; // -// case AV_CODEC_ID_VP8: -// return AF_CODEC_ID_VP8; + case AV_CODEC_ID_VP8: + return AF_CODEC_ID_VP8; + + case AV_CODEC_ID_VP9: + return AF_CODEC_ID_VP9; + // // case AV_CODEC_ID_MJPEG: // return AF_CODEC_ID_MJPEG; @@ -326,6 +333,9 @@ static codec_pair codec_pair_table[] = { {AF_CODEC_ID_H264, AV_CODEC_ID_H264}, {AF_CODEC_ID_HEVC, AV_CODEC_ID_HEVC}, {AF_CODEC_ID_AV1, AV_CODEC_ID_AV1}, + {AF_CODEC_ID_VP8, AV_CODEC_ID_VP8}, + {AF_CODEC_ID_VP9, AV_CODEC_ID_VP9}, + {AF_CODEC_ID_OPUS, AV_CODEC_ID_OPUS}, {AF_CODEC_ID_MPEG4, AV_CODEC_ID_MPEG4}, {AF_CODEC_ID_NONE, AV_CODEC_ID_NONE}, }; diff --git a/platform/Apple/demo/iOS/CicadaDemo/CicadaDemo/CicadaCode/model/CicadaTool.m b/platform/Apple/demo/iOS/CicadaDemo/CicadaDemo/CicadaCode/model/CicadaTool.m index 9afbef223..eb9cb93de 100644 --- a/platform/Apple/demo/iOS/CicadaDemo/CicadaDemo/CicadaCode/model/CicadaTool.m +++ b/platform/Apple/demo/iOS/CicadaDemo/CicadaDemo/CicadaCode/model/CicadaTool.m @@ -126,7 +126,7 @@ + (NSArray *)getDocumentMP4Array { NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *fileList = [fileManager contentsOfDirectoryAtPath:documentPath error:nil]; NSMutableArray *dirArray = [[NSMutableArray alloc] init]; - NSArray *suffixArray = @[@"mp4",@"mp3",@"flv",@"mov"]; + NSArray *suffixArray = @[@"webm", @"mp4",@"mp3",@"flv",@"mov"]; for (NSString *file in fileList) { if ([suffixArray containsObject:[[file pathExtension] lowercaseString]]) { NSString *filePath = [NSString stringWithFormat:@"%@/%@",documentPath,file];