- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我从 http://bigflake.com/mediacodec/ 运行 CameraToMpegTest.java 时遇到问题.当我从 Activity 启动它时:
public class MyActivity extends Activity {
private CameraToMpegTest ctmt = new CameraToMpegTest();
...
@Override
protected void onResume() {
super.onResume();
try {
ctmt.testEncodeCameraToMp4();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
...
我以这个 logcat 结尾:
D/CameraToMpegTest﹕ video/avc output 640x480 @6000000
D/CameraToMpegTest﹕ Camera preview size is 640x480
I/OMXClient﹕ Using client-side OMX mux.
E/ACodec﹕ [OMX.Nvidia.h264.encoder] storeMetaDataInBuffers (output) failed w/ err -2147483648
I/ACodec﹕ setupVideoEncoder succeeded
D/libEGL﹕ loaded /system/lib/egl/libEGL_tegra.so
D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_tegra.so
D/libEGL﹕ loaded /system/lib/egl/libGLESv2_tegra.so
I/CameraToMpegTest﹕ Output file is /storage/emulated/0/test.640x480.mp4
W/System.err﹕ java.lang.IllegalStateException: Can't stop due to wrong state.
W/System.err﹕ at android.media.MediaMuxer.stop(MediaMuxer.java:229)
W/System.err﹕ at CameraToMpegTest.releaseEncoder(CameraToMpegTest.java:395)
W/System.err﹕ at CameraToMpegTest.encodeCameraToMpeg(CameraToMpegTest.java:216)
W/System.err﹕ at CameraToMpegTest.access$000(CameraToMpegTest.java:68)
W/System.err﹕ at CameraToMpegTest$CameraToMpegWrapper.run(CameraToMpegTest.java:128)
W/System.err﹕ at java.lang.Thread.run(Thread.java:841)
D/OpenGLRenderer﹕ Enabling debug mode 0
经过一些测试后,我尝试围绕调用 mStManager.awaitNewImage();使用带有异常打印的 try-catch block ,我得到了这个:
D/CameraToMpegTest﹕ video/avc output 640x480 @6000000
D/CameraToMpegTest﹕ Camera preview size is 640x480
I/OMXClient﹕ Using client-side OMX mux.
E/ACodec﹕ [OMX.Nvidia.h264.encoder] storeMetaDataInBuffers (output) failed w/ err -2147483648
I/ACodec﹕ setupVideoEncoder succeeded
D/libEGL﹕ loaded /system/lib/egl/libEGL_tegra.so
D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_tegra.so
D/libEGL﹕ loaded /system/lib/egl/libGLESv2_tegra.so
I/CameraToMpegTest﹕ Output file is /storage/emulated/0/test.640x480.mp4
I/System.out﹕ java.lang.RuntimeException: Camera frame wait timed out
I/System.out﹕ java.lang.RuntimeException: Camera frame wait timed out
D/CameraToMpegTest﹕ encoder output format changed: {csd-1=java.nio.ByteArrayBuffer[position=0,limit=8,capacity=8], height=480, mime=video/avc, csd-0=java.nio.ByteArrayBuffer[position=0,limit=13,capacity=13], what=1869968451, width=640}
I/MPEG4Writer﹕ limits: 4294967295/0 bytes/us, bit rate: -1 bps and the estimated moov size 3072 bytes
I/MPEG4Writer﹕ setStartTimestampUs: 0
I/MPEG4Writer﹕ Earliest track starting time: 0
I/System.out﹕ java.lang.RuntimeException: Camera frame wait timed out
W/MPEG4Writer﹕ 0-duration samples found: 1
W/MPEG4Writer﹕ 0-duration samples found: 2
I/MPEG4Writer﹕ Received total/0-length (3/0) buffers and encoded 3 frames. - video
D/MPEG4Writer﹕ Stopping Video track
D/MPEG4Writer﹕ Stopping Video track source
D/MPEG4Writer﹕ Video track stopped
D/MPEG4Writer﹕ Stopping writer thread
D/MPEG4Writer﹕ 0 chunks are written in the last batch
D/MPEG4Writer﹕ Writer thread stopped
D/MPEG4Writer﹕ Stopping Video track
D/OpenGLRenderer﹕ Enabling debug mode 0
I/Choreographer﹕ Skipped 90 frames! The application may be doing too much work on its main thread.
这似乎与这个问题(android: SurfaceTexure, camera frame wait time out)中的问题类似,但 CameraToMpegTest.java 使用单独的线程。
我的测试设备是运行 4.4.4 Android 的 Google Nexus 7 (2012) 32GB 3G。
最佳答案
如果您启动了 MediaMuxer
类,但尚未向其提供任何数据,则该类将抛出“无法停止”异常。这没有多大意义,但这就是它的工作原理。
根本问题是没有数据进入,这通常是由于您确定的问题所致(在 this answer 中详细描述了 SurfaceTexture 的一个怪癖)。您需要确保执行工作的线程没有 Looper。
您最好使用 Grafika作为示例代码。 “连续捕捉”等 Activity 展示了应用环境中的相机到 MPEG 路径,而不是 CTS 测试环境。
关于java - CameraToMpegTest.java 不工作,以 IllegalStateException : Can't stop due to wrong state 结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26487832/
我经常使用stop Fortran 中固有的因各种原因停止执行(主要是在测试失败后)。 program test1 stop end program 除了停止程序执行之外什么都不做。 prog
我想编写一个函数,用字符 e 替换所有出现的字符 c。这些功能似乎正在发挥作用。然而,主要是,我希望能够重复输入一个字符串,扫描要替换的字符,扫描要替换的字符,并打印之前和之后的内容,直到输入的字符串
在 powershell 中,我看到了多种停止服务的方法 更现代的方式 Stop-Service wuauserv 而更传统的方式 NET STOP WUAUSERV 遗留方式 is much mor
所以问题是我需要一个正则表达式,只有当它的 stop 也意味着 stopp 或 sstoooppp 时,它才会匹配第二个单词> 后跟一个空格。我需要得到这个词,我找不到任何正则表达式来做到这一点,因为
我正在做这样的事情 http://jsfiddle.net/8ErSL/2/ 当您将鼠标悬停在任何文本框 (div) 上时,其中会出现一个小图标。 我想阻止图标的淡入淡出效果在我不小心将鼠标悬停在 d
这段代码在 Debug模式下工作得很好,但当不是 Debug模式时它总是抛出运行时异常。 mMediaRecorder.stop(); 根据 Java 文档: Stops recordin
这是我的full code ,这里是my project ,当我在 #onCreate 中使用 MediaRecorder#stop 时,它会引发 java.lang.RuntimeException
我使用 C# 编写了一个库并在 PowerShell 脚本中使用它。 C# 库将大量数据加载到数据库中。我正在使用 Start-Job 来启动该过程,并且我正在监视一个文件是否有错误。 但是,我发现即
我正在尝试编写以下问题的代码: 在 a0, a1, ..., an 处有 n 个酒店,使得 0 dp(k)+(ai-ak)^2) dp(i) = dp(k)+(ai-ak)^2)
我有一个简单的测试,我使用 run_forever 方法运行 Python asyncio 事件循环,然后立即在另一个线程中停止它。但是,事件循环似乎并没有终止。我有以下测试用例: import as
我有以下情况: 专用租赁 m4.large 运行 RHEL6 的 EC2 实例 使用 AWS 控制台手动启动它效果很好 尝试启动它的 Lambda 函数(用 Java 编写)失败,因为实例状态为:已停
我正在使用 Yajsw 将我的应用程序作为守护进程运行。 对于状态调用,我希望看到“正在运行”或“已停止”,但我收到的消息如下所示 SW043305-SRV01:/etc/init.d # ./tes
在 Tomcat 或 TomEE 中,service tomcat start/stop 和 ./catalina.sh run/stop 有什么区别? 他们做的事情完全一样吗? 最佳答案 catal
我正在尝试使用 C++ 和 OpenGL/GLUT 制作一个 Snake 克隆。然而,我一直在编程允许输入 Action 之间的短时间间隔时遇到问题。我已经尝试了一些计时方法,最后我为它创建了一个类(
问题: org.apache.catalina.loader.WebappClassLoader - The web application [/…] appears to have started
我正在尝试以下实验: 我有两个QpushButtons,比如PushA 和PushB。现在 PushA 在 QHBoxLayout 中,PushB 也在它自己的 QHBoxLayout 中。这两个水平
我已经在我的 windows 10 机器上安装了 Docker for Windows。当我尝试从“windows 容器”“切换到 linux 容器”时,出现错误。 Unable to start:
我在我的应用程序中集成了摄像头。当用户单击捕获按钮时,我隐藏了工具栏,以便摄像头预览屏幕尺寸增加。这会导致应用程序在停止在线录制时崩溃 - mMediaRecorder.stop(); 。 java.
运行功能时 stop("m Sys.setenv(LANG = "fr") > 2 + x Erreur : objet 'x' introuvable > Sys.setenv(LANG = "en
我有一个 Windows 10 内部版本,我正在尝试安装 cpriego/valet-linux使用 wsl2 我已经安装了 composer、php 和所有其他的要求。 现在当我做 valet st
我是一名优秀的程序员,十分优秀!