На днях стал вопрос трансляции потокового видео телеканала на ютуб. Хотелось задействовать минимум ресурсов при максимальной эффективности. На помощь пришла консольная программа ffmpeg.
FFmpeg не только потребляет минимум ресурсов, но и обладает мощным функционалом. Скачать её можно с официального сайта https://ffmpeg.org/ или мою версию программы под Windows здесь.
Для запуска программы перейдите в командную строку Пуск - выполнить - пишем cmd или Пуск - поиск - cmd. Должна открыться командная строка, теперь переходим в папку с нашей программой
cd c:\ffmpeg-20200812-bb59bdb-win64-static\ffmpeg-20200812-bb59bdb-win64-static\bin\
Где c:\* это расположение ffmpeg.exe
Самый простой способ запустить трансляцию на ютуб и проверить работоспособность передачи потокового видео в формате m3u8 с помощью ffmpeg
ffmpeg -i https://HLS.m3u8 -f flv rtmp://a.rtmp.youtube.com/live2/KEY
KEY - ключ трансляции, чтобы его получить нужно перейти на свой канал на ютубе, начать трансляцию, во вкладке настройка трансляции мы видим заветный ключ.
Если хотите транслировать видео используя ffmpeg
ffmpeg -i video.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/KEY
Такой способ передает картинку не самого лучшего качества, можно сказать она пиксельная даже в 720p. Это исправляется добавлением команды -vcodec libx264.
ffmpeg -i https://HLS.m3u8 -vcodec libx264 -f flv rtmp://a.rtmp.youtube.com/live2/KEY
Для сравнения взгляните на два изображения
Тут есть небольшой подвох, без параметра vcodec у меня процессор загружен на 7%, при обработке кодеком -vcodec libx264 на 40-80%. Пусть каждый выберет сам качество или потребляемый ресурс.
Некоторые потоки используют только свое программное обеспечение, поэтому мы можем задать user agent в ffmpeg
ffmpeg -user-agent "Player/0.1.8 (Linux;Android 7.1.2) PlayerLib/0.8.0" -i https://hls.m3u8 -vcodec libx264 -f flv rtmp://a.rtmp.youtube.com/live2/ключ
Можно также "поиграться" с картинкой видео, т.к. ютуб сам обжимает видео, можно выставить битрейт повыше или пониже. Вот пример битрейта в 1000k с частотой кадра 24 и ограничением буфера
ffmpeg -i HLS.m3u8 -vcodec libx264 -profile:v baseline -b:v 1000k -maxrate 1000k -bufsize 1000k -r 24 -f flv rtmp://a.rtmp.youtube.com/live2/ключ
Исходя из выше сказанного, запустить трансляцию на ютубе программой ffmpeg можно одной строкой. Её можно запустить на любом самом дешевом VDS без графического окружения и даже на телефоне, например, используя termux.