Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2009, 13:24   #1
Рысь Комнатная
Новичок
Джуниор
 
Регистрация: 29.10.2009
Сообщений: 4
По умолчанию Длительность (продолжительность) видео-файла и Access

Приветствую. Соорудил в акцессе базу для своей коллекции видео. Как программно из файла с видео (и возможно ли в акцессе вообще) вытащить длительность этого самого видео? В проводнике например (в строке состояния) продолжительность отображется. Компонент какой-то к акцессу подключить надо?... в какую сторону вообще рыть? Заранее спасибо

Последний раз редактировалось Рысь Комнатная; 29.10.2009 в 13:26.
Рысь Комнатная вне форума Ответить с цитированием
Старый 29.10.2009, 13:48   #2
Allan Stark
Пользователь
 
Регистрация: 23.10.2009
Сообщений: 11
По умолчанию

А как вы в базу это дело впихнули ?
Allan Stark вне форума Ответить с цитированием
Старый 29.10.2009, 14:54   #3
Рысь Комнатная
Новичок
Джуниор
 
Регистрация: 29.10.2009
Сообщений: 4
По умолчанию

В базе только описание.
Для чего это работает: у меня много дисков и файлов с видео, решил привести все в порядок - открываешь базу, ищешь фильм, она тебе выдает - такой-то стеллаж, диск под нумером 15. ну и обложки печатать
Как работает: открываю базу, вставляю в привод дивиди с файлами, нажимаю кнопку и в базу закидываются названия файлов и хочется еще их продолжительность. чтобы вручную не набирать

Последний раз редактировалось Рысь Комнатная; 29.10.2009 в 15:02.
Рысь Комнатная вне форума Ответить с цитированием
Старый 29.10.2009, 19:58   #4
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Function GetValFileProperty(sFolder As String, sFileName As String, sNameProperty As String) As String
Dim objShellApp, objFolder, objFolderItems, objItem
Dim strResult As String
Dim i%

Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShellApp.Namespace(CStr(sFolder) )
Set objFolderItems = objFolder.Items()
If (Not objFolderItems Is Nothing) Then
Dim nCount

nCount = objFolderItems.Count
End If
Set objItem = objFolder.ParseName(sFileName)
strResult = ""
For i = -1 To 40
If objFolder.GetDetailsOf(objFolderIte ms, i) = sNameProperty Then
strResult = objFolder.GetDetailsOf(objItem, i)
Exit For
End If
Next
Debug.Print sNameProperty; " = "; strResult, vbInformation
GetValFileProperty = strResult

Set objItem = Nothing
Set objFolderItems = Nothing
Set objFolder = Nothing
Set objShellApp = Nothing

End Function
Abrakadabra вне форума Ответить с цитированием
Старый 29.10.2009, 20:12   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию 2 Abrakadabra

Цитата:
Сообщение от Abrakadabra Посмотреть сообщение
Function GetValFileProperty
Хорошая функция. Не знал про неё раньше...

Вот только почему-то выводит значения не всех свойств:
Код:
Sub test_GetDetailsOf()
    sFolder = "E:\Music\": sFileName = "MODERN_TALKING With_a_little_love.mp3"
    Set objFolder = CreateObject("Shell.Application").Namespace(sFolder)
    Set objFolderItems = objFolder.Items()
    Set objItem = objFolder.ParseName(sFileName)
    For i = -1 To 40
        Debug.Print i, objFolder.GetDetailsOf(objFolderItems, i), _
                    objFolder.GetDetailsOf(objItem, i)
    Next
End Sub
Результат:
Цитата:
-1 Тип: Winamp media file
Размер: 8,03 МБ
0 Имя MODERN_TALKING With_a_little_love.mp3
1 Размер 8*226 КБ
2 Тип Winamp media file
3 Изменен 13.09.2008 20:52
4 Дата создания 02.01.2009 14:37
5 Открыт 02.01.2009 14:37
6 Атрибуты A
7 Состояние Подключен
А всё остальное - пусто:
Цитата:
9 Автор
10 Заголовок
11 Тема
12 Категория
13 Страницы
14 Комментарий
15 Авторские права
16 Исполнитель
17 Альбом
18 Год
19 Номер записи
20 Жанр
21 Длительность
22 Качество звука
23 Защита
24 Модель камеры
25 Дата снимка
26 Размеры
27
28
29 Название серии
30 Описание телепрограммы
31
32 Размер аудио образца
33 Частота дискретизации
34 Каналы
35 Производитель
36 Описание
37 Версия файла
38 Название продукта
39 Версия продукта
40 Keywords
И так для всех имеющихся у меня медиафайлов...

Не подскажете, почему так?

(добавлено)
Впрочем, для рисунков кое-что выдаёт...
Цитата:
26 Размеры 256 x 256
27 256 точек
28 256 точек

Последний раз редактировалось EducatedFool; 29.10.2009 в 20:15.
EducatedFool вне форума Ответить с цитированием
Старый 29.10.2009, 20:49   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
И так для всех имеющихся у меня медиафайлов...
Не подскажете, почему так?
эти свойства могут быть просто пустыми, гляньте тем же винампом правой кнопкой
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.10.2009, 21:24   #7
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

raxp прав, действительно у разных файлов, некоторые свойства могут быть незаполненными.
to Рысь Комнатная, но тем не менее у всех AVI файлов я смог этим способом "посмотреть" длительность:
Код:
Sub checkLongFileAvi()
Const sFlm = "E:\Films\Money.As.Debt.by.Paul.Grignon.avi"
MsgBox "Файл - " + Dir(sFlm) + "  " + longFilm(sFlm)
End Sub
Function longFilm(sVideoFile) As String
    Dim i%, sFile$, oFolder As Object, oFolderItems   As Object, oFile As Object, sFolder
    sFile = Dir(sVideoFile): i = Len(sFile)
    If i = 0 Then Exit Function
    sFolder = Left(sVideoFile, Len(sVideoFile) - i)
    Set oFolder = CreateObject("Shell.Application").Namespace(sFolder)
    Set oFolderItems = oFolder.Items()
    Set oFile = oFolder.ParseName(sFile)
    With oFolder
        longFilm = .GetDetailsOf(oFolderItems, 21) + "  " & .GetDetailsOf(oFile, 21)
    End With
End Function
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 30.10.2009, 11:57   #8
Рысь Комнатная
Новичок
Джуниор
 
Регистрация: 29.10.2009
Сообщений: 4
По умолчанию

Спасибо всем огромное за помощь буду сегодня пробовать
Рысь Комнатная вне форума Ответить с цитированием
Старый 30.10.2009, 15:27   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Получить достоверную информацию о продолжительности AVI-файлов, можно лишь, выдрав эту информацию из самого файла:
Цитата:
Сообщение от krasin
AVI-файлы являются RIFF-файлами. Грубо говоря, RIFF-файл состоит из нескольких кусочков (chunks), в которых может храниться видео, звук или метаинформация. Кусочек для хранения video имеет заголовок, на основе которого можно узнать длительность как в кадрах, так и в секундах.
Пример кода на Delphi можно найти в этой теме.

Осталось только найти подобный код для VB...

Поищу, если найду - выложу.
(самому надо - макросом из Excel определять продолжительность видеороликов)
EducatedFool вне форума Ответить с цитированием
Старый 30.10.2009, 15:56   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Оказывается, не всё так сложно...

Нашел достаточно информации здесь:
http://forum.script-coding.info/viewtopic.php?id=1031
http://forum.codeby.net/index.php?showtopic=20206

Проще всего использовать компонент WindowsMediaPlayer:



Вот весь код:
Код:
Private Sub CommandButton1_Click()
    Me.WindowsMediaPlayer1.URL = "D:\LedStudio content\ambulance.avi"
End Sub

Private Sub CommandButton2_Click()
    Me.TextBox1 = "": On Error Resume Next
    With Me.WindowsMediaPlayer1.currentMedia
        Me.TextBox1 = Me.TextBox1 & "Продолжительность ролика:" & vbNewLine
        Me.TextBox1 = Me.TextBox1 & "В секундах: " & .duration & vbNewLine
        Me.TextBox1 = Me.TextBox1 & "В минутах: " & .durationString & vbNewLine
    End With
End Sub
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
продолжительность жизни зависит от знака зодиака Hallo Свободное общение 27 28.02.2014 15:34
как воспроизвести видео не из файла а из памяти? s.Creator Мультимедиа в Delphi 9 06.01.2010 23:42
Как определить длительность ролика flv Yong777 PHP 2 21.04.2009 22:02
Акцесс вопросы новичков Yaga Помощь студентам 4 02.06.2008 00:16