使用 Libstreaming 库 (Android) 在加载 VideoView 时自动播放音频
Play audio automatically on load of VideoView using Libstreaming library (Android)
我正在开发一个 phonegap 应用程序,它有一个 VideoView 屏幕来播放音频(来自 Wowza 流媒体引擎)。我的问题是,我想在屏幕上加载 VideoView 时立即播放音频。我的应用程序当前正在发生什么,当我的 VideoView 加载时它甚至没有显示在屏幕上(当我触摸屏幕时它会显示,这是另一个问题)。
现在当它出现在触摸屏幕上时,我必须单击播放按钮才能开始播放音频。 (我正在使用 libstreaming 库)
这是我的代码-
activity_main.xml
<io.vov.vitamio.widget.VideoView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
android:visibility="visible"
/>
Activity Class:
private VideoView mVideoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
if (!LibsChecker.checkVitamioLibs(this))
return;
mVideoView = (VideoView) findViewById(R.id.video_view);
mVideoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);
mVideoView.getHolder().setFormat(PixelFormat.RGBX_8888);
startRtmpStream();
}
public void startRtmpStream() {
mVideoView.setVideoPath(AppConfig.STREAM_URL_AUDIO_ONLY);
mVideoView.setMediaController(new MediaController(this));
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});
mVideoView.start();
}
AppConfig.java
public class AppConfig {
public static final String STREAM_URL_AUDIO_ONLY = "rtmp://10.101.3.129:1935/app1/myStream";
public static final String PUBLISHER_USERNAME = "";
public static final String PUBLISHER_PASSWORD = "";}
我就是这样解决的。
实际上 Vitamio 媒体播放器会自动开始播放音频如果 Wowza 媒体服务器上相应应用程序的“传入流”选项卡包含 运行 模式下的音频。
我的意思是,仅当音频启动时调用 Vitamio 的 start() 方法并且 运行 在 Wowza 媒体服务器上。
我所做的是,我首先检查(每 5 秒)音频是否打开,以及 Wowza 上的 运行(从另一台设备获取音频流),如果是 运行然后调用 start() 方法。
勾选
当 Wowza 服务器上的音频不是 运行 并且执行 Vitamio start() 方法时会出现问题。
您将必须实施 RestAPI 网络服务以在某个时间间隔内检查 Wowza 上的音频。
我正在开发一个 phonegap 应用程序,它有一个 VideoView 屏幕来播放音频(来自 Wowza 流媒体引擎)。我的问题是,我想在屏幕上加载 VideoView 时立即播放音频。我的应用程序当前正在发生什么,当我的 VideoView 加载时它甚至没有显示在屏幕上(当我触摸屏幕时它会显示,这是另一个问题)。
现在当它出现在触摸屏幕上时,我必须单击播放按钮才能开始播放音频。 (我正在使用 libstreaming 库)
这是我的代码-
activity_main.xml
<io.vov.vitamio.widget.VideoView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
android:visibility="visible"
/>
Activity Class:
private VideoView mVideoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
if (!LibsChecker.checkVitamioLibs(this))
return;
mVideoView = (VideoView) findViewById(R.id.video_view);
mVideoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);
mVideoView.getHolder().setFormat(PixelFormat.RGBX_8888);
startRtmpStream();
}
public void startRtmpStream() {
mVideoView.setVideoPath(AppConfig.STREAM_URL_AUDIO_ONLY);
mVideoView.setMediaController(new MediaController(this));
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});
mVideoView.start();
}
AppConfig.java
public class AppConfig {
public static final String STREAM_URL_AUDIO_ONLY = "rtmp://10.101.3.129:1935/app1/myStream";
public static final String PUBLISHER_USERNAME = "";
public static final String PUBLISHER_PASSWORD = "";}
我就是这样解决的。
实际上 Vitamio 媒体播放器会自动开始播放音频如果 Wowza 媒体服务器上相应应用程序的“传入流”选项卡包含 运行 模式下的音频。
我的意思是,仅当音频启动时调用 Vitamio 的 start() 方法并且 运行 在 Wowza 媒体服务器上。
我所做的是,我首先检查(每 5 秒)音频是否打开,以及 Wowza 上的 运行(从另一台设备获取音频流),如果是 运行然后调用 start() 方法。
勾选
当 Wowza 服务器上的音频不是 运行 并且执行 Vitamio start() 方法时会出现问题。 您将必须实施 RestAPI 网络服务以在某个时间间隔内检查 Wowza 上的音频。