ExoPayer, нет звука на устройствах Huawei - PullRequest
0 голосов
/ 30 января 2020

Я срочно использую exoplayer_2.11.1 для прямой трансляции контента с определенных URL-адресов в элемент пользовательского интерфейса PlayerView. Телефоны Samsung, кажется, работают без проблем, но на устройствах Huawei нет звука.

Вот код активности:

public class WatchActivity extends AppCompatActivity {
SimpleExoPlayer player;
PlayerView playerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_watch);

    String MyUrlVid = "http://android.bssapp.com:8000/00/25220415/8638"; //example live stream url
    Uri UrlVideo = Uri.parse(MyUrlVid);

    player = new SimpleExoPlayer.Builder(this).build();
    playerView = findViewById(R.id.player_view);

    playerView.setPlayer(player);

    DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this,"TvTest");
    MediaSource videoSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(UrlVideo);

    player.prepare(videoSource);
    player.setPlayWhenReady(true);

}

Что я пробовал:

public class WatchActivity extends AppCompatActivity {
SimpleExoPlayer player;
PlayerView playerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_watch);

    String MyUrlVid = "http://android.bssapp.com:8000/00/25220415/8638";
    String MyUrlAud = "https://files/.../a_random_audio_file.mp3"; //*1
    Uri UrlVideo = Uri.parse(MyUrlVid);
    Uri UrlAudio = Uri.parse(MyUrlAud);

    player = new SimpleExoPlayer.Builder(this).build();
    playerView = findViewById(R.id.player_view);

    playerView.setPlayer(player);


    DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this,"TvTest");//*2
    MediaSource videoSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(UrlVideo);
    MediaSource audioSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(UrlAudio);


    player.prepare((new MergingMediaSource(videoSource, audioSource)));
    player.setPlayWhenReady(true);

}
    • Есть ли способ извлечь АУДИО ТОЛЬКО из "MyUrlVid" и использовать его здесь? (Как работает аудио по данной ссылке)
    • Добавление этого флага "FLAG_ALLOW_NON_IDR_KEYFRAMES", похоже, решает проблему для некоторых людей, использующих HLS но HLS не работает вообще в моем случае (ни звук, ни видео).

Как примечание, я продолжаю получать эти две ошибки где-то в середине из процессов, но они, кажется, ничего не нарушают:

E/HwExtendedCodec: mime: video/avc matching compontent failed!
E/ACodec: [OMX.hisi.video.decoder.avc] setPortMode on output to DynamicANWBuffer failed w/ err -2147483648
...