Я пытаюсь расшифровать вывод FFmpeg с помощью регулярных выражений, однако у меня возникают проблемы, так как иногда существуют строки, иногда они этого не делают, например, для файлов - это аудиофайлы, а не есть видео линия.Regex соответствует строке, когда она существует, или нет
Пример текста для видео;
Seems stream 0 codec frame rate differs from container frame rate: 30000.00 (30000/1) -> 15.00 (15/1)
Input #0, avi, from 'making_of_divx5mp3.avi':
Duration: 00:27:46.60, start: 0.000000, bitrate: 154 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 320x240 [PAR 1:1 DAR 4:3], 15 fps, 15 tbr, 15 tbn, 30k tbc
Stream #0.1: Audio: mp3, 24000 Hz, 2 channels, s16, 40 kb/s
At least one output file must be specified
Пример текста для аудио;
Input # 0, OGG, из 'C: \ examplemedia \ Americanism_ (Franklin_D._Roosevelt) .ogg': Продолжительность: 00: 04: 21,24, старт: 0.000000, битрейт: 49 кб/с поток # 0,0 : Аудио: Vorbis, 11025 Гц, моно, s16,/s выходной файл 49 кб По крайней мере, один должен быть указан
Моя регулярное выражение
ы {2} Продолжительность [:] \ s (? \ д {2} [:] \ d {2} [:] [.] \ д {2}) \ д {2} [,] \ с {1} начать [:] \ s {1} \ d { 1,} [.] \ D {6} [,] \ s {1} битрейт [:] \ s {1} (? \ D {1,} \ skb [/] s). +
\ s {4} Поток \ s [#] \ d [.] \ D [:] \ sВидео [:] \ s (? \ W +) [,] \ s (? \ W +) [,] \ s (? \ d {2,}) +
\ s {4} Поток \ s [#] \ d [.] \ d [:] \ sAudio [:] \ с [,] \ s (\ d + \ SHZ?) [,] \ s (\ W +?) ((\ д \ schannels |? моно)) [,] \ s (? \ W +) ([,] \ s (? \ d {2} \ SKB [/] s) |)
Я пытался решить проблему с отсутствием линий путем изменения одной включать (регулярное выражение |), которые должны соответствовать NULL, но ломает мое регулярное выражение, которое затем ничего не возвращает. Я думал, что это будет работать, поскольку выражения читаются справа налево.
(\s{4}Stream\s[#]\d[.]\d[:]\sVideo[:]\s(?<videocodec>\w+)[,]\s(?<pixelformat>\w+)[,]\s(?<resolution>\d{2,}[x]\d{2,}).+|)
Спасибо за любую помощь!
Мысль об этом, но в идеале я хотел бы, чтобы держать все в одном регулярном выражении, немного меньше кода и, надеюсь, опрятнее !? – wonea
Я пробовал это, но уменьшил квантификатор до 2, однако видеорежим не смог ничего захватить. – wonea
ну, то вы либо попробовали это неправильно, либо искали неправильные группы захвата – amcashcow