微波EDA网,见证研发工程师的成长! 2025婵犵數濮撮惀澶愬级鎼存挸浜炬俊銈勭劍閸欏繘鏌i幋锝嗩棄缁炬儳娼¢弻鐔告綇閸撗呮殸缂備胶濯崹鍫曞蓟閵娾晜鍋嗛柛灞剧☉椤忥拷04闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偞鐗犻、鏇㈡晜閽樺缃曢梻浣虹帛閸旀洟骞栭銈囦笉妞ゆ牜鍋為悡銉╂煟閺囩偛鈧湱鈧熬鎷�13闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偞鐗犻、鏇㈡晝閳ь剛绮eΔ浣虹闁瑰瓨鐟ラ悘鈺冪磼閻欌偓閸ㄥ爼寮婚妸鈺傚亞闁稿本绋戦锟� 闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偞鐗犻、鏇㈠Χ閸屾矮澹曞┑顔结缚閸樠冣枍瀹ュ洠鍋撶憴鍕;闁告濞婇悰顕€宕堕澶嬫櫌婵犵數濮撮幊澶愬磻閹捐閿ゆ俊銈勮兌閸欏棝姊虹紒妯荤闁稿﹤婀遍埀顒佺啲閹凤拷闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偞鐗犻、鏇㈡晝閳ь剛绮eΔ浣虹闁瑰瓨鐟ラ悘鈺冪磼閻欌偓閸ㄥ爼寮婚妸鈺傚亞闁稿本绋戦锟�
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 选择720P或480P,录制出来的视 频在电脑上播放很快,手机上播放正常

选择720P或480P,录制出来的视 频在电脑上播放很快,手机上播放正常

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
将720P和480P录像时声音的编码器替换为AAC之后现出这个问题,具体现象如下:
1、使用暴风影音播放,画面会跳,时间变化是:0,1,3,5,6,8,9
2、使用QuickTime,VLC,QQ影音,手机播放,表现都是正常的,时间变化也正常。
将有问题的视频去掉AudIOTrack(将AudioTrack的”hdlr”boxhandler_type改成非”soun”)之后,在暴风影音上播
放时间和画面都正常了,说明Decode图像画面以及VideoTrack是OK的。
[SOLUTION]
这个问题产生的原因是:
ICS & ICS2上AudioSource分配的buffersize比较大,AACEncode一次帧个数不均匀,encode一次可能会有2帧或1帧,这
样给writer的timestamp值是不均匀的,而在JB上每次只encode一帧timestamp比较均匀,因此暴风播起来正常,怀疑暴
风处理AACEncode帧timestamp不均匀的情况只能对一帧一个timestamp来处理。
php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks\base\media\libstagefright\AudioSource.cpp文件中将构造函数修改成如下形式(修改蓝色代码):
AudioSource::AudioSource(
intinputSource,uint32_tsampleRate,uint32_tchannels)
:mStarted(false),
mSampleRate(sampleRate),
mPrevSampleTimeUs(0),
mNumFramesReceived(0),
mNumCLIentOwnedBuffers(0){
LOGV("sampleRate:%d,channels:%d",sampleRate,channels);
CHECK(channels==1||channels==2);
intminFrameCount;
status_tstatus=AudioRecord::getMinFrameCount(&minFrameCount,
sampleRate,
AUDIO_FORMAT_PCM_16_BIT,
channels);
if(status==OK){
//makesurethattheAudioRecordcallbackneverreturnsmorethanthemaximum
//buffersize
intframeCount=kMaxBufferSize/sizeof(int16_t)/channels;
//makesurethattheAudioRecordtotalbuffersizeislargeenough
intbufCount=2;
while((bufCount*frameCount)<minFrameCount){
bufCount++;
}
uint32_tflags=AudioRecord::RECORD_AGC_ENABLE|
AudioRecord::RECORD_NS_ENABLE|
AudioRecord::RECORD_IIR_ENABLE;
mRecord=newAudioRecord(
inputSource,sampleRate,AUDIO_FORMAT_PCM_16_BIT,
channels>1?AUDIO_CHANNEL_IN_STEREO:AUDIO_CHANNEL_IN_MONO,
bufCount*frameCount,
flags,
AudioRecordCallbackFunction,
this);
mInitCheck=mRecord->initCheck();
}else{
mInitCheck=status;
}
}

飘过

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top