Комментарии 40
Ещё забыли сказать, что его можно использовать для транскодинга
2. Трансляция.
3. Фильтры
4… Много много
Или foobar2000 — универсальный, удобный, имеющий огромное количество возможностей… Настоящий медиа-комбайн, только не снискал большой популярности.Он никогда за популярностью и не гнался, но называть его заброшенным — это смешно.
Или не менее культовый Media Player Classic, заброшенный много лет назад.Много лет существовал форк MPC-HC, а сейчас живёт и здравствует MPC-BE.
Он никогда за популярностью и не гнался, но называть его заброшенным — это смешно.
Ну так у автора «Эпоха торрентов подходит к концу… Контент и приложения переходят в облака». А медиаплееры уже, наверное, давно закопали все.
Много лет существовал форк MPC-HC, а сейчас живёт и здравствует MPC-BE.
А вот это, кстати, очень не очевидно. Такое ощущение, что они скрывают своё существование. Если бы не обновления версии в составе K-Lite я бы вот и не знал о его существовании.
А вот это, кстати, очень не очевидно. Такое ощущение, что они скрывают своё существование. Если бы не обновления версии в составе K-Lite я бы вот и не знал о его существовании.Ну не такой распиаренный, как VLC, это да. Но на руборде обсуждение уже на тыщу страницы (авторы активно учаавствуют), на Doom9 около четырёхсот страниц — я бы не назвал это «скрыванием».
MPC-HC и сейчас на том же Doom9 существует. Последняя версия в конце октября вышла.
Для просмотра торрентов без ожидания полного скачивания достаточно включить последовательное скачивание и приоритет первой и последней части в своём торрент клиенте. После загрузки некотой части файл можно запускать на воспроизведение. Единственный недостаток что перемотка вперёд в незагруженную часть не будет работать.
- просмотр видеопотока с IP камер rtsp://192.168.1.111:5544/live0.264
- воспроизведение музыки на многоканальную акустику (5.1, 7.1), т.е. стерео играет не только на передних динамиках, но и на остальных. Модули Вывода\DirectX\Конфиграция динамиков\ 5.1
Также можно вывести одно видео на несколько окон, размеры и пропорции которых можно менять. Инструменты — эффекты и фильтры в видеоэффекты — геометрия — стена.
"C:\Program Files\VideoLAN\VLC\vlc.exe" --intf dummy udp://@239.255.0.2:1234 :demux=dump :demuxdump-file="test.ts" :demuxdump-append=true
Благо местный интернет провайдер до сих пор позволяет смотреть некоторые каналы на компе бесплатно (как пишет, «в тестовом режиме») и предоставляет их список в формате m3u.#! python3.4
import datetime
import os
import shlex
import subprocess
import sys
import time
class Logger():
def __init__(self, std_stream):
try:
Logger.log
except AttributeError:
log_name = SCRIPT_NAME + ".log"
if not os.path.exists(log_name):
f = open(log_name, "w", encoding="utf_8_sig")
f.write("")
f.close()
Logger.log = open(log_name, "a+", encoding="utf_8")
def write(self, message):
Logger.log.write(message)
self.flush()
def flush(self):
Logger.log.flush()
if __name__ == "__main__":
SCRIPT_NAME = os.path.splitext(__file__)[0]
MOUNT_DIR = "/cifs/192.168.0.150"
SAVE_DIR = os.path.join(MOUNT_DIR, "Public/Beholder")
TWO_STEP_START = False
sys.stdout = Logger(sys.stdout)
sys.stderr = Logger(sys.stderr)
if len(sys.argv) == 4:
channel, duaration, file_template = sys.argv[1:]
task = ": задание: " + file_template
try:
os.listdir(MOUNT_DIR)
except Exception:
pass
if not os.path.exists(SAVE_DIR):
print(str(datetime.datetime.now()) + task + ": нет доступа к сетевой папке: " + SAVE_DIR + "!!!")
sys.exit()
if TWO_STEP_START:
process = subprocess.Popen(shlex.split('/usr/bin/vlc --intf dummy udp://@239.255.0.{0}:1234 :demux=dump ":demuxdump-file=/dev/null"'.format(channel)))
time.sleep(15)
process.terminate()
time.sleep(5)
file_name = os.path.join(SAVE_DIR , "{0}-{1}.ts".format(datetime.datetime.now().strftime("%y%m%d-%H%M%S"), file_template))
print(str(datetime.datetime.now()) + task + ": начало записи...")
process = subprocess.Popen(shlex.split('/usr/bin/vlc --intf dummy udp://@239.255.0.{0}:1234 :demux=dump ":demuxdump-file={1}" :demuxdump-append=true'.format(channel, file_name)))
time.sleep(60*(int(duaration)-1)+40 if TWO_STEP_START else 60*int(duaration))
process.terminate()
print(str(datetime.datetime.now()) + task + ": окончание записи...")
else:
print(str(datetime.datetime.now()) + ": неверные аргументы: " + " ".join(sys.argv) + "!!!")
class Logger(threading.Thread):
def __init__(self, std_stream):
self.console = std_stream
self.with_lock = std_stream == sys.stderr
if self.with_lock:
super().__init__()
try:
Logger.log
except AttributeError:
log_name = SCRIPT_NAME + ".log"
if not os.path.exists(log_name):
with open(log_name, "w", encoding="utf_8_sig") as f:
f.write("")
Logger.log = open(log_name, "r+", encoding="utf8", newline="\r\n")
Logger.new_process = True
Logger.LAST_LINE_TEXT = ": Скрипт проработал: "
Logger.timedelta_tail = re.compile(":[^:]*$")
Logger.days = re.compile(r"(\d+) (days?), \d")
Logger.last_line = re.compile(r"[\s\S]*((20\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01]) " +
r"(?:[01]\d|2[0-3])(?::[0-5]\d){2}(?:\.\d{6})?)" + Logger.LAST_LINE_TEXT +
r"(?:\d+ (?:день|дня|дней), )?(?:1?\d|2[0-3]):[0-5]\d\.{3}\r\n$)")
def write_last_line(self):
def delta_str(time_delta):
time_delta_string = str(time_delta)
match = Logger.days.match(time_delta_string)
if match is not None:
number_of_days = "0" + match.group(1)
return time_delta_string.replace(match.group(2),
"день" if number_of_days[-1] == "1" and number_of_days[-2] != "1" else
"дня" if number_of_days[-1] in "234" and number_of_days[-2] != "1" else "дней")
return time_delta_string
if not keep_output:
now = datetime.datetime.now()
Logger.log.write(str(now) + Logger.LAST_LINE_TEXT +
Logger.timedelta_tail.sub("", delta_str(now + datetime.timedelta(seconds=0.1) - start_time)) + "...\n")
Logger.log.truncate()
def set_pos(self, starting_script=False):
Logger.log.seek(0, 2)
if starting_script:
Logger.new_process = False
return
pos = max(3, Logger.log.tell() - 87)
for i in range(5):
Logger.log.seek(pos)
try:
tail = Logger.log.read()
break
except UnicodeDecodeError:
pos += 1
else:
Logger.log.seek(0, 2)
tail = ""
# i == 0 при смещении -87 для наиболее вероятного случая:
# скрипт проработал 0 дней, выводимый текст оканчивается на r"[\u0401\u0410-\u044f\u0451]{6,}\.{3}(?:\r\n)?"
match = Logger.last_line.match(tail)
if match is not None:
if not Logger.new_process or datetime.datetime.now() - datetime.datetime.strptime(match.group(2),
"%Y-%m-%d %H:%M:%S.%f") < datetime.timedelta(minutes=1.3):
Logger.log.seek(Logger.log.tell() - len(match.group(1).encode("utf-8")))
if Logger.new_process:
Logger.new_process = False
def execute(self, func, *args, **kwargs):
if self.with_lock:
with print_lock:
func(*args, **kwargs)
else:
func(*args, **kwargs)
def write(self, message):
def write_(message):
self.console.write(message)
self.set_pos(message==FIRST_LOG_LINE)
Logger.log.write(message)
self.write_last_line()
self.execute(write_, message)
self.flush()
def flush(self):
def flush_():
self.console.flush()
Logger.log.flush()
self.execute(flush_)
def run(self):
if keep_output:
return
i = 0
while True:
i += 1
now = datetime.datetime.now()
next_update_time = start_time + datetime.timedelta(minutes=i)
if now > next_update_time:
continue
time.sleep((next_update_time - now).total_seconds())
with print_lock:
self.set_pos()
self.write_last_line()
self.flush()
Мы даже делали когда-то трансляцию определенной области рабочего стола через Интернет на одном VLC и пробросе портов, если я правильно помню и ничего не путаю. При этом из статьи узнал ну очень много нового, за что спасибо автору.
Однако, не соглашусь с тем, что сдулся Winamp и торренты. В одной отдельно взятой стране разработали эффективный метод борьбы не только с политически неугодными ресурсами, но и с онлайн кинотеатрами. Торрент заблокировать на порядок сложнее, потому «если что» они всегда останутся на случай ЧП. Winamp никогда не славился удобством воспроизведения видео, но для музыки он и сейчас незаменим. Разве можно VLC свернуть в узкую полоску, которая практически не будет занимать место на экране, но при этом будет иметь все необходимые кнопки и отображать нужную информацию?
www.laptopmag.com/articles/how-to-video-screen-capture-windows-10
Автор, сам плеер не умеет проигрывать торренты и то что вы написали про смерть, не совсем правда. Торренты живы и будут живы пока вод не сделают почти халявным, а качество приблизят к блюрей, что сейчас уже почти возможно, файлы 5-10гб с хорошим качеством уже смотрел не раз.
По поводу онлайн проигрывания нужно было хорошо погуглить, есть две основные программы, асе стрим и торрсервер. Первая так сказать коммерческая и сделана на питоне, что не позволяет смотреть тяжёлые торренты в районе 30-70гб. Вторая делается на протяжении 3х лет, сделана на го по примеру элементом(онлайн торренты на коди).
Так вот торренты онлайн сейчас больше используются на андроид приставках и телевизорах, для этого есть все инструменты для поиска и просмотра онлайн жирных торрентов. Теперь немного про vlc, не самый лучший плеер под андроид, но очень удобная. Под каждую платформу, идет разная реализация(код не смотрел, сужу по поведению) на Винде качает последовательно, но потом начинает читать то что прочитал до этого. На линуксе более менее похоже на ффмпег, но тоже иногда прыгает. На Андроиде вроде идентично ффмпег.
Сейчас парни с Украины и России делают фильмы с dv layer4 и layer7
Вот бы vlc наконец-то бы починил баг с воспроизведением списка видео параллельно со списком звуковых дорожек. А то все еще часто сл видео идет с первой дорожкой из списка.
Полезная статья. У меня возникла мысль положить на Video Wallpaper поток от видеокамеры направленный на улицу или на какой-нибудь стрим с пляжа :)
Загрузка видео с YouTubeПрямые трансляции тоже может сохранять, но перемотать — нет.
Может кто знает способ, как сохранить уже прошедную часть трансляции?
Кусочки паззла при этом проигрывают видео?
20 лет VideоLAN Client Player: 8 неочевидных возможностей программы