Table of Contents |
---|
Описание
ffmpeg - это мощный кроссплатформенный инструмент для обработки и публикации видео- и аудиоконтента. С точки зрения публикаци публикации RTMP-потока, ffmpeg позволяет
- очень гибко настраивать параметры кодирования потока;
- передать серверу параметры RTMP-соединения.
Краткое руководство по тестированию
1. Для теста используем:
- WCS сервер
- ffmpeg
- веб-приложение Player в браузере Chrome для воспроизведения потока
2. Запустите ffmpeg следующим образом.
Здесь
- BigBuckBunny.mp4 - транслируемый ролик
- test1.flashphoner.com - WCS-сервер
- stream_ffmpeg - имя потока для публикации на сервере
Начнется публикация потока.
Code Block | ||||
---|---|---|---|---|
| ||||
ffmpeg -re -i BigBuckBunny.mp4 -preset ultrafast -acodec aac -vcodec h264 -strict -2 -f flv rtmp://test1.flashphoner.com:1935/live/stream_ffmpeg |
Здесь
- BigBuckBunny.mp4 - транслируемый ролик
- test1.flashphoner.com - WCS-сервер
- stream_ffmpeg - имя потока для публикации на сервере
Начнется публикация потока.
3. Откройте приложение Player в браузере https://test1.flashphoner.com:8888/client2/examples/demo/streaming/player/player.html, где test1.flashphoner.com - WCS-сервер. Укажите имя потока и нажмите Play. Начнется воспроизведение потока.
Excerpt | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Публикация Sorenson Spark + Speex 16 kHz потока в контейнере FLVWCS сервер принимает RTMP поток, закодированный в Sorenson Spark + Speex 16kHz в контейнере FLV. Такой поток можно опубликовать, например, при помощи ffmpeg следующим образом:
Ограничения1. Для дальнейшей обработки на сервере, в том числе для записи, такой поток будет транскодирован в H.264 + AAC. 2. При публикации в SDP для видео и для аудио должны быть указаны payload type 127 и 97 соответственно, например
|
Дополнительные возможности
Явное указание параметров кодирования
При публикации потока ffmpeg позволяет явно задавать параметры кодирования, например
...
Code Block | ||||
---|---|---|---|---|
| ||||
ffmpeg -re -f lavfi -i "movie=filename=test.mov:loop=0, setpts=N/(FRAME_RATE*TB)" -an -s 1280x720 -r 15 -f rawvideo -pix_fmt yuv420p - | ffmpeg -thread_queue_size 512 -an -f rawvideo -pix_fmt yuv420p -r 15 -s 1280x720 -i - -vn -f s16le -acodec pcm_s16le -ac 2 -i /dev/zero -r 15 -c:v libx264 -tune zerolatency -profile:v baseline -g 60 -b:v 960k -s 1280x720 -c:a aac -b:a 64k -f flv rtmp://127.0.0.1/live/test_video |
Передача параметров серверу при установке RTMP-соединения
При публикации потока ffmpeg позволяет указать в опции "-rtmp_conn"параметры RTMP-соединения, которые должны быть переданы серверу, например:
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "auth" : "22222222", "stream" : "3333333" } |
Поворот изображения потока, опубликованного при помощи ffmpeg
RTMP кодировщик ffmpeg дает возможность отправить метаданные ориентации изображения серверу при помощи ключей командной строки:
Code Block | ||||
---|---|---|---|---|
| ||||
ffmpeg -i input.mp4 -metadata:s:v rotate=90 -vcodec copy -acodec copy -strict -2 -f flv rtmp://test1.flashphoner.com:1935/live/stream_ffmpeg |
Отметим, что настройка поворота для ffmpeg указывается в градусах, при этом на сервер передается соответствующее значение поля orientation.