Câu hỏi làm thế nào để nhận ra codec video của một tập tin với ffmpeg


Tôi thường gặp vấn đề khi đọc tập tin AVI với đầu phát DVD TV nếu chúng không phải là divx hoặc xvid (DX50, tức là, không thể đọc được).

Tôi muốn thực hiện một kịch bản nhanh để nhận ra các codec video của các tập tin này trước khi ghi nó trên cdrom / dvd.

Lệnh :

ffmpeg -i file.avi

cung cấp "vùng chứa" của luồng video (mpeg4, mpeg2, v.v.), không phải codec.

Bất kỳ gợi ý nào?

Cảm ơn


11
2018-05-19 20:48


gốc


Không thể tái sản xuất. ffmpeg-0.5-5.20091026svn.fc12.x86_64 - Ignacio Vazquez-Abrams


Các câu trả lời:


thông tin truyền thông

mediainfo --Inform="Video;%Codec%" video.mkv

trường hợp của tôi sẽ trở lại:

V_MPEG4/ISO/AVC

Trả lời có thể nhờ Làm cách nào để tìm thời lượng của tệp video bằng phương tiện truyền thông trong vài giây hoặc các định dạng khác?

ffprobe (ffmpeg) cách dễ dàng

Giả sử video của bạn chỉ có một luồng video:

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name \
  -of default=noprint_wrappers=1:nokey=1 video.mkv

Sẽ trong trường hợp của tôi trở lại:

h264

Trả lời có thể nhờ Cách nhận thời lượng video trong vài giây?

ffprobe (ffmpeg) cách bẩn

Phương pháp này dễ hiểu hơn nhưng lộn xộn.

Để nhận được thông tin về codec mà không cần phát lại tệp, hãy sử dụng ffprobe.

$ ffprobe video.mkv
[...]
Input #0, matroska,webm, from 'video.mkv':
  Metadata:
    ENCODER         : Lavf56.25.101
  Duration: 00:28:05.15, start: 0.000000, bitrate: 4353 kb/s
    Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv444p, 1280x960, SAR 1:1 DAR 4:3, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
    Metadata:
      ENCODER         : Lavc56.26.100 libx264
    Stream #0:1: Audio: vorbis, 48000 Hz, stereo, fltp (default)
    Metadata:
      ENCODER         : Lavc56.26.100 libvorbis

Để trích xuất thông tin codec video - vì ffmpeg gửi thông tin đến stderr - ống và grep nó:

$ ffprobe video.mkv 2> & 1> / dev / null | grep Stream. * Video
    Luồng # 0: 0: Video: h264 (Cao 4: 4: 4 Tiên đoán), yuv444p, 1280x960, SAR 1: 1 DAR 4: 3, 29,97 fps, 29,97 tbr, 1k tbn, 59,94 tbc (mặc định)

Để giảm điều này hơn nữa, hãy giới thiệu sed:

$ ffprobe video.mkv 2> & 1> / dev / null | grep Stream. * Video | sed -e 's /.* Video: //' -e 's / [,]. * //'
h264

27
2018-04-13 16:57



Bạn cũng có thể sử dụng -show_streams (và các tùy chọn liên quan khác) thay vì sử dụng tùy chọn sed / grep hơi mơ hồ và không ổn định. "ffprobe $ file -show_streams | grep ^ codec_name =" sẽ cung cấp đầu ra codec, nhưng theo phương thức tương thích về phía trước hơn. - Ronald S. Bultje


FFmpeg cũng cung cấp codec. Kéo Stream #0.0: Video và bạn có thể xem codec. (Lưu ý rằng về mặt kỹ thuật nó có thể có một số luồng khác nhau, như 0,1.) Đầu ra dưới đây sử dụng MS Video-1. Điều này khác, như bạn mong muốn, từ container được ký hiệu bởi Input #0, avi

Ví dụ.:

FFmpeg version 0.5, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --prefix=/opt/local --disable-vhook --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-avfilter-lavf --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libfaac --enable-libfaad --enable-libxvid --enable-libx264 --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/gcc-4.2 --arch=x86_64
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 0 / 52.20. 0
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    1. 4. 0 /  1. 4. 0
  libswscale     1. 7. 1 /  1. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Jan  8 2010 15:34:15, gcc: 4.2.1 (Apple Inc. build 5646) (dot 1)
Input #0, avi, from 'Movies/fvss_demo.avi':
  Duration: 00:02:00.30, start: 0.000000, bitrate: 719 kb/s
    Stream #0.0: Video: msvideo1, rgb555, 160x120, 10 tbr, 10 tbn, 10 tbc
    Stream #0.1: Audio: pcm_u8, 8000 Hz, mono, s16, 64 kb/s
At least one output file must be specified
manoa:~ stu$ 

2
2018-05-20 04:39





Thử Thông tin truyền thông thay thế.

Nó liệt kê các codec cho mỗi luồng và đầu ra của nó đủ đơn giản để phân tích cú pháp - cũng có một tùy chọn đầu ra XML nếu bạn thích XPath giống như các truy vấn.


2
2018-06-22 06:26





ffmpeg có nó. Trên mac tôi đã làm nó theo cách này:

đầu tiên tải về ffmpeg như thế này:

brew install ffmpeg --with-fdk-aac --with-ffplay --with-freetype --with-frei0r --with-libass --with-libvo-aacenc --with-libvorbis --with-libvpx --with-opencore-amr --with-openjpeg --with-opus --with-rtmpdump --with-schroedinger --with-speex --with-theora --with-tools

và sau đó chạy nó trên dòng lệnh:

ffmpeg -filter:v idet \
    -frames:v 100 \
    -an \
    -f rawvideo -y /dev/null \
    -i ~/Downloads/yourfile.mp4

sau đó kiểm tra một cái gì đó như thế này trong đầu ra:

Thời lượng: 00: 00: 05,48, bắt đầu: 0,000000, tốc độ bit: 952 kb / s     Luồng số 0: 0 (eng): Video: h264 (Chính) (avc1 / 0x31637661), yuv420p (tv, bt709), 750x1334, 619 kb / s, 29,97 fps, 29,97 tbr, 30k tbn, 59,94 tbc (mặc định)


0
2018-06-14 10:05