Форум программистов, компьютерный форум, киберфорум
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. Показов 7148. Ответов 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
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
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
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
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
dive
 Аватар для I can
5005 / 4769 / 852
Регистрация: 13.04.2015
Сообщений: 10,016
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
dive
 Аватар для I can
5005 / 4769 / 852
Регистрация: 13.04.2015
Сообщений: 10,016
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
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
10.05.2024, 10:07
Anderis49, Так вы ссылку на Ютуб дали а не на файл...
0
dive
 Аватар для I can
5005 / 4769 / 852
Регистрация: 13.04.2015
Сообщений: 10,016
10.05.2024, 10:26
Цитата Сообщение от Yury Komar Посмотреть сообщение
Так вы ссылку на Ютуб дали а не на файл...
А я скачал видео, и проверил свой код на нём
1
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
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
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
10.05.2024, 15:10
Цитата Сообщение от Anderis49 Посмотреть сообщение
Вот в этом фильме
В этом файле у меня код, тот что через Shell.Application, спокойно находит размеры видео под индексами 314 и 316 (Windows10). Странно, почему у вас не работает. И да, тоже скачал то самое видео, но возможно разные программы по-своему сохраняют эти видео файлы на ПК...
Миниатюры
Получить размер видеокадра не загружая сам файл  
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
10.05.2024, 15:41
Anderis49, Кстати, да, в моем последнем варианте (через консольку MediaInfo) не читала файл ввиду того, что в пути к файлу есть пробелы... Добавил двойные кавычки и все прочлось.

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



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

Хотя, у меня скачался как MP4, а вот у I can на скрине он WEBM. Именно поэтому просил скинуть именно сам файл, который Вы пытались прочесть, закинули бы в облако и дали ссылку, видимо у нас получились совсем разные данные ввиду разных программ, используемых для скачивания файлов с Ютуб.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
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
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
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
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
11.05.2024, 18:44
Anderis49, А что показывает та программа, которую я вам ранее давал, на Win11 в списке нет размеров кадра этого видео?
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
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
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru