При воспроизведении видео нет звука.

markup

New Member
Добрый день!
Подскажите, как включить звук при воспроизведении видео без jquery?
Для воспроизведения не использую кастомных плееров.
Использую vue
 

Max

Administrator
Staff member
Добрый день.
Используйте функцию Stream.unmuteRemoteAudio(), например
Code:
    stream = session.createStream(options).on(STREAM_STATUS.PENDING, function (stream) {
          ...
    }).on(STREAM_STATUS.PLAYING, function (stream) {
          stream.unmuteRemoteAudio();
          ...
    });
    stream.play();
 

Max

Administrator
Staff member
Пожалуйста, уточните следующее:
- какая сборка WCS используется, с какой сборкой Web SDK?
- по какой технологии играете видео: WebRTC, MSE, WSPlayer, HLS?
- воспроизводится ли проблема в примерах из коробки при проигрывании потока: Two Way Streaming, Player?
Если проблема не воспроизводится, измените, пожалуйста, код этого примера таким образом. чтобы проблема воспроизводилась, и вышлите нам, используя эту ссылку
 

markup

New Member
5.2.688
используем WebRTC
Two Way Streaming, Player - проблема не воспроизводится, так как там в одном и том же запускается стрим и воспроизводится. У меня только воспроизведение.
JavaScript:
const options = {
    name: this.data.video.name,
    display: this.$refs.video,
};
const playStream = (session) => {
    this.session = session.createStream(options).on(STREAM_STATUS.PENDING, (stream) => {
        const video = document.getElementById(stream.id());
        if (!video.hasListeners) {
            video.hasListeners = true;
            video.addEventListener('playing', () => {
                this.session.unmuteRemoteAudio();
            });
        }
    }).on(STREAM_STATUS.PLAYING, (stream) => {
        this.onStarted.push(stream);
        this.isLoad = false;
    }).on(STREAM_STATUS.FAILED, () => {
        this.isShowMessageStream = true;
        this.isLoad = false;
    });
    this.session.play();
};
// eslint-disable-next-line
Flashphoner.init({});
// eslint-disable-next-line
Flashphoner.createSession({ urlServer: this.serverAddr })
    .on(SESSION_STATUS.ESTABLISHED, (session) => {
    playStream(session);
});
при таком вызове в консоли пишет
12:28:34 INFO webrtc - Autoplay detected! Trying to play a video with a muted sound...
flashphoner.js:14546 Unmuting failed and the element was paused instead because the user didn't interact with the document before. https://goo.gl/xX8pDD
 

Max

Administrator
Staff member
Player - проблема не воспроизводится, так как там в одном и том же запускается стрим и воспроизводится
В этом примере поток только воспроизводится. В нем же указано, как обойти autoplay policy, но с использованием jQuery
Code:
    $("#volumeControl").slider({
        range: "min",
        min: 0,
        max: 100,
        value: currentVolumeValue,
        step: 10,
        animate: true,
        slide: function(event, ui) {
            //WCS-2375. fixed autoplay in ios safari
            stream.unmuteRemoteAudio();
            currentVolumeValue = ui.value;
            stream.setVolume(currentVolumeValue);
        }
    }).slider("disable");
    ...
    stream = session.createStream(options).on(STREAM_STATUS.PENDING, function (stream) {
        $("#preloader").show();
        var video = document.getElementById(stream.id());
        if (!video.hasListeners) {
            video.hasListeners = true;
            //don't resize html5 video
            if (video.nodeName.toLowerCase() !== "video") {
                ...
            } else {
                //WCS-2375. fixed autoplay in ios safari
                video.addEventListener('playing', function () {
                    if (autoplay && stream.isRemoteAudioMuted()) {
                        $("#volumeControl").slider('value', 0);
                    }
                });
            }
        }
    }).on(STREAM_STATUS.PLAYING, function (stream) {
        ...
    });
    stream.play();
Если Вы не хотите использовать jQuery, придется использовать кастомный video элемент на странице с указанием атрибута muted
HTML:
...
           <div class="col-sm-6">
                <div class="text-center text-muted">Player</div>
                <div class="fp-Video">
                    <div id="remoteVideo" class="display"><video id="videoMuted" muted autoplay></video></div>
                </div>
...
JavaScript:
var videoMuted = document.getElementById("videoMuted");
...
function playStream() {
    var session = Flashphoner.getSessions()[0];
    var streamName = $('#playStream').val();

    session.createStream({
        name: streamName,
        display: remoteVideo,
        remoteVideo: videoMuted
    }).on(STREAM_STATUS.PENDING, function (stream) {
        var video = videoControls;
        video.addEventListener('playing', function () {
              if (stream.isRemoteAudioMuted()) {
                   stream.unmuteRemoteAudio();
              }
        });
    ...
    }).play();
}
...
 
Top