Wie kann ich die Auflösung (Breite und Höhe) für eine Videodatei von einer Linux-Befehlszeile erhalten?


3 Answers

Verwenden Sie ffprobe (Teil von FFmpeg Toolkit)

Beispiel:

ffprobe -v quiet -print_format json -show_format -show_streams ~/Movies/big_buck_bunny_720p_5mb.mp4

Ausgabe:

{
    "streams": [
        {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
            "profile": "Main",
            "codec_type": "video",
            "codec_time_base": "1/50",
            "codec_tag_string": "avc1",
            "codec_tag": "0x31637661",
            "width": 1280,
            "height": 720,
            "coded_width": 1280,
            "coded_height": 720,
            "has_b_frames": 0,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 31,
            "chroma_location": "left",
            "refs": 1,
            "is_avc": "1",
            "nal_length_size": "4",
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/12800",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 378368,
            "duration": "29.560000",
            "bit_rate": "1032960",
            "bits_per_raw_sample": "8",
            "nb_frames": "739",
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0
            },
            "tags": {
                "creation_time": "1970-01-01 00:00:00",
                "language": "und",
                "handler_name": "VideoHandler"
            }
        },
        {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "AAC (Advanced Audio Coding)",
            "profile": "LC",
            "codec_type": "audio",
            "codec_time_base": "1/48000",
            "codec_tag_string": "mp4a",
            "codec_tag": "0x6134706d",
            "sample_fmt": "fltp",
            "sample_rate": "48000",
            "channels": 6,
            "channel_layout": "5.1",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/48000",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 1419264,
            "duration": "29.568000",
            "bit_rate": "383960",
            "max_bit_rate": "416704",
            "nb_frames": "1386",
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0
            },
            "tags": {
                "creation_time": "1970-01-01 00:00:00",
                "language": "und",
                "handler_name": "SoundHandler"
            }
        }
    ],
    "format": {
        "filename": "/Users/farsheed/Movies/big_buck_bunny_720p_5mb.mp4",
        "nb_streams": 2,
        "nb_programs": 0,
        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
        "format_long_name": "QuickTime / MOV",
        "start_time": "0.000000",
        "duration": "29.568000",
        "size": "5253880",
        "bit_rate": "1421504",
        "probe_score": 100,
        "tags": {
            "major_brand": "isom",
            "minor_version": "512",
            "compatible_brands": "isomiso2avc1mp41",
            "creation_time": "1970-01-01 00:00:00",
            "encoder": "Lavf53.24.2"
        }
    }
}

Weitere Informationen finden Sie in der Dokumentation.

Question

Ich habe die mplayer / mencoder- und ffmpeg-Dokumentation durchforstet und kann mir nichts einfallen lassen. Ich bin nicht besonders wählerisch in Bezug auf das Ausgabeformat, da ich einen regulären Ausdruck verwenden kann, um es herauszuziehen, ich kann einfach nicht scheinen, die Daten an erster Stelle zu bekommen.




Hier ist ein "fast-One-Liner", den ich genau zu diesem Zweck um ffprobe herum aufgebaut habe. Funktioniert ziemlich gut für mich sowohl auf Linux als auch auf MacOS.

#!/bin/bash

B='[[:blank:]]'
D='[[:digit:]]'
ffprobe "$1" 2>&1 \
    | grep 'Stream.*Video.*fps' \
    | sed "s/^.*$B\($D$D$D*x$D$D$D*\).*$/\1/"



Benutze ffprobe :

ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 input.mp4

Beispielausgabe:

1280x720

Siehe ffprobe und FFmpeg Wiki: FFprobe Tipps für weitere Informationen.




Nur die Breite und Höhe zurückzugeben mediainfo ist ein ausgezeichnetes Werkzeug.

mediainfo --Inform = "Video;% Width%" Videoinfo && medieinfo --Inform = "Video;% Height%" Videofile macht genau das, nicht mehr und nicht weniger, für eine Vielzahl von unterstützten Videodateien.

Es gibt eine lange Liste von nützlichen Inform= Parametern, die Sie mit dem Befehl mediainfo --Info-Parameters

Wenn Sie die Ausgabe im Standardformat WidthXHeight möchten, verwenden Sie Width=$(mediainfo --Inform="Video;%Width%" Video.File)&& Height=$(mediainfo --Inform="Video;%Height%" Video.File)&&echo $Width"X"$Height

Es gibt hier ein Bash-Skript here das Sie leicht modifizieren können, um Ihre Bedürfnisse zu erfüllen.

Quellen:

Hinzufügen eines Overlays mit FFMPEG mit minimalem Re-Encoding

http://manpages.ubuntu.com/manpages/xenial/man1/mediainfo.1.html

Whiptail: Wie umleiten Ausgabe auf Umgebungsvariable?

Wie verkette ich String-Variablen in Bash?




Related