Loess.ru

having fun

ffmpeg+hls picture and audio streaming

Появилась задача — из говна и палок собрать переключение по расписанию
с видеопотока
на картинку+радиопоток
и обратно, и транслировать это в hls.

В первом приближении задача решена так:
cron поочерёдно запускает два скрипта:

killall -9 ffmpeg
find /mnt/ramdisk/ -mindepth 1 -mtime +1 -delete
/usr/bin/ffmpeg -stream_loop -1 -i /path/to/slide.ts \
-re -i http://audio.mp3.ip.address:8000/sample128 -bufsize 1920k -vf scale=w=720:h=576:force_original_aspect_ratio=decrease \
-c:a aac -b:a 128k \
-c:v libx264 -crf 21 -preset veryfast -pix_fmt yuv420p \
-hls_time 4 -hls_list_size 3 -hls_flags delete_segments+discont_start+append_list /mnt/ramdisk/video.m3u8 &>/dev/null &

при этом slide.ts собран ффмпегом из картинки (-i ‘/path/to/image.jpg’), ну просто потому что -i image.jpg работал крайне нестабильно при переключении потоков и вообще не работал в firefox:

/usr/bin/ffmpeg -y -f image2 -pattern_type glob -framerate 25 -i '/path/to/slide.jpg' -an -aspect 16:9 -qscale 2 -g 50 -f mpegts -pix_fmt yuv420p -r 25 /path/to/slide.ts

второй скрипт:

killall -9 ffmpeg
find /mnt/ramdisk/ -mindepth 1 -mtime +1 -delete

/usr/bin/ffmpeg -i http://video.mpeg2ts.ip.address:port/stream -bufsize 1920k -vf scale=w=720:h=576:force_original_aspect_ratio=decrease \
-c:a aac -b:a 128k \
-c:v libx264 -crf 21 -preset veryfast \
-hls_time 4 -hls_list_size 3 -hls_flags delete_segments+discont_start+append_list+temp_file /mnt/ramdisk/video.m3u8 &>/dev/null &

Опции для потоков сделаны специально одинаковыми, дабы минимизировать разницу между ними. Вторая строка удаляет лишние ts-файлы, которые остаются после каждого убийства ffmpeg.
Работает как говно, если честно, бывает, циклит ещё раз старые чанки, зато задачу свою выполняет довольно стабильно. Примерно это и требовалось, у меня больше нет желания заниматься экспериментами =@. Если будешь тюнить — имей в виду, что любая опция важна и может покрашить всё к чертям, и заставить браузерный hls-плеер тупить даже в те моменты, когда он тупить не должен.

https://ffmpeg.org/ffmpeg-formats.html#Options-5

Routing src vs sNAT vs masquerading

1. src field of linux routing table
https://serverfault.com/questions/451601/ip-route-show-src-field

Note that the src you are giving would only affect the traffic originating at your very host. If a foreign packet is being routed, it obviously would already have a source IP address so it would be passed on unaltered (unless you are using NAT of course, but this is an entirely different matter). Also, this setting might be overridden by a process specifically choosing to bind to a specific address instead of using the defaults when initiating connections (rather rare).

2 и 3.
http://sysadminz.ru/index.php?topic=3872.0

Принципиально SNAT ничем не отличается от MASQUERADE, разница лишь в том что SNAT может транслировать адрес источника в любой заданный адрес, а MASQUERADE — только в адрес физического интерфейса, непосредственно установленного на данном компьютере. MASQUERADE рекомендуется использовать только с интерфейсами, имеющими динамические IP адреса (например, при dialup соединении).

—————
Ещё чтива по теме: https://www.tecmint.com/setup-linux-as-router/ http://xgu.ru/wiki/Маршрутизация_в_Linux

Записки про Win7 и HiveOS

1. Win7 при отключении из розетки имеет тенденцию запускать вместо Win7 «средство восстановления при загрузке», которое, конечно же, не может «справиться с неполадкой» ни в каком режиме. Отключить это ненужное поведение можно набрав в консоли:

bcdedit /set bootstatuspolicy ignoreallfailures

Данная команда позволит игнорировать ошибки при завершении работы системы и по-умолчанию загрузка будет происходить в обычном режиме.

2. Для того, чтобы записать образ HiveOS на HDD из-под Windows, придётся потрудиться — ведь HDDRawCopy говорит «Error opening Target: …»
Не поможет ничего, кроме Etcher. Не забудьте включить unsafe mode в настройках =)

Чуть-чуть приватности и децентрализации

тулзы для прохода мимо dpi http://telegra.ph/Avtonomnyj-sposob-obhoda-DPI-i-ehffektivnyj-sposob-obhoda-blokirovok-sajtov-po-IP-adresu-GoodbyeDPI-i-ReQrypt-09-22 (pdf)
скрипт для развертывания OpenVPN на VPS http://telegra.ph/Bezopasnyj-OpenVPN-na-VPS-za-neskolko-minut-08-16 (pdf)
также можно погуглить дистры whonix https://www.whonix.org/ и streisand effect https://github.com/StreisandEffect/streisand
NS-проект Emercoin http://telegra.ph/Decentralizaciya-kak-otvet-bespredelu-sistema-domennyh-imen-kotorye-nevozmozhno-razdelegirovat-10-12 (pdf)
(В настоящее время система поддерживает четыре корневых зоны:
*.coin — всё связанное с монетами и коммерцией;
*.emc — всё связанное с проектом EmerCoin;
*.lib — От слов Library и Liberty — то есть библиотеки и свобода;
*.bazar — различные сервисы купли/продажи.)
подробнее об emercoin https://cryptor.net/kriptovalyuty/pod-kapotom-emercoin-chast-2-decentralizovannaya-necenzuriruemaya-sistema-domennyh
хоспади, я, кажется, полюбил телеграф.