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

Флейм. Только просьба - не материться! :)

Модератор: Дед Пахом

NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

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

Сообщение NewUser »

Здравствуйте!
Посоветуйте, пожалуйста, видеоплеер под Windows, позволяющий воспроизводить видеофайлы с определенной временной позиции посредством их запуска из командной строки или должным образом настроенного ярлыка.
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

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

Сообщение Алексей- Софт-Центр »

Добрый день!
Media Player Classic
Имеет настройку- сохранить позицию при выходе. И будет проигрывать повторно с сохранённой позиции

Алексей
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

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

Сообщение NewUser »

Спасибо, Алексей!
Он, кроме описанной Вами функции, умеет еще и то, что как раз мне и нужно - запускать видеофайлы из командной строки посредством параметра /startpos hh:mm:ss
Но, запускается он почему-то в связке плеер+файл с интерфейсом на английском языке.
Т. е. если запустить сначала плеер, то в настройках имеется возможность выбрать и, как следствие, изменить язык программы, но при запуске из командной строки (в связке с файлом) - такая возможность отсутствует. Если я не прав - подскажите как его изменить при воспроизведении таким образом запущенного файла или, еще лучше, как сделать так, чтобы плеер запускался уже на русском языке.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

NewUser писал(а):Т. е. если запустить сначала плеер, то в настройках имеется возможность выбрать и, как следствие, изменить язык программы, но при запуске из командной строки (в связке с файлом) - такая возможность отсутствует. Если я не прав - подскажите как его изменить при воспроизведении таким образом запущенного файла или, еще лучше, как сделать так, чтобы плеер запускался уже на русском языке.
Ничего подобного, запускается с настройками, которые есть. Скачай обновление, проверь настройки в реестре.
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

А для чего это надо? Невозможно из программы это сделать? Спрашиваю так, на всякий случай, вдруг нужно из программы открыть видеофайл, а мы идём в обход.
We are hard at work… for you. :)
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

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

Сообщение Yufil »

Через mcisendstring запускается непосредственно из программы с любой позиции без всякого плеера, могу поискать...
И через Windows Media player activeX можно, естественно...
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

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

Сообщение NewUser »

kreator писал(а): Скачай обновление, проверь настройки в реестре
Так и сделал. Только сначала снес старую версию. Заработало как надо!
Спасибо!
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

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

Сообщение NewUser »

kreator писал(а): А для чего это надо? Невозможно из программы это сделать?
Yufil писал(а): Через mcisendstring запускается непосредственно из программы с любой позиции без всякого плеера, могу поискать...
Пишу БД по огромным залежам видео материалов разных категорий, тем, авторов и т.д. С доступом к каждой лекции (файл), разделу лекции (позиция в файле), тезису (еще одна временная подпозиция в файле), мыслям по тезису, скриншотами и т.п.
Чтобы не заморачиваться (по крайней мере на начальном этапе) с написанием своего плеера, принял решение использовать наиболее распространенный, содержащий все необходимые функции для видео просмотра, а также умеющий позиционироваться на нужном месте при запуске из командной строки.
Хотя, на будущее, не исключаю возникновения потребности более плотной интеграции плеера с функционалом программы. Поэтому заранее благодарен Юрию за его предложение.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

NewUser писал(а):Чтобы не заморачиваться (по крайней мере на начальном этапе) с написанием своего плеера, принял решение использовать наиболее распространенный, содержащий все необходимые функции для видео просмотра, а также умеющий позиционироваться на нужном месте при запуске из командной строки.
Хотя, на будущее, не исключаю возникновения потребности более плотной интеграции плеера с функционалом программы. Поэтому заранее благодарен Юрию за его предложение.
На мой взгляд, надо бы начать было со встроенного плеера. Во-первых, не очень сложно. Во-вторых, большой плюс программе.
We are hard at work… for you. :)
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

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

Сообщение NewUser »

kreator писал(а): На мой взгляд, надо бы начать было со встроенного плеера. Во-первых, не очень сложно. Во-вторых, большой плюс программе.
Я полностью согласен с данной точкой зрения.
Здесь надо иметь в виду, что проект затевался, имея своей целью удовлетворения еще "вчера" возникшей потребности оперативного и всестороннего доступа к любым фрагментам видеоматериалов в рамках нашей организации. Т.е. он, в первую очередь, создается для внутреннего пользования.
Исходя из этого (помня об оперативности его создания) написание плеера не является приоритетной задачей. Ни по временным, ни по финансовым параметрам. Тем более, что опыта его написания у меня попросту нет.
Если в последствии будет принято решение по коммерциализации проекта, то, несомненно, надо будет вернуться к вопросу интеграции плеера с самой программой. Кстати, спасибо за озвученный аргумент в пользу этого!
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

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

Сообщение 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)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

Если будет надо, я могу выложить текст функции управления проигрыванием аудио и видео. Кажется, изначально она Юрием и написана. Я дорабатывал видео. Единственное, до чего руки не дошли, прикрепить к своему окну.
We are hard at work… for you. :)
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

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

Сообщение NewUser »

Спасибо, Юрий! Как всегда - оперативно, предметно и наглядно.
kreator писал(а):прикрепить к своему окну
Я правильно понимаю, что под этим термином скрывается привязка к координатам окна программы, на котором будет отображаться видео файл?
А без нее окно самого плеера будет расположено в левом верхнем углу окна программы?
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

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

Сообщение NewUser »

kreator писал(а): Если будет надо, я могу выложить текст функции управления проигрыванием аудио и видео
Я считаю целесообразным, дабы не возвращаться еще раз к поднятию данного вопроса, выложить код заявленной функции здесь, в теме, чтобы была возможность воспользоваться ею не только в любое время, но и любым заинтересованным в этом разработчиком.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

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

Сообщение 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)
А потом играем, как раньше
Ответить