Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
 Аватар для Anderis49
-42 / 41 / 6
Регистрация: 07.08.2013
Сообщений: 1,112
Записей в блоге: 1
.NET 5

Получить размер видеокадра не загружая сам файл

03.05.2023, 08:59. Показов 7493. Ответов 73
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем знатокам доброе время суток.
Вопрос, собственно, в шапке.
Мне нужен размер кадра, например, 1220х760 или что-то в этом роде, не загружая сам видео файл.
Всем, давшим конструктивные советы ОГРОМНОЕ СПАСИБО.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2023, 08:59
Ответы с готовыми решениями:

Как узнать размер файла загружая через InternetReadFile?
Привет, как узнать размер файла загружая через вининет? Я разобрался как узнавать сколько байт загружено. Но как узнать размер файла до...

Отредактировать файл не загружая в память
Здравствуйте, форумчане. Насколько я знаю чтобы изменить файл надо сначала прочитать его и записать в переменную, а после изменить...

Обработка xml, не загружая файл полностью
Прежде чем работать с данными xml приходится загружать весь файл полностью по средствам simplexml_load_file. Задача: вытащить определенную...

73
 Аватар для Anderis49
-42 / 41 / 6
Регистрация: 07.08.2013
Сообщений: 1,112
Записей в блоге: 1
09.05.2024, 15:49  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Yury Komar Посмотреть сообщение
А какой файл у вас не читается? Можете его тоже скинуть? для теста, так сказать.
Таких файлов %20,
Открываю с помощью функции, что вы дали, а там под номерами 320 и 322 ничего нет.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
09.05.2024, 16:00
Anderis49, честно говоря уж очень непонятно как добраться до нужных функций, решил пойти по другому пути и использовать консольку от этого MediaInfo.

Собственно вот код... И да, в папке с вашей программой должен лежать файл MediaInfo.exe, в архиве так же его приложил...

VB.NET
1
2
3
4
5
6
7
8
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
    Public Function GetResolution_viaMediaInfoCLI(FileName As String) As Size
 
        Dim MediaInfoFile As String = Application.StartupPath & "\MediaInfo.exe"
 
        If Not IO.File.Exists(MediaInfoFile) Then
            Throw New Exception("Файл MediaInfo.exe не найден в папке с программой.")
        End If
 
        Dim VideoSize As Size
 
        Using P = New Process
            With P
                .StartInfo.FileName = MediaInfoFile
                .StartInfo.Arguments = Chr(34) & FileName & Chr(34)
                .StartInfo.StandardOutputEncoding = System.Text.Encoding.GetEncoding("cp866")
                .StartInfo.UseShellExecute = False
                .StartInfo.RedirectStandardOutput = True
                .StartInfo.CreateNoWindow = True
                .Start()
 
                While Not .StandardOutput.EndOfStream
                    Application.DoEvents()
                    Dim LineTXT As String = .StandardOutput.ReadLine
                    Select Case True
                        Case LineTXT.StartsWith("Width")
                            VideoSize.Width = CInt(LineTXT.Split(":")(1).Trim.Split("p")(0).Trim.Replace(Space(1), ""))
                        Case LineTXT.StartsWith("Height")
                            VideoSize.Height = CInt(LineTXT.Split(":")(1).Trim.Split("p")(0).Trim.Replace(Space(1), ""))
                    End Select
                End While
            End With
        End Using
 
        GC.Collect()
 
        Return VideoSize
    End Function
Использование функции простейшее
VB.NET
1
2
3
        With GetResolution_viaMediaInfoCLI("D:\04_Pictures\map50.jpg")
            Label1.Text = .Width & " x " & .Height
        End With


Файл mediaInfo.exe (ZIP-Архив) MediaInfo.zip
1
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
09.05.2024, 16:04
Цитата Сообщение от Anderis49 Посмотреть сообщение
а там под номерами 320 и 322 ничего нет.
а другие номера? может быть эти номера зависят от типа файла?

Добавлено через 3 минуты
Цитата Сообщение от Anderis49 Посмотреть сообщение
Таких файлов %20,
ну вы хоть один покажите то?

А ну и посмотрите другие индексы, той программой, что я вам ранее давал
0
 Аватар для Anderis49
-42 / 41 / 6
Регистрация: 07.08.2013
Сообщений: 1,112
Записей в блоге: 1
09.05.2024, 18:25  [ТС]
Цитата Сообщение от Yury Komar Посмотреть сообщение
а другие номера? может быть эти номера зависят от типа файла?
Нет.
Ищу файл для примера используя вашу программу.
Последняя, сегодняшняя функции дает нули.

Добавлено через 1 час 46 минут
Вот в этом фильме - https://www.youtube.com/watch?v=YtFankwvm6k
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
10.05.2024, 00:36
Лучший ответ Сообщение было отмечено Anderis49 как решение

Решение

Пример. Использовал MediaInfoDotNet - оболочку для библиотеки MediaInfo (https://www.nuget.org/packages... e-body-tab ). Версия довольно старая, но как мне кажется, поставленную задачу решает. Хотя, ради пары параметров, довольно странно использовать библиотеку в несколько мегабайт.
Миниатюры
Получить размер видеокадра не загружая сам файл  
Вложения
Тип файла: rar miTest.rar (3.98 Мб, 75 просмотров)
3
jump
 Аватар для I can
5009 / 4813 / 852
Регистрация: 13.04.2015
Сообщений: 10,071
10.05.2024, 05:35
Цитата Сообщение от Anderis49 Посмотреть сообщение
Есть файл ffprobe, но как с ним работать не знаю.
Вот тебе пример
WindowsApplication1.rar
Добавлено через 29 секунд
VB.NET
1
2
3
4
5
6
7
8
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
41
Public Class Form1
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
 
        MsgBox(GetHW("D:\Верни меня.webm"))
 
    End Sub
 
 
    Private Function GetHW(path As String) As String
        Dim proc As New Process
        Dim strProg = "ffprobe.exe"
        proc.StartInfo.FileName = strProg
        proc.StartInfo.Arguments = " -i " & """" & path & """" & "  -hide_banner"
        proc.StartInfo.CreateNoWindow = True
        proc.StartInfo.RedirectStandardOutput = True
        proc.StartInfo.UseShellExecute = False
        proc.StartInfo.RedirectStandardError = True
        Dim output As String = "", srOutput As IO.StreamReader = Nothing
        Try
            Dim pro As Process = Diagnostics.Process.Start(proc.StartInfo)
            pro.WaitForExit()
            srOutput = pro.StandardError
            output = srOutput.ReadToEnd
            pro.Close()
            For i As Integer = 2 To 4
                Dim s As String = Split(Split(output, "Video:")(1), ",")(i)
                If s Like "*#x#*" Then Return s
            Next
        Catch __unusedException1__ As Exception
            output = ""
        Finally
            If srOutput IsNot Nothing Then
                srOutput.Close()
                srOutput.Dispose()
            End If
        End Try
        Return output
    End Function
 
End Class
3
jump
 Аватар для I can
5009 / 4813 / 852
Регистрация: 13.04.2015
Сообщений: 10,071
10.05.2024, 05:39
1
 Аватар для Anderis49
-42 / 41 / 6
Регистрация: 07.08.2013
Сообщений: 1,112
Записей в блоге: 1
10.05.2024, 08:00  [ТС]
Цитата Сообщение от ovva Посмотреть сообщение
Использовал MediaInfoDotNet - оболочку для библиотеки MediaInfo
С этой приблудой пока работает, СПАСИБО

И это -
Вот тебе пример
WindowsApplication1.rar

пока тоже работает

Спасибо всем!!
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
10.05.2024, 10:07
Anderis49, Так вы ссылку на Ютуб дали а не на файл...
0
jump
 Аватар для I can
5009 / 4813 / 852
Регистрация: 13.04.2015
Сообщений: 10,071
10.05.2024, 10:26
Цитата Сообщение от Yury Komar Посмотреть сообщение
Так вы ссылку на Ютуб дали а не на файл...
А я скачал видео, и проверил свой код на нём
1
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
10.05.2024, 11:22
Anderis49, А Вы скачали и поместили файл MediaInfo.exe рядом с вашим EXE файлом? Если его нет, то функция вернет нули.
0
 Аватар для Anderis49
-42 / 41 / 6
Регистрация: 07.08.2013
Сообщений: 1,112
Записей в блоге: 1
10.05.2024, 14:52  [ТС]
Всем! Всем! Всем!

Огромное, преогромное СПАСИБО!

Тема исчерпана.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
10.05.2024, 15:10
Цитата Сообщение от Anderis49 Посмотреть сообщение
Вот в этом фильме
В этом файле у меня код, тот что через Shell.Application, спокойно находит размеры видео под индексами 314 и 316 (Windows10). Странно, почему у вас не работает. И да, тоже скачал то самое видео, но возможно разные программы по-своему сохраняют эти видео файлы на ПК...
Миниатюры
Получить размер видеокадра не загружая сам файл  
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
10.05.2024, 15:41
Anderis49, Кстати, да, в моем последнем варианте (через консольку MediaInfo) не читала файл ввиду того, что в пути к файлу есть пробелы... Добавил двойные кавычки и все прочлось.

Код функции исправил в том посте (тестировал на вашем видео файле, с Ютуба)



Ну и, как писал выше, данный файл спокойно читается и через Shell.Application, не пойму, почему у вас не работает... Индексы нужно смотреть...

Хотя, у меня скачался как MP4, а вот у I can на скрине он WEBM. Именно поэтому просил скинуть именно сам файл, который Вы пытались прочесть, закинули бы в облако и дали ссылку, видимо у нас получились совсем разные данные ввиду разных программ, используемых для скачивания файлов с Ютуб.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
10.05.2024, 16:06
Кстати, в примере ovva, через обертку можно получить сразу всю информацию о файле в виде текста, буквально в пару строчек.

Так же, распарсив эту информацию через LINQ, можно легко вытянуть разрешение, по сути, точно такой же результат при чтении из консольной версии MediaInfo, как в моем примере выше.

VB.NET
1
2
3
4
5
6
'Get Full Info
With New MediaInfo
    .Open("sample-5s.mp4")
    TextBox1.Text = .Inform()
    .Close()
End With
VB.NET
1
2
3
4
5
6
7
8
9
'Get Width & Height Only
With New MediaInfo
    .Open("sample-5s.mp4")
    TextBox1.Text = Join((From INFO In .Inform().Split(vbLf)
                          Where INFO.StartsWith("Width") OrElse
                                INFO.StartsWith("Height")) _
                                .Cast(Of String).ToArray, vbCrLf)
    .Close()
End With
2
 Аватар для Anderis49
-42 / 41 / 6
Регистрация: 07.08.2013
Сообщений: 1,112
Записей в блоге: 1
11.05.2024, 11:42  [ТС]
Цитата Сообщение от Yury Komar Посмотреть сообщение
Код функции исправил в том посте
ссылка ведет на эту же страницу
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
11.05.2024, 12:32
Anderis49, ссылка ведет на пост No.42, в этом посте я и обновил код самой функции.

Добавлено через 2 минуты
Anderis49, Вы скиньте на облако проблемный файл, который не читается через Shell, уж очень интересно и хочется разобраться, почему у вас не определяется ширина и высота видео-кадра.
0
 Аватар для Anderis49
-42 / 41 / 6
Регистрация: 07.08.2013
Сообщений: 1,112
Записей в блоге: 1
11.05.2024, 15:01  [ТС]
Цитата Сообщение от Yury Komar Посмотреть сообщение
Вы скиньте на облако проблемный файл,
Страница облака содержит ошибки и у меня не открывается.
вот тот файл
https://www.mediafire.com/file... 3.mp4/file
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
11.05.2024, 18:44
Anderis49, А что показывает та программа, которую я вам ранее давал, на Win11 в списке нет размеров кадра этого видео?
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
11.05.2024, 19:00
Цитата Сообщение от Anderis49 Посмотреть сообщение
вот тот файл
ну, собственно, я так и не понял в чем у вас проблема при использовании подхода к определению размеров через Shell.Application, да, помню, что Вы говорили индексы в Windows-11 другие для Ширины и Высоты, и это вполне возможно, но я не думаю, что размеров кадра в метаданных вообще нет... перепроверьте еще раз....

На Windows-10 все по тем же индексам 314 и 316 находятся Ширина и Высота.
Покажите вы свои в Windows-11.
Миниатюры
Получить размер видеокадра не загружая сам файл  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2024, 19:00

прочитать файл Fopen не загружая его на сервер
Доброго времени! Подскажите, возможно ли прочитать файл отправленный с формы предварительно не сохраняя его? т.е. Выбрать файл ->...

Autocomplete: получить из txt массив или указать явно сам файл
Вот Посмотреть рабочий варинат Мне нужно вместо данных в переменной wordlist выводить данные из внешнего файла. И еще подскажите как...

Загружая txt файл с данными автоматически создавать таблицу
Здравствуйте, нужно используя txt файл с данными по типу as:1 dn:2 sq:3 u2:4 dn:7 u2:12 as:5 sq:11 и тд. создать...

Jythone - получить размер таблицы (Мб) и записать результат в файл
Создал в ODI код. Нужно записать в файл рядом с названием таблицы её размер. Пока что только записывает название. def prepareSQL(): ...

Swf файл, как получить его реальный размер swfobject
Доброго времени суток. На страничку к себе загрузил swf файл и игрой, и подключил swfobject. на кнопку повесил событие кот div в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru