Publish низкого расширения (уменьшился в последней версии)

inpost

Member
Здравствуйте.
Ранее делал так:
Code:
session.createStream({
        name: streamName,
        display: localVideo,
        cacheLocalResources: true,
        constraints: {
            audio: false,
            video: {
                bitrate: 1000000
            }
        },
        record: recordStream
    })
Ранее этот код брал у камеры высокое разрешение и транслировал его. Сейчас все ролики 320х240 транслируются. Я увидел в документации "picture resolution is forced to 320x240" в Safari, но по факту это происходит во всех браузерах. Пробовал указывать:
Code:
session.createStream({
        name: streamName,
        display: localVideo,
        cacheLocalResources: true,
        constraints: {
            audio: false,
            video: {
                width: {ideal: 1024},
                height: {ideal: 768},
                bitrate: 1000000
            }
        },
        record: recordStream
    })
Но всё равно идёт 320х240:



И ещё один вопрос, я стал замечать, что плеер в сборке с сервером не совпадает с плеером, лежащим отдельно. Не только по содержанию кода, хотя количество строчек почти одинаковое, но и расположением файлов.
Вроде подключаю 3 стандартных файла, но приходится для них применять странные расположения папок, посмотрите:

flashMediaProviderSwfLocation: '/skins/components/flashphoner-5-2-266/media-provider.swf',
receiverLocation: '/skins/components/flashphoner-5-2-266/examples/demo/dependencies/websocket-player/WSReceiver2.js',
decoderLocation: '/skins/components/flashphoner-5-2-266/FlashphonerWebCallServer-5.2.266/client2/examples/demo/dependencies/websocket-player/video-worker2.js'

=====================
Так же обновил Web-SDK:
0.5.28.2753.113
В ней та же проблема, вроде как в прошлых версиях исправлено было (
WCS-2145 | Fixed: Video resolution constraint modifiers cannot be passed
)
А всё равно не работает ideal. Я бы хотел указать, разрешение не выше 1024х768, но при этом максимально приближенное к этому, что позволяет камера!

Ещё, я заглянул в документацию сюда:
https://flashphoner.com/docs/api/WCS5/client/web-sdk/latest/Session.html
И там ни слова об {ideal: 768}. Помимо этого я не хочу насильно транслировать 1024х768 при условии, что камеры могут быть плохого качества и увеличение расширения уменьшит их качество и при небольшом битрейте это так же нанесёт удар двойной. И ещё я боюсь 16х10, 16х9, 3х4, то ест разной пропорции картинки, если их все приводить в 640х480, получим искажение картинки же, или нет?
 
Last edited:

Max

Administrator
Staff member
Добрый день.
А всё равно не работает ideal
Для того, чтобы отключить нормализацию ограничений, укажите при создании потока опцию, описанную здесь
Code:
disableConstraintsNormalization: true
например
Code:
publishStream = session.createStream({
    ...
    disableConstraintsNormalization: true,
    constraints {
        video: {
            width: {ideal: 1024},
            height: {ideal: 768}
        },
        audio: true
    }
}).on(STREAM_STATUS.PUBLISHING, function (publishStream) {
    ...
});
publishStream.publish();
В этом случае будет работать указание модификаторов ideal для разрешения.
Кроме того, параметр bitrate в настоящее время не используется. Для управления битрейтом при публикации используйте minBitrate и maxBitrate. Подробности см на этой странице. Отметим, что для форсирования битрейта в браузере Chrome и его производных необходимо использовать SDP или специальные настройки сервера.
И ещё один вопрос, я стал замечать, что плеер в сборке с сервером не совпадает с плеером, лежащим отдельно.
Пожалуйста, поясните, о каких расположениях идет речь.
Пример Player и Embed player из комплекта поставки используют следующие зависимости для работы WSPlayer
Code:
        Flashphoner.init({
            flashMediaProviderSwfLocation: '../../../../media-provider.swf',
            receiverLocation: '../../dependencies/websocket-player/WSReceiver2.js',
            decoderLocation: '../../dependencies/websocket-player/video-worker2.js',
            preferredMediaProvider: mediaProvider
        });
 

pride

Member
Здравствуйте.
Ранее делал так:
Code:
session.createStream({
        name: streamName,
        display: localVideo,
        cacheLocalResources: true,
        constraints: {
            audio: false,
            video: {
                bitrate: 1000000
            }
        },
        record: recordStream
    })
Ранее этот код брал у камеры высокое разрешение и транслировал его. Сейчас все ролики 320х240 транслируются. Я увидел в документации "picture resolution is forced to 320x240" в Safari, но по факту это происходит во всех браузерах. Пробовал указывать:
Code:
session.createStream({
        name: streamName,
        display: localVideo,
        cacheLocalResources: true,
        constraints: {
            audio: false,
            video: {
                width: {ideal: 1024},
                height: {ideal: 768},
                bitrate: 1000000
            }
        },
        record: recordStream
    })
Но всё равно идёт 320х240:



И ещё один вопрос, я стал замечать, что плеер в сборке с сервером не совпадает с плеером, лежащим отдельно. Не только по содержанию кода, хотя количество строчек почти одинаковое, но и расположением файлов.
Вроде подключаю 3 стандартных файла, но приходится для них применять странные расположения папок, посмотрите:

flashMediaProviderSwfLocation: '/skins/components/flashphoner-5-2-266/media-provider.swf',
receiverLocation: '/skins/components/flashphoner-5-2-266/examples/demo/dependencies/websocket-player/WSReceiver2.js',
decoderLocation: '/skins/components/flashphoner-5-2-266/FlashphonerWebCallServer-5.2.266/client2/examples/demo/dependencies/websocket-player/video-worker2.js'

=====================
Так же обновил Web-SDK:
0.5.28.2753.113
В ней та же проблема, вроде как в прошлых версиях исправлено было (
WCS-2145 | Fixed: Video resolution constraint modifiers cannot be passed
)
А всё равно не работает ideal. Я бы хотел указать, разрешение не выше 1024х768, но при этом максимально приближенное к этому, что позволяет камера!

Ещё, я заглянул в документацию сюда:
https://flashphoner.com/docs/api/WCS5/client/web-sdk/latest/Session.html
И там ни слова об {ideal: 768}. Помимо этого я не хочу насильно транслировать 1024х768 при условии, что камеры могут быть плохого качества и увеличение расширения уменьшит их качество и при небольшом битрейте это так же нанесёт удар двойной. И ещё я боюсь 16х10, 16х9, 3х4, то ест разной пропорции картинки, если их все приводить в 640х480, получим искажение картинки же, или нет?
Code:
session.createStream({
        name: streamName,
        display: localVideo,
        cacheLocalResources: true,
        receiveVideo: false,
        receiveAudio: false,
        disableConstraintsNormalization: true,
        constraints : {
          audio : false,
          video : {
            "width": {
              "min": 320,
              "max": 1024,
              "ideal" : 1024
            },
            "height": {
              "min": 240,
              "max": 720,
              "ideal" : 720
            },
            "minBitrate" : 500,
            "maxBitrate" : 4000
          }
        }
    })
/usr/local/FlashphonerWebCallServer/conf/flashphoner.properties :
Code:
webrtc_cc_min_bitrate=500000
webrtc_cc_max_bitrate=4000000
#bitrate fix chrome
webrtc_sdp_min_bitrate_bps=500000
webrtc_sdp_max_bitrate_bps=4000000
Такими настройками я добился идеального для нас максимального качества 720p с битрейтом в диапазоне 500-4000
 
Last edited:

Max

Administrator
Staff member
Добрый день.
У вас, возможно, опечатка, вот здесь
Code:
webrtc_cc_max_bitrate=400000
должно быть на порядок больше
Code:
webrtc_cc_max_bitrate=4000000
 

pride

Member
Добрый день.
У вас, возможно, опечатка, вот здесь
Code:
webrtc_cc_max_bitrate=400000
должно быть на порядок больше
Code:
webrtc_cc_max_bitrate=4000000
Да, вы правы, исправил, спасибо)
 
Top