GiraffePlayer2 видео плеер проблема на трек изменения в Android
Я создал новое приложение, и для этого мне нужен видеоплеер, который поддерживает все форматы видео с мульти аудио треком. поэтому я ищу в Google и нахожу Giraffe Player 2, у которого есть все необходимое для моего приложения. Но я столкнулся с проблемой. Пожалуйста, помогите мне исправить это.
Проблема:- Я использую пример кода приложения для воспроизведения видео в формате MKV. Видеоконтент с двумя звуковыми дорожками для разных языков при воспроизведении локального видео работает нормально, но когда я загрузил видео со своего сервера ( Url) и изменил звуковую дорожку, скорость видео увеличится и дорожка видео и аудио будет отличаться. Вы можете помочь мне, как решить это?
Основная деятельность
GiraffePlayer.debug = true;//show logs
getSupportFragmentManager().beginTransaction().add(android.R.id.content,
new VideoPlayerFragment()).commit();
VideoPlayerFragment
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//set global configuration: turn on multiple_requests
PlayerManager.getInstance().getDefaultVideoInfo().addOption(Option.create(IjkMediaPlayer.OPT_CATEGORY_FORMAT,
"multiple_requests", 1L));
mContext = getActivity();
}
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
//my video link
testUrl = "VIDEO_URL_WITH_MULTIPLE_AUDIO_TRACK";
if (isNetworkPresent()) {
videoView.setVideoPath(videolist.get(videopos));
videoView.getVideoInfo().addOption(Option.create(IjkMediaPlayer.OPT_CATEGORY_PLAYER,
"framedrop", 5L));
videoView.getPlayer().aspectRatio(aspectRatio);
videoView.getPlayer().start();
} else {
Toast.makeText(mContext, "Please check your internate
connection", Toast.LENGTH_SHORT).show();
}
}
// в xml видео фрагмента
<tcking.github.com.giraffeplayer2.VideoView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="@dimen/_250sdp" />
AndroidManifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-sdk />
<application
android:allowBackup="true"
android:banner="@drawable/ic_close_white_24dp"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Я отлаживаю плеер и нахожу, где трек изменится здесь:-
case MSG_CTRL_SELECT_TRACK:
int track = (int) msg.obj;
if (mediaPlayer instanceof IjkMediaPlayer) {
((IjkMediaPlayer) mediaPlayer).selectTrack(track);
} else if (mediaPlayer instanceof AndroidMediaPlayer) {
((AndroidMediaPlayer) mediaPlayer).getInternalMediaPlayer().selectTrack(track);
}
break;
В моем случае используется IjkMediaPlayer.