ffmpeg:指定/强制输入H.264视频的像素格式

时间:2017-07-30 21:07:23

标签: ffmpeg mp4 pixelformat

我有一些MP4视频文件在其标题信息中缺少像素格式。我已经尝试将probesizeanalyzeduration设置为最大值2147483647,但这并没有帮助。

所以我知道这些视频可能已损坏,但如果这是唯一缺少的信息,我想我可以通过重建其标题信息或以某种方式通过强制像素格式解码它们来恢复它们。有没有人知道这是否可能?该文件还有一些背景知识:

的MediaInfo:

$ mediainfo DJI_0090.MOV 
General
Complete name                            : DJI_0090.MOV
Format                                   : MPEG-4
Format profile                           : QuickTime
Codec ID                                 : qt   2014.02 (qt  )
File size                                : 165 MiB
Duration                                 : 22 s 322 ms
Overall bit rate mode                    : Variable
Overall bit rate                         : 61.8 Mb/s
Encoded date                             : UTC 2017-05-31 18:04:45
Tagged date                              : UTC 2017-05-31 18:04:45
Comment                                  : 0.9.145
©gpt                                     : -170.60
©gyw                                     : +157.30
©grl                                     : +0.00
IsTruncated                              : Yes

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4.2
Format settings, CABAC                   : Yes
Format settings, RefFrames               : 1 frame
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 22 s 322 ms
Bit rate mode                            : Variable
Bit rate                                 : 59.4 Mb/s
Maximum bit rate                         : 50.0 Mb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 59.940 (60000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.478
Stream size                              : 158 MiB (96%)
Title                                    : DJI.AVC
Language                                 : English
Encoded date                             : UTC 2017-05-31 18:04:45
Tagged date                              : UTC 2017-05-31 18:04:45
Color range                              : Limited
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709

ffprobe:

$ ffprobe -analyzeduration 2147483647 -probesize 2147483647 DJI_0090.MOV 
ffprobe version 3.3.2 Copyright (c) 2007-2017 the FFmpeg developers
  built with Apple LLVM version 8.1.0 (clang-802.0.42)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables     --enable-avresample --cc=clang --host-cflags= --host-ldflags= --disable-indev=qtkit --enable-ffplay --enable-libfdk-aac --enable-libmp3lame     --enable-libsoxr --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --enable-opencl --disable-lzma     --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags=-I/usr/local/Cellar/openjpeg/2.1.2_1/include/openjpeg-2.1 --enable-nonfree     --enable-vda
  libavutil      55. 58.100 / 55. 58.100
  libavcodec     57. 89.100 / 57. 89.100
  libavformat    57. 71.100 / 57. 71.100
  libavdevice    57.  6.100 / 57.  6.100
  libavfilter     6. 82.100 /  6. 82.100
  libavresample   3.  5.  0 /  3.  5.  0
  libswscale      4.  6.100 /  4.  6.100
  libswresample   2.  7.100 /  2.  7.100
  libpostproc    54.  5.100 / 54.  5.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc2e9002600] Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none, 1920x1080):     unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'DJI_0090.MOV':
  Metadata:
    major_brand     : qt  
    minor_version   : 538182144
    compatible_brands: qt  
    creation_time   : 2017-05-31T18:04:45.000000Z
    comment         : 0.9.145
  Duration: 00:00:22.36, bitrate: 61732 kb/s
    Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), none, 1920x1080, 59.94 fps, 59.94 tbr, 60k tbn, 120k tbc (default)
    Metadata:
      creation_time   : 2017-05-31T18:04:45.000000Z
      handler_name    : DJI.AVC
      encoder         : Dji AVC encoder

我无法以这种方式强制ffmpeg上的pixel_format:

$ ffmpeg -pixel_format yuv420p -i DJI_0090.MOV test.mp4
ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers
  built with Apple LLVM version 8.1.0 (clang-802.0.42)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables     --enable-avresample --cc=clang --host-cflags= --host-ldflags= --disable-indev=qtkit --enable-ffplay --enable-libfdk-aac --enable-libmp3lame     --enable-libsoxr --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --enable-opencl --disable-lzma     --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags=-I/usr/local/Cellar/openjpeg/2.1.2_1/include/openjpeg-2.1 --enable-nonfree     --enable-vda
  libavutil      55. 58.100 / 55. 58.100
  libavcodec     57. 89.100 / 57. 89.100
  libavformat    57. 71.100 / 57. 71.100
  libavdevice    57.  6.100 / 57.  6.100
  libavfilter     6. 82.100 /  6. 82.100
  libavresample   3.  5.  0 /  3.  5.  0
  libswscale      4.  6.100 /  4.  6.100
  libswresample   2.  7.100 /  2.  7.100
  libpostproc    54.  5.100 / 54.  5.100
Option pixel_format not found.

有没有其他方法可以用ffmpeg来实现这个目标?是否可以编辑其标题信息以包含像素格式信息?

0 个答案:

没有答案
相关问题