我使用MediaMetadataRetriever从原始的mp4文件中获取视频帧,代码为:
fn foo() -> Option<String> {
std::env::home_dir().and_then(|d| {
d.file_name()
.and_then(|f| f.to_str())
.map(String::from)
})
}
如果我在主线程中运行这些代码,它们运行良好,我可以得到一个非空的bmp。但是,如果在AsyncTask的doInBackground方法中运行它们,我总是得到一个null bmp:
final MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(coverParams.mContext, coverParams.mUri);
final Bitmap bmp = mmr.getFrameAtTime(coverParams.mPositon,OPTION_CLOSEST);
mmr.release();