问题标签 [mediametadataretriever]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android 图像名称随机化和检索
美好的一天伙计们。我创建了以随机名称捕获和保存图像的应用程序。我想知道它如何能够检索上次捕获的图像并在 imageview 上显示?我完全是指上次捕获的,因为例如,如果我捕获堆会有堆名称随机创建,但我想在图像视图上检索上次捕获的图像并保存此随机化功能。我可以吗?
android - 我想在视频中嵌入文字和贴纸
是否有任何简单的方法可以将文本和贴纸嵌入到视频中。
I don't want to use overlay
我想嵌入(将其永久添加到视频中)。我可以在不使用 FFmpeg(NDK 库)的情况下做到这一点吗?有什么方法可以使用 MediaMetadataRetriever。
android - Android MediaMetadataRetriever 使用 FFmpegMediaMetadataRetriever 获取帧
有人可以帮我解决关于使用 rtsp 数据源从 videoview 获取当前帧的问题。我已经从这个博客学习了这个教程。在这段代码中,当用户决定从视频视图中捕获当前帧时,将显示位图图像:
我得到一个空值。经过几个小时的研究,许多人说这个链接中的 FFmpegMediaMetadataRetriever 库可以处理 rtsp 协议。我将如何应用这个库?我已经下载了它,在 eclipse 上导入,并将它作为库添加。似乎当我调用这个类库时:
FFmpegMediaMetadataRetriever mMediaMetadataRetriever = new FFmpegMediaMetadataRetriever();
我收到一个错误,即 java.lang.ExceptionInInitializeError。我在正确的轨道上吗?有人可以指导我吗?
android - MediaMetadataRetrieverJNI(14060): getFrameAtTime: videoFrame 是一个空指针(Android)
我正在使用 MediaMetadataRetriever 通过视频帧创建缩略图,但我在Logcat中收到此消息:
E/MediaMetadataRetrieverJNI(14060): getFrameAtTime: videoFrame 是一个空指针
这是我的代码:
然后我尝试了这个FFmpegMediaMetadataRetriever 库,但它在 Logcat 中产生了这个:
这是我的代码:
接下来我尝试使用 SDcard 路径但仍然是相同的 logcat
android - some android devices can not get video thumbnail,The video was shot with the iPhone
I use the native android sdk way to get online video thumbnail,Source code is as follows:
However, in some android device, this method can not get iPhone device captured video thumbnail. so,i want to what is the problem,please,thank you
java - 如何获取直播流的缩略图?
我目前MediaMetadataRetriever.getFrameAtTime
在 Android 上使用来获取视频的缩略图,除了实时流 (m3u8) 外,它运行良好。直接使用 m3u8 似乎不起作用,我已经设法.ts
使用相同的方法为段文件取回位图,但它始终只是一个黑色位图。那么如何获得直播的缩略图呢?
谢谢。
java - 线程 MediaMetadataRetriever [Android] 时出现 NullPointerException
我再次用尽了错误的想法,并返回有用的 Stack Overflow 社区寻求指导。我知道这是一篇很长的帖子,但我相信它可能对社区中的其他人有所帮助,并为退伍军人提供挑战。
本质上,我正在构建一个逐帧处理视频的应用程序。最初,此过程是线性完成的,但速度是此应用程序的主要关注点。自然的想法是可以实现单独的线程来处理帧。每个线程只是前一个循环的一次迭代;从视频中检索帧,对其进行处理,并将结果数据放入数组的正确索引中。
问题是,在从循环到线程的转换过程中,当尝试访问 MediaMetadataRetriever.getFrameAtTime() 返回的帧时,有时会抛出 NullPointerException(大约每 200 帧一次)
以下是一些可能有用的代码部分:
摘自附加到开始处理的按钮的 onClickListener。onClickListener 启动一个 ThreadPoolExecutor,它管理线程以进行帧处理。
getVideoFrame(),一个辅助方法,它接收一个视频的 Uri 和一个以微秒为单位的时间,并将视频的帧作为位图返回
摘自 ProcessFrame,由 ThreadPoolExecutor 运行的线程(作为 ASyncTask)。如上所述,线程只是简单地获取帧,处理帧,并将其放入数组中的正确位置。
访问空帧时产生的错误消息:
一般评论、观察和我尝试过的事情:
抛出异常的行在最后一个代码块中用注释标记。
如果没有 try/catch 块,我的手机不会在这个异常上显示正常的应用程序崩溃消息,它会闪烁黑屏,然后快速返回主屏幕。(黑屏闪的时候快速截屏logcat发现是哪一行)
如果没有 try/catch 块,我尝试过的另一部手机会忽略错误并继续,但这会破坏结果。
在 bMap = getVideoFrame(videoUri, frameTime[0]) 周围添加同步块似乎使错误不那么常见,但它仍然会发生。
我已经尝试过 ffmpegMediaMetadataRetriever 替代方案。这个包没有消除错误,并且减慢了处理时间。
抛出 nullPointerException 后,所有后续线程似乎更有可能再次抛出异常。
以最多一个线程运行 ThreadPoolExecutor 不会产生错误。
即使我将 doInBackground() 的整个主体包含在一个同步块中,错误仍然出现
android - Android:Bitmap.compress 质量差,使用 PNG 格式
我的应用程序捕获视频片段并将其保存为 .mp4 文件。我想从该视频中提取一帧并将其保存到文件中。由于我没有找到更好的东西,所以我决定使用MediaMetadataRetriever.getFrameAtTime()
它。它发生在从 AsyncTask 继承的类中。这是我的代码的样子doInBackground()
:
和saveBitmap()
方法:
现在,问题是导出图像的质量明显比视频质量差。我认为 PNG 输出格式不应该发生这种情况。您可以在下面看到不同之处:
第一张图片是在我的桌面上使用 ffmpeg 从视频中提取的。第二个是在三星 Galaxy S6 上使用上面的代码提取的。在我使用的每台 Android 设备上,结果看起来都差不多。
有人能告诉我如何提高导出图片的质量吗?
android - FFmpegMediaMetadataRetriever 返回 setDataSource 失败:状态 = > 0xFFFFFFFF
这是一个奇怪的错误!因为它有时有效,但有时无效。我正在使用FFmpegMediaMetadataRetriever使用 URL 路径从视频中获取缩略图。retriever.setDataSource(((Video) obj).getVideoAddress());
返回以下错误:
java.lang.IllegalArgumentException:setDataSource 失败:状态 = 0xFFFFFFFF
这是我的代码:
注意:我检查了 INTERNET 权限并且它存在。一些视频存在问题,但格式相同!我的意思是视频之间的唯一区别是比特率、长度、大小和其他类似的东西,而不是文件格式。
java - 如何在 android 中从 .ts 视频文件创建图像?
我收到此错误“getFrameAtTime: videoFrame is a NULL pointer” 下面是我的代码。修复此错误的任何建议
我也尝试过这两种方法,但得到相同的错误消息(getFrameAtTime: videoFrame is a NULL pointer)