Бесшовный плейлист vlc в сеть
Модератор: Модераторы разделов
Бесшовный плейлист vlc в сеть
Кто нибудь знает как добиться бесшовного переключения между треками плейлиста в vlc при вещании в сеть по http? У меня при смене трека mplayer закрывается так как предыдущий трек закончился
- Bizdelnick
- Модератор
- Сообщения: 20795
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Бесшовный плейлист vlc в сеть
https://wiki.videolan.org/Documentation:Str.../#Miscellaneous
Опция --sout-keep должна делать именно это. Но не знаю, работает ли она с HTTP. Должна по идее.
Опция --sout-keep должна делать именно это. Но не знаю, работает ли она с HTTP. Должна по идее.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Бесшовный плейлист vlc в сеть
попробовал. Но всё чего добился - теперь нет чёткого обрыва канала. Теперь начинается не стабильность потока как бы при смене треков, что так или иначе приводит к отключению mplayer. Может чем другим победить? Чтобы был стабильный поток 25 кадров/сек?
- Bizdelnick
- Модератор
- Сообщения: 20795
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Бесшовный плейлист vlc в сеть
А, Вы видео по HTTP пытаетесь вещать? Забейте, бестолковое это дело. Смотрите в сторону других протоколов.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Бесшовный плейлист vlc в сеть
Подозреваю что п\без перекодирования на лету (или какой-то предварительной подготовки видео, или смены плеера) проблему исправить не получится. Когда кончается один файл и начинается другой, кончается и видеопоток, если плеер прекращает воспроизведение увидев что видеопоток закончился то что тут сделаешь не объединяя файлы в один поток (т.е. перекодируя).
Может-быть если исходные файлы предварительно перегнать в какой-то пригодный для стриминга вид то проблема решится, но не факт.
Может-быть если исходные файлы предварительно перегнать в какой-то пригодный для стриминга вид то проблема решится, но не факт.
- Bizdelnick
- Модератор
- Сообщения: 20795
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Бесшовный плейлист vlc в сеть
Не решится. Я по этим граблям прошёлся с год назад.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Бесшовный плейлист vlc в сеть
А решений не нашли?
- Bizdelnick
- Модератор
- Сообщения: 20795
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Бесшовный плейлист vlc в сеть
Решений нашли. В зависимости от задач - либо RTSP, либо RTMP и HLS через nginx-rtmp-module. Но Вы-то задачу не обрисовали.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Бесшовный плейлист vlc в сеть
мне нужно реализовать бесшовный поток. Нет видео на udp://@192.168.0.1:1234 или на http://192.168.0.2:8080 - тогда резервное видеоиз локального файла до тех пор пока не появится источник, при том что клиенту не подаётся никаких намёков о каких то переключениях наверху, всё должно идти бесшовно и даже там где нет вообще ничего - поток должен быть 25 кадров в секунду хотябы чёрного экрана. Это нужно для передачи IPTV приставке, которая при спотыкании о входной поток приходит в режим "ошибка чтения потока" и ждёт когда с помощью пульта ДУ воспроизведение перезапустят, вот именно этого нужно избежать этим бесшовным видео потоком.
- Bizdelnick
- Модератор
- Сообщения: 20795
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Бесшовный плейлист vlc в сеть
С этого надо было начинать. Если клиент только один - возможно, и с HTTP не совсем дохлый вариант, хотя всяко не лучший. А UDP пробовали?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Бесшовный плейлист vlc в сеть
Bizdelnick писал(а): ↑11.06.2014 19:48
С этого надо было начинать. Если клиент только один - возможно, и с HTTP не совсем дохлый вариант, хотя всяко не лучший. А UDP пробовали?
В принципе пункт назначения IPTV приставка, до туда пробовал пока только UDP. Вот думаю может реально дать ей непрерывный поток видео?...
- Bizdelnick
- Модератор
- Сообщения: 20795
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Бесшовный плейлист vlc в сеть
Реально, реально. Естественно, с перекодированием и с --sout-keep.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Бесшовный плейлист vlc в сеть
Попробовал с перекодированием выгонять на http, не вышло, обрывает. Да даже на udp, максимум что даст - "подвешивание" канала с последующим продолжением, а нужно без этого.
- Bizdelnick
- Модератор
- Сообщения: 20795
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Бесшовный плейлист vlc в сеть
Какое ещё подвешивание? Откуда?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Бесшовный плейлист vlc в сеть
Каким образом Вам доказать своё или Ваше? (То что видео поток данных действительно останавливается на время отсутствия входящего)
- Bizdelnick
- Модератор
- Сообщения: 20795
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Бесшовный плейлист vlc в сеть
Похоже, я кое-что подзабыл. Помимо --sout-keep надо использовать модуль gather. Цепочка должна быть примерно как во втором примере: #transcode{...}:gather:std{access=udp,dst=address:port}
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Бесшовный плейлист vlc в сеть
Всё это почему то не даёт нужного результата.
Начал экспериментировать с astra на lua, но получается только либо ретранслировать http в udp
либо транслировать чисто плейлист файлов. Некий такой гибрид у меня чето никак не получается:убираю- начинает работать выводя чисто файл, а если не убрать - синтаксическая ошибка
Начал экспериментировать с astra на lua, но получается только либо ретранслировать http в udp
Код: Выделить всё
host = "192.168.0.203"
port = 8085
dst = nil
http_request({
host = host,
port = port,
path = "/",
stream = "true",
instance = "instance",
headers = {
"User-Agent: Astra " .. astra.version,
"Host: " .. host .. ":" .. port,
"Connection: close",
},
callback = function(request, response)
if response == nil then
astra.exit()
elseif response.code == 200 then
dst = udp_output({
upstream = request:stream(),
addr = "127.0.0.1",
port = 1234
})
else
log.error("[example #2] " .. response.code .. ": " .. response.message)
astra.exit()
end
end
})
Код: Выделить всё
#!/usr/bin/env astra
outaddr = "127.0.0.1"
outport = 1234
host = "192.168.0.203"
port = "8085"
input = nil
dst = nil
log.set({ debug = true, stdout = true, filename = "/var/log/astra/astra_infokanal.log" })
pidfile("/var/run/astra_infokanal.pid")
log.info("Starting Astra ")
playlist = {
"/home/gcp.ts",
"http"
}
instance = { item = 0, input = nil, output = nil, }
function output()
log.info("output")
if playlist[instance.item] == "http" then
http_request({
host = host,
port = port,
loop = false,
path = "/",
stream = true,
instance = instance,
headers = {
"User-Agent: Astra " .. astra.version,
"Host: " .. host .. ":" .. port,
"Connection: close",
},
callback = function(input, response)
dst = udp_output({
upstream = input:stream(),
addr = outaddr,
port = outport
})
callback = play_next_item
})
-- end
else
instance.output = udp_output({
upstream = instance.input:stream(),
-- upstream = input:stream(),
addr = outaddr,
port = outport
})
end
end
function play_next_item()
log.info("function play_next_item")
if instance.item == #playlist then
instance.item = 1
else
instance.item = instance.item + 1
end
-- if instance.input then instance.input = nil end
if instance.output then instance.output = nil end
log.info("garbage collector")
collectgarbage()
if playlist[instance.item] == "/home/gcp.ts" then
log.info("input file")
instance.input = file_input({
filename = playlist[instance.item],
loop = false,
callback = play_next_item
})
elseif playlist[instance.item] == "udp" then
log.info("input stream udp")
instance.input = udp_input({
addr = "192.168.0.1",
port = "1234",
loop = false,
callback = play_next_item
})
elseif playlist[instance.item] == "http" then
log.info("input stream http")
-- callback = play_next_item
end
output()
log.info("instance.item " .. instance.item)
log.info("instance.input.data " .. playlist[instance.item])
end
play_next_item()
Код: Выделить всё
callback = function(input, response)
dst = udp_output({
upstream = input:stream(),
addr = outaddr,
port = outport
})
Re: Бесшовный плейлист vlc в сеть
Что то так и не пришёл к решению, начал копать с "коммутациями"... VLC можно заставить переключаться на следующий источник плейлиста, если текущий источник стал недоступен в течение например 0,5 сек? что UDP что HTTP входной поток после отключения хоста от сети (не закрытие проги-источника) - VLC стоит и "мудро" дожидается появления связи, но мне то нужно чтоб он отказался от этой затеи по истечение полсекунды