Страница 1 из 4

Запуск видеофайла с определенной временной позиции

Добавлено: 06 Апрель 2016, 17:52
NewUser
Здравствуйте!
Посоветуйте, пожалуйста, видеоплеер под Windows, позволяющий воспроизводить видеофайлы с определенной временной позиции посредством их запуска из командной строки или должным образом настроенного ярлыка.

Запуск видеофайла с определенной временной позиции

Добавлено: 06 Апрель 2016, 18:24
Алексей- Софт-Центр
Добрый день!
Media Player Classic
Имеет настройку- сохранить позицию при выходе. И будет проигрывать повторно с сохранённой позиции

Алексей

Запуск видеофайла с определенной временной позиции

Добавлено: 06 Апрель 2016, 18:31
NewUser
Спасибо, Алексей!
Он, кроме описанной Вами функции, умеет еще и то, что как раз мне и нужно - запускать видеофайлы из командной строки посредством параметра /startpos hh:mm:ss
Но, запускается он почему-то в связке плеер+файл с интерфейсом на английском языке.
Т. е. если запустить сначала плеер, то в настройках имеется возможность выбрать и, как следствие, изменить язык программы, но при запуске из командной строки (в связке с файлом) - такая возможность отсутствует. Если я не прав - подскажите как его изменить при воспроизведении таким образом запущенного файла или, еще лучше, как сделать так, чтобы плеер запускался уже на русском языке.

Запуск видеофайла с определенной временной позиции

Добавлено: 06 Апрель 2016, 19:05
kreator
NewUser писал(а):Т. е. если запустить сначала плеер, то в настройках имеется возможность выбрать и, как следствие, изменить язык программы, но при запуске из командной строки (в связке с файлом) - такая возможность отсутствует. Если я не прав - подскажите как его изменить при воспроизведении таким образом запущенного файла или, еще лучше, как сделать так, чтобы плеер запускался уже на русском языке.
Ничего подобного, запускается с настройками, которые есть. Скачай обновление, проверь настройки в реестре.

Запуск видеофайла с определенной временной позиции

Добавлено: 06 Апрель 2016, 19:13
kreator
А для чего это надо? Невозможно из программы это сделать? Спрашиваю так, на всякий случай, вдруг нужно из программы открыть видеофайл, а мы идём в обход.

Запуск видеофайла с определенной временной позиции

Добавлено: 06 Апрель 2016, 19:54
Yufil
Через mcisendstring запускается непосредственно из программы с любой позиции без всякого плеера, могу поискать...
И через Windows Media player activeX можно, естественно...

Запуск видеофайла с определенной временной позиции

Добавлено: 20 Апрель 2016, 12:00
NewUser
kreator писал(а): Скачай обновление, проверь настройки в реестре
Так и сделал. Только сначала снес старую версию. Заработало как надо!
Спасибо!

Запуск видеофайла с определенной временной позиции

Добавлено: 20 Апрель 2016, 12:13
NewUser
kreator писал(а): А для чего это надо? Невозможно из программы это сделать?
Yufil писал(а): Через mcisendstring запускается непосредственно из программы с любой позиции без всякого плеера, могу поискать...
Пишу БД по огромным залежам видео материалов разных категорий, тем, авторов и т.д. С доступом к каждой лекции (файл), разделу лекции (позиция в файле), тезису (еще одна временная подпозиция в файле), мыслям по тезису, скриншотами и т.п.
Чтобы не заморачиваться (по крайней мере на начальном этапе) с написанием своего плеера, принял решение использовать наиболее распространенный, содержащий все необходимые функции для видео просмотра, а также умеющий позиционироваться на нужном месте при запуске из командной строки.
Хотя, на будущее, не исключаю возникновения потребности более плотной интеграции плеера с функционалом программы. Поэтому заранее благодарен Юрию за его предложение.

Запуск видеофайла с определенной временной позиции

Добавлено: 20 Апрель 2016, 12:46
kreator
NewUser писал(а):Чтобы не заморачиваться (по крайней мере на начальном этапе) с написанием своего плеера, принял решение использовать наиболее распространенный, содержащий все необходимые функции для видео просмотра, а также умеющий позиционироваться на нужном месте при запуске из командной строки.
Хотя, на будущее, не исключаю возникновения потребности более плотной интеграции плеера с функционалом программы. Поэтому заранее благодарен Юрию за его предложение.
На мой взгляд, надо бы начать было со встроенного плеера. Во-первых, не очень сложно. Во-вторых, большой плюс программе.

Запуск видеофайла с определенной временной позиции

Добавлено: 20 Апрель 2016, 13:20
NewUser
kreator писал(а): На мой взгляд, надо бы начать было со встроенного плеера. Во-первых, не очень сложно. Во-вторых, большой плюс программе.
Я полностью согласен с данной точкой зрения.
Здесь надо иметь в виду, что проект затевался, имея своей целью удовлетворения еще "вчера" возникшей потребности оперативного и всестороннего доступа к любым фрагментам видеоматериалов в рамках нашей организации. Т.е. он, в первую очередь, создается для внутреннего пользования.
Исходя из этого (помня об оперативности его создания) написание плеера не является приоритетной задачей. Ни по временным, ни по финансовым параметрам. Тем более, что опыта его написания у меня попросту нет.
Если в последствии будет принято решение по коммерциализации проекта, то, несомненно, надо будет вернуться к вопросу интеграции плеера с самой программой. Кстати, спасибо за озвученный аргумент в пользу этого!

Запуск видеофайла с определенной временной позиции

Добавлено: 20 Апрель 2016, 13:46
Yufil
А mcisendstring тоже не особо сложно.
Вот, например, запуск фильма на проигрывание на полном экране.Надо бы видео вместо sound, но просто скопипастил кусок :D
Здесь MCICommand - команда, MCIreturn - буфер для результата, 128-длина буфера, sound-просто назначенный идентификатор потока, можно заменить на любой другой.

Код: Выделить всё

     mciSendString(*CSTRING,*CSTRING,USHORT,USHORT),ULONG,PASCAL,RAW,PROC,NAME('mciSendStringA')

Код: Выделить всё

      MCICommand='open "'&soundname&'" alias sound'
      MCISendString(MCICommand,MCIReturn,128,0{Prop:Handle})
      MCICommand='play sound fullscreen'
      MCISendString(MCICommand,MCIReturn,128,0{Prop:Handle})

А вот играем музыку от (loc:From) с указанной продолжительностью (Loc:Duration)

Код: Выделить всё

      MCICommand='open "'&soundname&'" alias sound'
      MCISendString(MCICommand,MCIReturn,128,0{Prop:Handle})
      MCICommand='play sound'
      If Loc:From
        MCICommand=MCICommand & ' from ' & Loc:From*10
      End
      If Loc:Duration
        MCICommand=MCICommand & ' to ' & (Loc:From+Loc:Duration)*10
      End
      MCISendString(MCICommand,MCIReturn,128,0{Prop:Handle})
Надо иметь в виду, что эти команды не останавливают программу, работа программы продолжается дальше
Поэтому уместно при закрытии окна

Код: Выделить всё

    MCICommand='stop sound'
    MCISendString(MCICommand,MCIReturn,128,0{prop:handle})
    MCICommand='close all'
    MCISendString(MCICommand,MCIReturn,128,0{prop:handle})
Можно указать окно проигрывателя в любом месте экрана и прикрепить к окну, но это искать надо.
Для проигрывания звуков - почти без альтернативы (впрочем, сейчас в основном делаем swf 1x1 пиксель со звуком, и фильмы для совместимости с web тоже в swf-flv)

Запуск видеофайла с определенной временной позиции

Добавлено: 20 Апрель 2016, 14:08
kreator
Если будет надо, я могу выложить текст функции управления проигрыванием аудио и видео. Кажется, изначально она Юрием и написана. Я дорабатывал видео. Единственное, до чего руки не дошли, прикрепить к своему окну.

Запуск видеофайла с определенной временной позиции

Добавлено: 20 Апрель 2016, 14:30
NewUser
Спасибо, Юрий! Как всегда - оперативно, предметно и наглядно.
kreator писал(а):прикрепить к своему окну
Я правильно понимаю, что под этим термином скрывается привязка к координатам окна программы, на котором будет отображаться видео файл?
А без нее окно самого плеера будет расположено в левом верхнем углу окна программы?

Запуск видеофайла с определенной временной позиции

Добавлено: 20 Апрель 2016, 14:34
NewUser
kreator писал(а): Если будет надо, я могу выложить текст функции управления проигрыванием аудио и видео
Я считаю целесообразным, дабы не возвращаться еще раз к поднятию данного вопроса, выложить код заявленной функции здесь, в теме, чтобы была возможность воспользоваться ею не только в любое время, но и любым заинтересованным в этом разработчиком.

Запуск видеофайла с определенной временной позиции

Добавлено: 20 Апрель 2016, 15:17
Yufil
Окно плеера можно где угодно делать. Я укладывал поверх других контролов (например, прямоугольника, панели)
Просто не нашёл сразу процедуру, где это есть
Вот здесь Loc:N - номер контрола, поверх которого рисую, Vname - имя потока (в предыдущем коде 'sound')

Код: Выделить всё

 
            0{Prop:Pixels}=True ! Работаем в пикселах
            MciCmd = 'open "' & clip(Loc:FileName) & '" alias ' & Vname & ' parent ' & 0{Prop:Handle} & ' style child '
            Err#=mciSendString(mciCmd, mciRtn, MsgLen,WindowHnd)
            If Err#
               Say('Oшибка при создании или  воспроизведении видео')
               RtnVal = False
               Exit
            END
           W=Loc:N{Prop:Width}
           H=Loc:N{Prop:Height}
           MciCmd = 'put ' & Vname & ' window client at ' & |
              Loc:N{Prop:Xpos}  & ' ' & |
              Loc:N{Prop:Ypos}   & ' ' & |
              W & ' ' & H 
           Err#=mciSendString(mciCmd, mciRtn, MsgLen,WindowHnd)
А потом играем, как раньше