ffmpeg - 使用ffmpeg从m4v文件中提取图片

标签 ffmpeg

我在 Mac 上使用了一个名为 MetaZ 的程序来标记我的所有视频文件 (m4v)。我现在尝试在 Kodi 中使用这些 m4v 文件,它需要 .nfo 文件和电影海报等的单独图片文件。我想提取 m4v 文件中已有的图片。

当我使用ffprobe -show_streams时,我可以看到index4是一个png文件(codec_name=png)。我该如何提取它?我相信 ffmpeg 可以做到这一点,但不知道如何做到。

这是 ffprobe 的输出:

Brians-Mac-mini:PythonScript brianjhille$ ffprobe -show_streams badwords.m4v
ffprobe version N-88046-g0cb8369-tessus Copyright (c) 2007-2017 the FFmpeg developers
  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      56.  0.100 / 56.  0.100
  libavcodec     58.  0.100 / 58.  0.100
  libavformat    58.  0.100 / 58.  0.100
  libavdevice    58.  0.100 / 58.  0.100
  libavfilter     7.  0.100 /  7.  0.100
  libswscale      5.  0.100 /  5.  0.100
  libswresample   3.  0.100 /  3.  0.100
  libpostproc    55.  0.100 / 55.  0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd67b002a00] stream 0, timescale not set
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'badwords.m4v':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2014-10-20T13:01:06.000000Z
    iTunEXTC        : mpaa|R|400|
    title           : Bad Words
    artist          : Jason Bateman, Kathryn Hahn, Allison Janney, Philip Baker Hall, Rohan Chand, Ben Falcone, Patricia Belcher, Beth Grant, Rachel Harris, Steve Witting, Greg Cromer
    date            : 2013-09-06T11:00:00Z
    track           : 0
    disc            : 0
    season_number   : 0
    episode_sort    : 0
    description     : A spelling bee loser sets out to exact revenge by finding a loophole and attempting to win as an adult.
    synopsis        : A spelling bee loser sets out to exact revenge by finding a loophole and attempting to win as an adult.
    encoder         : HandBrake 0.9.9 2013052900
    hd_video        : 0
    media_type      : 9
    genre           : Comedy
    iTunMOVI        : <?xml version="1.0" encoding="UTF-8"?>
                    : <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
                    : <plist version="1.0">
                    : <dict>
                    :   <key>cast</key>
                    :   <array>
                    :       <dict>
                    :           <key>name</key>
                    :           <string>Jason Bateman</string>
                    :       </dict>
                    :       <dict>
                    :           <key>name</key>
                    :           <string>Kathryn Hahn</string>
                    :       </dict>
                    :       <dict>
                    :           <key>name</key>
                    :           <string>Allison Janney</string>
                    :       </dict>
                    :       <dict>
                    :           <key>name</key>
                    :           <string>Philip Baker Hall</string>
                    :       </dict>
                    :       <dict>
                    :           <key>name</key>
                    :           <string>Rohan Chand</string>
                    :       </dict>
                    :       <dict>
                    :           <key>name</key>
                    :           <string>Ben Falcone</string>
                    :       </dict>
                    :       <dict>
                    :           <key>name</key>
                    :           <string>Patricia Belcher</string>
                    :       </dict>
                    :       <dict>
                    :           <key>name</key>
                    :           <string>Beth Grant</string>
                    :       </dict>
                    :       <dict>
                    :           <key>name</key>
                    :           <string>Rachel Harris</string>
                    :       </dict>
                    :       <dict>
                    :           <key>name</key>
                    :           <string>Steve Witting</string>
                    :       </dict>
                    :       <dict>
                    :           <key>name</key>
                    :           <string>Greg Cromer</string>
                    :       </dict>
                    :   </array>
                    : </dict>
                    : </plist>
                    : 
  Duration: 01:29:02.84, start: 0.000000, bitrate: 1339 kb/s
    Chapter #0:0: start 0.000000, end 348.214000
    Metadata:
      title           : Chapter 1
    Chapter #0:1: start 348.214000, end 676.542000
    Metadata:
      title           : Chapter 2
    Chapter #0:2: start 676.542000, end 860.058000
    Metadata:
      title           : Chapter 3
    Chapter #0:3: start 860.058000, end 1171.836000
    Metadata:
      title           : Chapter 4
    Chapter #0:4: start 1171.836000, end 1441.839000
    Metadata:
      title           : Chapter 5
    Chapter #0:5: start 1441.839000, end 1632.129000
    Metadata:
      title           : Chapter 6
    Chapter #0:6: start 1632.129000, end 1925.422000
    Metadata:
      title           : Chapter 7
    Chapter #0:7: start 1925.422000, end 2167.030000
    Metadata:
      title           : Chapter 8
    Chapter #0:8: start 2167.030000, end 2409.605000
    Metadata:
      title           : Chapter 9
    Chapter #0:9: start 2409.605000, end 2748.276000
    Metadata:
      title           : Chapter 10
    Chapter #0:10: start 2748.276000, end 2917.945000
    Metadata:
      title           : Chapter 11
    Chapter #0:11: start 2917.945000, end 3309.502000
    Metadata:
      title           : Chapter 12
    Chapter #0:12: start 3309.502000, end 3634.660000
    Metadata:
      title           : Chapter 13
    Chapter #0:13: start 3634.660000, end 3942.434000
    Metadata:
      title           : Chapter 14
    Chapter #0:14: start 3942.434000, end 4101.626000
    Metadata:
      title           : Chapter 15
    Chapter #0:15: start 4101.626000, end 4336.193000
    Metadata:
      title           : Chapter 16
    Chapter #0:16: start 4336.193000, end 4620.643000
    Metadata:
      title           : Chapter 17
    Chapter #0:17: start 4620.643000, end 4873.729000
    Metadata:
      title           : Chapter 18
    Chapter #0:18: start 4873.729000, end 5153.341000
    Metadata:
      title           : Chapter 19
    Chapter #0:19: start 5153.341000, end 5342.796000
    Metadata:
      title           : Chapter 20
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 720x356 [SAR 32:27 DAR 640:267], 716 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2014-10-20T13:01:06.000000Z
      encoder         : JVT/AVC Coding
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 159 kb/s (default)
    Metadata:
      creation_time   : 2014-10-20T13:01:06.000000Z
    Stream #0:2(eng): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 448 kb/s
    Metadata:
      creation_time   : 2014-10-20T13:01:06.000000Z
    Side data:
      audio service type: main
    Stream #0:3(und): Data: bin_data (text / 0x74786574)
    Metadata:
      creation_time   : 2014-10-21T13:42:00.000000Z
    Stream #0:4: Video: png, rgb24(pc), 1400x2100, 90k tbr, 90k tbn, 90k tbc
Unsupported codec with id 100359 for input stream 3
[STREAM]
index=0
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
profile=Constrained Baseline
codec_type=video
codec_time_base=40071281/1921695000
codec_tag_string=avc1
codec_tag=0x31637661
width=720
height=356
coded_width=720
coded_height=356
has_b_frames=0
sample_aspect_ratio=32:27
display_aspect_ratio=640:267
pix_fmt=yuv420p
level=30
color_range=tv
color_space=smpte170m
color_transfer=bt709
color_primaries=smpte170m
chroma_location=left
field_order=unknown
timecode=N/A
refs=1
is_avc=true
nal_length_size=4
id=N/A
r_frame_rate=60000/1001
avg_frame_rate=960847500/40071281
time_base=1/90000
start_pts=0
start_time=0.000000
duration_ts=480855372
duration=5342.837467
bit_rate=716167
max_bit_rate=N/A
bits_per_raw_sample=8
nb_frames=128113
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=1
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
TAG:creation_time=2014-10-20T13:01:06.000000Z
TAG:language=und
TAG:encoder=JVT/AVC Coding
[/STREAM]
[STREAM]
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=2
channel_layout=stereo
bits_per_sample=0
id=N/A
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/48000
start_pts=0
start_time=0.000000
duration_ts=256454656
duration=5342.805333
bit_rate=159788
max_bit_rate=321176
bits_per_raw_sample=N/A
nb_frames=250444
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=1
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
TAG:creation_time=2014-10-20T13:01:06.000000Z
TAG:language=eng
[/STREAM]
[STREAM]
index=2
codec_name=ac3
codec_long_name=ATSC A/52A (AC-3)
profile=unknown
codec_type=audio
codec_time_base=1/48000
codec_tag_string=ac-3
codec_tag=0x332d6361
sample_fmt=fltp
sample_rate=48000
channels=6
channel_layout=5.1(side)
bits_per_sample=0
dmix_mode=-1
ltrt_cmixlev=-1.000000
ltrt_surmixlev=-1.000000
loro_cmixlev=-1.000000
loro_surmixlev=-1.000000
id=N/A
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/48000
start_pts=0
start_time=0.000000
duration_ts=256453632
duration=5342.784000
bit_rate=448000
max_bit_rate=N/A
bits_per_raw_sample=N/A
nb_frames=166962
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
TAG:creation_time=2014-10-20T13:01:06.000000Z
TAG:language=eng
[SIDE_DATA]
side_data_type=Audio Service Type
[/SIDE_DATA]
[/STREAM]
[STREAM]
index=3
codec_name=bin_data
codec_long_name=binary data
profile=unknown
codec_type=data
codec_tag_string=text
codec_tag=0x74786574
id=N/A
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/1000
start_pts=0
start_time=0.000000
duration_ts=5342837
duration=5342.837000
bit_rate=N/A
max_bit_rate=N/A
bits_per_raw_sample=N/A
nb_frames=20
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
TAG:creation_time=2014-10-21T13:42:00.000000Z
TAG:language=und
[/STREAM]
[STREAM]
index=4
codec_name=png
codec_long_name=PNG (Portable Network Graphics) image
profile=unknown
codec_type=video
codec_time_base=0/1
codec_tag_string=[0][0][0][0]
codec_tag=0x0000
width=1400
height=2100
coded_width=1400
coded_height=2100
has_b_frames=0
sample_aspect_ratio=0:1
display_aspect_ratio=0:1
pix_fmt=rgb24
level=-99
color_range=pc
color_space=unknown
color_transfer=unknown
color_primaries=unknown
chroma_location=unspecified
field_order=unknown
timecode=N/A
refs=1
id=N/A
r_frame_rate=90000/1
avg_frame_rate=0/0
time_base=1/90000
start_pts=0
start_time=0.000000
duration_ts=480855372
duration=5342.837467
bit_rate=N/A
max_bit_rate=N/A
bits_per_raw_sample=N/A
nb_frames=N/A
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=1
DISPOSITION:timed_thumbnails=0
[/STREAM]

谢谢。布赖恩

最佳答案

使用

ffmpeg -i badwords.m4v -c copy -map 0:4 -vframes 1 badwords-poster.png

通用命令是

ffmpeg -i in.m4v -c copy -map 0:v -map -0:V -vframes 1 video-poster.png

关于ffmpeg - 使用ffmpeg从m4v文件中提取图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47022232/

相关文章:

ffmpeg - 视频 - 在流 #1 中找不到编解码器 wavpack 的标签,容器中当前不支持编解码器无法使用 FFmpeg 将文件 MKV 写入 MP4

整个文件夹的ffmpeg转换?

ffmpeg - 如何将 H264 包装到 mp4 容器中?

ffmpeg - nReco.Video 转换器 ffMpeg 错误

ffmpeg - 如何通过 FFMPEG 直播直播?

video - rtsp流捕获

if-statement - 需要帮助将命令组合到脚本中以在 Ubuntu 中运行

windows - ffmpeg 退出状态 -1094995529

android - Android 上的慢 avcodec_decode_video2、ffmpeg

FFmpeg - 连接视频和图像