HarmonyOS OH_MD_KEY_DURATION无法得到视频的时长
OH_AVFormat_GetLongValue(trackFormat, OH_MD_KEY_DURATION, &videoDuration);接口调用返回失败,且无法获取视频时长
void DeMuxer::GetTrackInfo() {
int trackType = -1;
for (int32_t index = 0; index < trackCount; index++) {
OH_AVDemuxer_SelectTrackByID(demuxer, index);
OH_AVFormat *trackFormat = OH_AVSource_GetTrackFormat(source, index);
OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &trackType);
if (trackType == MEDIA_TYPE_VID) {
bool getWidthRet = OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_WIDTH, &width);
OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_HEIGHT, &height);
OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_ROTATION, &rotation);
OH_AVFormat_GetDoubleValue(trackFormat, OH_MD_KEY_FRAME_RATE, &frameRate);
OH_AVFormat_GetLongValue(trackFormat, OH_MD_KEY_BITRATE, &bitrate);
bool getDurationRet = OH_AVFormat_GetLongValue(trackFormat, OH_MD_KEY_DURATION, &videoDuration);
videoDuration = 8700 * 1000;
char *videoTemp;
OH_AVFormat_GetStringValue(trackFormat, OH_MD_KEY_CODEC_MIME, const_cast<char const **>(&videoTemp));
vTrackId = index;
SL_MEDIA_LOGD(MODULE_DEMUXER,
"demuxer:videoMime:%{public}s--width:%{public}d--getWidthRet:%{public}d--height:%{public}d"
"--frameRate:%{public}f--bitrate%{public}ld--videoDuration%{public}ld--getDurationRet%{"
"public}d--videoTrackId:%{public}d",
videoTemp, width, getWidthRet, height, frameRate, bitrate, videoDuration, getDurationRet,
vTrackId);
videoMime = videoTemp;
mutexManager->vTrackId = vTrackId;
}
if (trackType == MEDIA_TYPE_AUD) {
aTrackId = index;
OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, &audioChannelCount);
OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_AUD_SAMPLE_RATE, &audioSampleRate);
OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, &audioSampleFormat);
OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_AAC_IS_ADTS, &aacIsADTS);
char *audioTemp;
OH_AVFormat_GetStringValue(trackFormat, OH_MD_KEY_CODEC_MIME, const_cast<char const **>(&audioTemp));
OH_AVFormat_GetLongValue(trackFormat, OH_MD_KEY_BITRATE, &audioBitrate);
OH_AVFormat_GetLongValue(trackFormat, OH_MD_KEY_DURATION, &audioDuration);
SL_MEDIA_LOGD(MODULE_DEMUXER,
"demuxer:audioMime:%{public}s--audioBitrate:%{public}lld--aacIsADTS:%{public}d"
"--audioSampleFormat:%{public}d--audioSampleRate:%{public}d"
"--audioChannelCount%{public}d--audioTrackId:%{public}d--audioDuration:%{public}ld",
audioTemp, audioBitrate, aacIsADTS, audioSampleFormat, audioSampleRate, audioChannelCount,aTrackId,audioDuration);
audioMime = audioTemp;
mutexManager->aTrackId = aTrackId;
}
OH_AVFormat_Destroy(trackFormat);
trackType = -1;
}
}
是我通过Demuxer获取参数的代码,其他参数都是能够正常获取的,只有duration获取失败,没有发现有什么报错的日志
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS AVDexmuer无法获取视频时长
205浏览 • 1回复 待解决
HarmonyOS 怎么获取视频的播放时长?
643浏览 • 1回复 待解决
HarmonyOS 拍视频是否可以限制视频时长
500浏览 • 1回复 待解决
HarmonyOS camera.pick使用系统相册后的图片/视频无法获取封面图,视频时长,视频大小尺寸。
767浏览 • 1回复 待解决
HarmonyOS 录制视频后获取封面图和时长
467浏览 • 1回复 待解决
HarmonyOS PhotoPickerComponent中通过onselect选中的视频uri,如何获取视频时长以及封面
315浏览 • 1回复 待解决
HarmonyOS animateTo的duration无效
204浏览 • 1回复 待解决
HarmonyOS 如何获取视频时长和分辨率
285浏览 • 1回复 待解决
HarmonyOS 获取相册图片大小以及视频时长
419浏览 • 1回复 待解决
如何录制视频并设置最大录制时长?
494浏览 • 0回复 待解决
HarmonyOS 沙箱中的视频怎么获取时长和缩略图
1105浏览 • 2回复 待解决
HarmonyOS Record的key定义成常量无法使用
194浏览 • 1回复 待解决
HarmonyOS OH_AUDIO是否可以设置/提供内部缓冲区大小及相应的设备渲染时长
781浏览 • 1回复 待解决
HarmonyOS 无法找到 OH_JSVM_DefineClass 定义的类
369浏览 • 1回复 待解决
HarmonyOS 视频硬解码调用OH_VideoDecoder_PushInputData崩溃
282浏览 • 1回复 待解决
HarmonyOS视频压缩模块无法压缩视频
912浏览 • 1回复 待解决
HarmonyOS 在录制视频时,设置了录制的时长为10s,怎么根据录制时长来实现录制按钮的倒计时效果?
576浏览 • 1回复 待解决
HarmonyOS ArkUI-C的onAreaChange回调中无法得到组件可视区域的信息
210浏览 • 1回复 待解决
HarmonyOS 通过自创建的OH_AVBuffer去demux,然后拷贝到Decoder的OH_AVBuffer,无法解码
407浏览 • 1回复 待解决
HarmonyOS 如何通过OH_NativeBuffer获取到视频帧数据?
815浏览 • 1回复 待解决
HarmonyOS 统计页面停留时长
289浏览 • 1回复 待解决
HarmonyOS router默认跳转页面的duration是多少
702浏览 • 1回复 待解决
HarmonyOS video自带的下载按钮无法下载视频
408浏览 • 1回复 待解决
建议后续尝试通过sourceFormat获取,而不是trackFormat