我正在使用VideoView组件播放视频.手动调用stopPlayback()后,我似乎无法清除VideoView显示.我想重置VideoView,以便可以看到原始背景.
我正在使用的代码:
private VideoView videoViewer = null;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
if (videoViewer != null) {
videoViewer.setOnPreparedListener(new OnPreparedListener());
}
...
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (videoViewer != null) {
videoViewer.stopPlayback();
videoViewer.setVideoURI(Uri.parse("http://my_vido_url/playlist.m3u8"));
}
}
private class OnPreparedListener implements MediaPlayer.OnPreparedListener {
@Override
public void onPrepared(MediaPlayer mp) {
videoViewer.start();
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,基于VideoView.java源,stopPlayback()在底层MediaPlayer上执行以下操作:
public void stopPlayback() {
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Android PreferenceScreen作为布局我的用户设置的便捷方式,但我不想将首选项保存到设备共享首选项.这是可能的,还是我应该使用不同的机制,如ListView?
使用该PreferenceScreen类型似乎非常方便,因为我需要不同的小部件(即开关,编辑文本).但我已经遇到了持久性问题,即.我输入的任何东西都会在我不想要它的时候持续存在.
settings.xml中:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Preference
android:key="settings_type"
android:title="@string/label_type" />
<EditTextPreference
android:key="settings_edit_name"
android:title="@string/label_name"
android:dialogTitle="Enter a name"
android:singleLine="true" />
<SwitchPreference
android:key="settings_edit_state"
android:title="@string/label_state"
android:summary="Enable or disable the state" />
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud) 我如何可以检测从失败av_interleaved_write_frame/ av_write_frame时的输出使用TLS和连接失败?目标变为不可用后,这两个函数将继续返回0.当不使用TLS时,函数立即检测到故障并返回-ve返回码.
TLS输出:
av_interleaved_write_frame st.tb=90000, result=0
Run Code Online (Sandbox Code Playgroud)
非TLS输出:
av_interleaved_write_frame failed result=-32 - Broken pipe
Run Code Online (Sandbox Code Playgroud)
也可以使用命令行工具演示此行为.
普通连接的预期结果 - 连接失败终止程序:
$ ffmpeg -rtsp_transport tcp -i rtsp://<rtsp_source>:554... -vcodec copy -an -f rtsp "rtsp://<rtsp_dest>:1935..."
ffmpeg version N-68044-g9f9440b Copyright (c) 2000-2014 the FFmpeg developers
built on Nov 27 2014 03:13:44 with gcc 4.9.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora …Run Code Online (Sandbox Code Playgroud) 我在Windows中的Eclipse Luna中开发了一个Java应用程序,它在Amazon EC2(c3.large,Amazon Linux)中运行.此应用程序处理以非常一致的传入速率工作.当我针对JDK 8u31构建应用程序时,EC2 CPU负载远高于针对JDK 7u75构建的相同应用程序.
该应用程序最初使用EC2上的默认JRE运行,我添加了OpenJDK 1.8.0.31以利用Java 8 Process waitFor(长超时,TimeUnit单元).此应用程序的主要工作涉及使用Runtime.exec调用应用程序.
$ sudo alternatives --config java
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
* 1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
+ 2 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.31-2.b13.5.amzn1.x86_64/jre/bin/java
Run Code Online (Sandbox Code Playgroud)
应用程序针对1.7构建时的示例负载平均值:
top - 00:20:28 up 4 days, 10:41, 4 users, load average: 0.37, 0.26, 0.52
Run Code Online (Sandbox Code Playgroud)
应用程序构建为1.8时的平均负载示例:
top - 23:45:52 up 4 days, 10:06, 4 users, load average: 2.28, 2.60, 2.01
Run Code Online (Sandbox Code Playgroud)
看起来它可能与Open JDK 1.8.0.31有关,但我不知道如何调试它.没有代码更改,我只是在Eclipse Luna中更改合规性级别并在1.7和1.8之间构建.知道为什么负载会如此不同?
更新:
当我在EC2上使用Oracle JDK时,我看到类似的高CPU负载.
$ sudo alternatives --config java
There are 3 programs which …Run Code Online (Sandbox Code Playgroud)