Как стать автором
Обновить

Комментарии 40

Ну вы бы хоть проверяли, о чём пишете. Порнхаб, например, не работает с тех пор, как они запретили скачивать видео. Об этом даже на странице плагина написано
Усё работает шеф! )
Автор плагина оперативно поправил его работу
На скриншоте узнаваемый логотип, остальное NSFW ;)"

Ещё забыли сказать, что его можно использовать для транскодинга

1. Транскодинг.
2. Трансляция.
3. Фильтры
4… Много много
управление через telnet еще есть
может работать без gui
Или foobar2000 — универсальный, удобный, имеющий огромное количество возможностей… Настоящий медиа-комбайн, только не снискал большой популярности.
Он никогда за популярностью и не гнался, но называть его заброшенным — это смешно.
Или не менее культовый Media Player Classic, заброшенный много лет назад.
Много лет существовал форк MPC-HC, а сейчас живёт и здравствует MPC-BE.
Он никогда за популярностью и не гнался, но называть его заброшенным — это смешно.

Ну так у автора «Эпоха торрентов подходит к концу… Контент и приложения переходят в облака». А медиаплееры уже, наверное, давно закопали все.

Много лет существовал форк MPC-HC, а сейчас живёт и здравствует MPC-BE.

А вот это, кстати, очень не очевидно. Такое ощущение, что они скрывают своё существование. Если бы не обновления версии в составе K-Lite я бы вот и не знал о его существовании.
А вот это, кстати, очень не очевидно. Такое ощущение, что они скрывают своё существование. Если бы не обновления версии в составе K-Lite я бы вот и не знал о его существовании.
Ну не такой распиаренный, как VLC, это да. Но на руборде обсуждение уже на тыщу страницы (авторы активно учаавствуют), на Doom9 около четырёхсот страниц — я бы не назвал это «скрыванием».

MPC-HC и сейчас на том же Doom9 существует. Последняя версия в конце октября вышла.

А мне было полезно. Узнал о выводе напрямую с камеры. Буду в спальне использовать.
Только оно довольно фигово сделано. Надо вручную задавать размер, аспект (даже при выставленном размере FullHD он показывает 4:3) и частоту кадров (у меня без этого показывает всего 5fps). Причем все это надо делать при каждом запуске.
У меня вроде норм заработало. Поставил галку «дополнительные параметры» и произошло видимо взаимодействие с драйвером: список разрешений, поддерживаемых камерой, и FPS=30.
для просмотра rtsp потока из ip камеры или видеорегистратора

Для просмотра торрентов без ожидания полного скачивания достаточно включить последовательное скачивание и приоритет первой и последней части в своём торрент клиенте. После загрузки некотой части файл можно запускать на воспроизведение. Единственный недостаток что перемотка вперёд в незагруженную часть не будет работать.

В личном использовании:
  • просмотр видеопотока с IP камер rtsp://192.168.1.111:5544/live0.264
  • воспроизведение музыки на многоканальную акустику (5.1, 7.1), т.е. стерео играет не только на передних динамиках, но и на остальных. Модули Вывода\DirectX\Конфиграция динамиков\ 5.1
VLC умеет (умел, поломали?) параллельно воспроизводить два и более видеопотока, что удобно, например, для их сравнения. Медиа — открыть файлы — показать дополнительные параметры — параллельно проигрывать другой медиафайл.

Также можно вывести одно видео на несколько окон, размеры и пропорции которых можно менять. Инструменты — эффекты и фильтры в видеоэффекты — геометрия — стена.
Теперь все интересные мне телеканалы выкладывают различные видео на своих сайтах и их можно скачать при помощи youtube-dl для просмотра в удобное время на старом SmartTV, который принципиально не понимает https, а несколько лет назад приходилось записывать на NAS с Малинки по крону, а потом обрабатывать неизбежные сбои при записи платной программой (она даже рекламу резала, но не точно). Потом некоторое время отдельные записи продолжал делать на Windows 10 и перекодировать видеокартой через ffmpeg в случае помех. Командная строка при записи была примерно такая:
"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.
Вот, кстати, скрипт для записи на Малинке (не сразу нашёл) vlc_record.py:
#! 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) + "!!!")
Сейчас взглянул свежим взглядом на свой скрипт и заменил, что, параметр std_stream не используется. Есть ещё несколько сомнений в правильности той реализации идеи. Но всё, вроде, работало несколько лет без проблем. Не буду перечитывать сейчас старую документацию, скажу лишь, что этот класс получил в результате некоторого упрощения решения другой задачи: логирование на экран и в файл одновременно многопоточного скрипта с возможностью с точностью до минуты определения, когда скрипт (и компьютер) закончил свою работу. Кто заинтересовался,
вот оригинальный класс из этого скрипта
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 — бесспорно (или без порно?) удобная и незаменимая вещь для просмотра видео. Только с ним ушли в историю постоянные установки кодек паков после скачивания очередной кино-новинки.

Мы даже делали когда-то трансляцию определенной области рабочего стола через Интернет на одном VLC и пробросе портов, если я правильно помню и ничего не путаю. При этом из статьи узнал ну очень много нового, за что спасибо автору.

Однако, не соглашусь с тем, что сдулся Winamp и торренты. В одной отдельно взятой стране разработали эффективный метод борьбы не только с политически неугодными ресурсами, но и с онлайн кинотеатрами. Торрент заблокировать на порядок сложнее, потому «если что» они всегда останутся на случай ЧП. Winamp никогда не славился удобством воспроизведения видео, но для музыки он и сейчас незаменим. Разве можно VLC свернуть в узкую полоску, которая практически не будет занимать место на экране, но при этом будет иметь все необходимые кнопки и отображать нужную информацию?

Что кроме узкой полоски есть в Winamp что нельзя заменить foobar-ом? Обложку альбома из которого играет трек не посмотреть, спектральное разложение не посмотреть, плейлист не удобен, в эквалайзере мало полос, плагины вроде как никто уже не поддерживает.
Насколько помню, Game bar не записывает рабочий стол. Насчёт проводника тоже не уверен.
Знаю и люблю VLC. Первая программа для всяких видео-задач. Правда, тут по работе нужно было просматривать видео покадрово, обнаружил, что VLC это умеет делать только в направлении «вперёд».
Рано хоронить медиа плеер классик (если вы про тот, который в комплекте с k-lite codeck pack), Foobar много кто использует, это же типа меломанский плеер.
Одна из прелестей VLC — встроенные кодеки. Не нужны супер-мега-паки с отваливающимися лицензиями кодеков (не про k-lite конкретно, но встречается нередко).
mplayer раньше, mpv сейчас. Но там нет изначально GUI
уточните, пожалуйста, процесс просмотра видео с youtube. описанный способ не позволяет открывать видео на просмотр.
Тоже хотел написать этот вопрос, но обновил до последней версии и просмотр заработал, как и ссылка на скачивание видео.
угу. то есть речь идет о какой-то определенной версии плейера. эх.
дело в том, что у меня в примерах где вводится URL присутствует ссылка на youtube, а значит эта версия должна поддерживать этот функционал. но не работает (

Автор, сам плеер не умеет проигрывать торренты и то что вы написали про смерть, не совсем правда. Торренты живы и будут живы пока вод не сделают почти халявным, а качество приблизят к блюрей, что сейчас уже почти возможно, файлы 5-10гб с хорошим качеством уже смотрел не раз.
По поводу онлайн проигрывания нужно было хорошо погуглить, есть две основные программы, асе стрим и торрсервер. Первая так сказать коммерческая и сделана на питоне, что не позволяет смотреть тяжёлые торренты в районе 30-70гб. Вторая делается на протяжении 3х лет, сделана на го по примеру элементом(онлайн торренты на коди).
Так вот торренты онлайн сейчас больше используются на андроид приставках и телевизорах, для этого есть все инструменты для поиска и просмотра онлайн жирных торрентов. Теперь немного про vlc, не самый лучший плеер под андроид, но очень удобная. Под каждую платформу, идет разная реализация(код не смотрел, сужу по поведению) на Винде качает последовательно, но потом начинает читать то что прочитал до этого. На линуксе более менее похоже на ффмпег, но тоже иногда прыгает. На Андроиде вроде идентично ффмпег.
Сейчас парни с Украины и России делают фильмы с dv layer4 и layer7

есть две основные программы, асе стрим и торрсервер

Или peerflix, или TorrenTV, или webtorrent и т.д. Ещё можно разделить скачивание (битторрент-клиент) и предоставление доступа к файлам (DLNA-сервер, HTTP-сервер, программы от производителя ТВ).

Вот бы vlc наконец-то бы починил баг с воспроизведением списка видео параллельно со списком звуковых дорожек. А то все еще часто сл видео идет с первой дорожкой из списка.

Полезная статья. У меня возникла мысль положить на Video Wallpaper поток от видеокамеры направленный на улицу или на какой-нибудь стрим с пляжа :)

«положить на Video Wallpaper поток от видеокамеры направленный на улицу или на какой-нибудь стрим с пляжа :)»
Представилось, что я счастливец, у которого на улицу — и есть на пляж. Пойду, пожалуй, коктейль с зонтиком сделаю.
Рынок копеечных анимешных паззлов только что рухнул.
Загрузка видео с YouTube
Прямые трансляции тоже может сохранять, но перемотать — нет.
Может кто знает способ, как сохранить уже прошедную часть трансляции?

Кусочки паззла при этом проигрывают видео?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий