Як використовувати ffprobe для отримання певної інформації про файли mp4 / h.264


13

Я лише розробник PHP, який мав завдання отримати основну інформацію про 100 тисяч тисяч відеофайлів. У мене було трохи удачі , використовуючи FFmpeg екстрагування video bitrate, video width, video height, duration, і aspect ratioвід них, але з коефіцієнтом помилок близько 5%, це все ще залишає мене з величезною кількістю файлів , які я не знаю , як боротися з. Відео НЕ відтворюються, але величезна кількість даних, яку повертає ffmpeg, мене збиває з пантелику з приводу того, як проаналізувати повернений XML, щоб знайти те, що мені потрібно, при всіх умовах, з якими я, мабуть, стикаюся. (Файли - це колекція за останні 15 років, деякі з них були закодовані, а інші конвертовані років тому)

У будь-якому випадку я знайшов таке використання, ffprobeщоб отримати тривалість, і сподівався, що хтось тут, хто розуміє складність використання ffmpeg & ffprobe, буде люб'язно допомагати мені в пошуку інших значень, які мені потрібні, більш простий спосіб, ніж божевільний код Я вважаю себе створеним, щоб перейти до всіх результатів ffmpeg.

ffprobe -i "video.mp4" -show_entries format=duration -v quiet -of csv="p=0"

Дякую заздалегідь.

ПОЯСНЕННЯ:

Додам, що із наведеного нижче cmd я можу "бачити" те, що мені потрібно, але я не розумію, як отримати те, що мені потрібно, наприклад, отримати бітрейт VIDEO та придушити / ігнорувати бітрейт AUDIO або визначити, який із 2 різні тривалості використання (тривалість аудіо / відео?)

C:\>ffprobe -v error -show_entries stream=width,height,bit_rate,duration -of default=noprint_wrappers=1 input.mp4

duration=1712.000000
bit_rate=64000
width=320
height=240
duration=1711.946113
bit_rate=359827
duration=1712.000000
bit_rate=N/A
duration=1712.000000
bit_rate=N/A

Відповіді:


18

Якщо ви хочете використовувати лише інформацію з першого відеопотоку -select_streams v:0:

ffprobe -v error -select_streams v:0 -show_entries stream=width,height,duration,bit_rate -of default=noprint_wrappers=1 input.mp4

Приклад виводу:

width=640
height=480
duration=10.000000
bit_rate=942704
  • Для перегляду списку всі записи використовують -show_streamsта / або -show_formatзамість них -show_entries.
  • Див. Документація FFprobe: Автори для різних стилів форматування вихідних даних.
  • Див. FFmpeg Wiki: FFprobe для додаткових прикладів.

Велике спасибі за допомогу .... Я повинен був прийняти іншу відповідь лише тому, що мене спочатку про це попередили, і вона зробила трюк ..
ВВП

@GDP Будь ласка, врахуйте: спочатку повідомте про це у цьому випадку, оскільки це остання відповідь.
p2or

@ погано я сприймаю питання повторення досить серйозно, але ця відповідь не була на моєму екрані прийняти, поки я не прийму іншого, тоді він з’явився, таким чином, негайно вибачившись. Вибачте всіх ... насправді не хотів образити.
ВВП

9

З https://trac.ffmpeg.org/wiki/FFprobeTips

Якщо ви хочете отримати bit_rate 1-го відеопотоку, ви можете використовувати:

ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate -of default=noprint_wrappers=1:nokey=1 input.mp4

Де -select_steams v:0вибирається перший відеопотік і :nokey=1надає значення без ключа. Ви також можете витягнути інформацію, відклавши її до файлу grep, але я не впевнений, чи вона доступна у вашій системі.

ffprobe -v error -show_entries stream=width,height,bit_rate,duration -of default=noprint_wrappers=1 input.mp4 | grep -oP "(?<=bit_rate\=)[0-9]+"

Сподіваюся, це допомагає!


"підключити його до грепу" ... звучить як щось, що я міг би зробити підлітком, хаха ... ДЯКУЮ за допомогу!
ВВП

Дякуємо @GDP, але LordNeckbeard - це відповідь, яку, ймовірно, слід прийняти, оскільки вона була опублікована вперше
moorej
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.