FFmpeg-无法写入输出文件#0的标头(编解码器参数不正确?):初始化输出流0:2时出错,不允许操作

人气:600 发布:2022-10-16 标签: video ffmpeg video-streaming subprocess

问题描述

大家好,我正在尝试使用ffmpeg为VoD创建Web-Dash清单,但我在使用VP9编解码器时遇到此错误Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted Error initializing output stream 0:2 --,不了解该错误以及如何解决它。有谁能帮帮我吗?如果我使用VP8而不是VP9编解码器,我会收到相同的错误,但ffmpeg日志不会显示任何错误。

subprocess.call([
                FFMPEG_PATH,
                "-f", "webm_dash_manifest", "-i", 480p_path,
                "-f", "webm_dash_manifest", "-i", 720p_path,
                "-f", "webm_dash_manifest", "-i", audio_path,
                "-c", "copy", "-map", "0", "-map", "1", "-map", "2",
                "-adaptation_sets", "id=0, streams=0,1, id=1, streams=2",
                "-f", "webm_dash_manifest", dash_path
                ])

提前谢谢

更新: 这来自ffmpeg日志。

ffmpeg version 2021-09-27-git-b786bc7433-full_build-www.gyan.dev 
Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10.3.0 (Rev5, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libglslang --enable-vulkan --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      57.  7.100 / 57.  7.100
  libavcodec     59.  9.101 / 59.  9.101
  libavformat    59.  5.100 / 59.  5.100
  libavdevice    59.  0.101 / 59.  0.101
  libavfilter     8.  9.100 /  8.  9.100
  libswscale      6.  1.100 /  6.  1.100
  libswresample   4.  0.100 /  4.  0.100
  libpostproc    56.  0.100 / 56.  0.100
Trailing option(s) found in the command: may be ignored.
[webm_dash_manifest @ 000002242a67e500] Could not find codec parameters for stream 0 (Video: vp9, none(tv, bt709, progressive), 854x480): unspecified pixel format
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, webm_dash_manifest, from '480p.webm':
  Metadata:
    HANDLER         : Created by Tester
    MAJOR_BRAND     : isom
    MINOR_VERSION   : 512
    COMPATIBLE_BRANDS: isomiso2avc1mp41
    HW              : 1
                    :
    BITRATE         : 4000000
                    :
    COMMENT         : vid:v09044240000bq2bmhglths5sm54mgk0
    COPYRIGHT       : 638e55167a0287a903e7b6895ed5d02e
    MAXRATE         : 15000000
                    :
    TE_IS_REENCODE  : 1
                    :
    ENCODER         : Lavf59.2.101
  Duration: 00:00:20.17, bitrate: 907 kb/s
  Stream #0:0: Video: vp9, none(tv, bt709, progressive), 854x480, SAR 1:1 DAR 427:240, 30 fps, 30 tbr, 1k tbn (default)
    Metadata:
      HANDLER_NAME    : VideoHandler
      VENDOR_ID       : [0][0][0][0]
      ENCODER         : Lavc59.1.100 libvpx-vp9
      DURATION        : 00:00:20.166000000
      webm_dash_manifest_duration: 20166
      webm_dash_manifest_initialization_range: 1008
      webm_dash_manifest_file_name: 480p.webm
      webm_dash_manifest_track_number: 1
      webm_dash_manifest_cues_start: 2286344
      webm_dash_manifest_cues_end: 2286441
      webm_dash_manifest_bandwidth: 862822
      webm_dash_manifest_cluster_keyframe: 1
      webm_dash_manifest_cue_timestamps: 0,5000,10000,15000,20000
[webm_dash_manifest @ 000002242a69b840] Could not find codec parameters for stream 0 (Video: vp9, none(tv, bt709, progressive), 1280x720): unspecified pixel format
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #1, webm_dash_manifest, from '720p.webm':
  Metadata:
    HANDLER         : Created by Tester
    MAJOR_BRAND     : isom
    MINOR_VERSION   : 512
    COMPATIBLE_BRANDS: isomiso2avc1mp41
    HW              : 1
                    :
    BITRATE         : 4000000
                    :
    COMMENT         : vid:v09044240000bq2bmhglths5sm54mgk0
    COPYRIGHT       : 638e55167a0287a903e7b6895ed5d02e
    MAXRATE         : 15000000
                    :
    TE_IS_REENCODE  : 1
                    :
    ENCODER         : Lavf59.2.101
  Duration: 00:00:20.17, bitrate: 1548 kb/s
  Stream #1:0: Video: vp9, none(tv, bt709, progressive), 1280x720, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 1k tbn (default)
    Metadata:
      HANDLER_NAME    : VideoHandler
      VENDOR_ID       : [0][0][0][0]
      ENCODER         : Lavc59.1.100 libvpx-vp9
      DURATION        : 00:00:20.166000000
      webm_dash_manifest_duration: 20166
      webm_dash_manifest_initialization_range: 1008
      webm_dash_manifest_file_name: 720p.webm
      webm_dash_manifest_track_number: 1
      webm_dash_manifest_cues_start: 3903085
      webm_dash_manifest_cues_end: 3903182
      webm_dash_manifest_bandwidth: 1473835
      webm_dash_manifest_cluster_keyframe: 1
      webm_dash_manifest_cue_timestamps: 0,5000,10000,15000,20000
Input #2, webm_dash_manifest, from 'audio.webm':
  Metadata:
    HANDLER         : Created by Tester
    MAJOR_BRAND     : isom
    MINOR_VERSION   : 512
    COMPATIBLE_BRANDS: isomiso2avc1mp41
    HW              : 1
                    :
    BITRATE         : 4000000
                    :
    COMMENT         : vid:v09044240000bq2bmhglths5sm54mgk0
    COPYRIGHT       : 638e55167a0287a903e7b6895ed5d02e
    MAXRATE         : 15000000
                    :
    TE_IS_REENCODE  : 1
                    :
    ENCODER         : Lavf59.2.101
  Duration: 00:00:20.16, bitrate: 118 kb/s
  Stream #2:0: Audio: vorbis, 44100 Hz, stereo, fltp (default)
    Metadata:
      HANDLER_NAME    : SoundHandler
      VENDOR_ID       : [0][0][0][0]
      ENCODER         : Lavc59.1.100 libvorbis
      DURATION        : 00:00:20.158000000
      webm_dash_manifest_duration: 20158
      webm_dash_manifest_initialization_range: 5244
      webm_dash_manifest_file_name: audio.webm
      webm_dash_manifest_track_number: 1
      webm_dash_manifest_cues_start: 298527
      webm_dash_manifest_cues_end: 298624
      webm_dash_manifest_bandwidth: 110530
      webm_dash_manifest_cluster_keyframe: 1
      webm_dash_manifest_cue_timestamps: 0,4994,9983,14978,19971
At least one output file must be specified

将视频和音频转换为特定分辨率的命令运行时没有问题。

FFmpeg命令直接在CLI中运行。

ffmpeg -f webm_dash_manifest -i 480p.webm -f webm_dash_manifest -i 720p.webm -f webm_dash_manifest -i audio.webm -c copy -map 0 -map 1 -map 2 -f webm_dash_manifest -adaptation_sets "id=0,streams=0,1 id=1,streams=2 my_manifest.mpd

推荐答案

您忘记了"。尝试:

ffmpeg -f webm_dash_manifest -i 480p.webm -f webm_dash_manifest -i 720p.webm -f webm_dash_manifest -i audio.webm -c copy -map 0 -map 1 -map 2 -f webm_dash_manifest -adaptation_sets "id=0,streams=0,1 id=1,streams=2" manifest.xml

144