FFmpeg - Lỗi khi mở bộ mã hóa cho luồng đầu ra # 0: 0


0

Có gì sai về lệnh này?
Tôi muốn chuyển đổi video định dạng .avi thành video "video = h.264 / .mp4, audio = .mp3" .

ffmpeg -i "C:\video.avi" -c:v libx264 -preset slow -qp 0 -pass 2 -c:a mp3 -b:a 192k "C:\video.mp4"

Đầu ra:

ffmpeg version N-75550-g23acb98 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.3 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib
  libavutil      55.  2.100 / 55.  2.100
  libavcodec     57.  3.100 / 57.  3.100
  libavformat    57.  2.100 / 57.  2.100
  libavdevice    57.  0.100 / 57.  0.100
  libavfilter     6.  8.100 /  6.  8.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.100 /  2.  0.100
  libpostproc    54.  0.100 / 54.  0.100
Input #0, avi, from 'video.avi':
  Metadata:
    encoder         : VirtualDubMod 1.5.10.2 (build 2540/release)
  Duration: 00:24:39.31, start: 0.000000, bitrate: 1757 kb/s
    Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p, 1280x960 [SAR 1:1 DAR 4:3], 1491 kb/s, 23.98 fps, 23.98 tbr, 23.98 tbn, 47.95 tbc
    Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 256 kb/s
[libx264 @ 00000000050647a0] using SAR=1/1
[libx264 @ 00000000050647a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 00000000050647a0] constant rate-factor is incompatible with 2pass.
Output #0, mp4, to 'video.mp4':
  Metadata:
    encoder         : VirtualDubMod 1.5.10.2 (build 2540/release)
    Stream #0:0: Video: h264, none, q=2-31, 128 kb/s, SAR 1:1 DAR 0:0, 23.98 fps
    Metadata:
      encoder         : Lavc57.3.100 libx264
    Stream #0:1: Audio: mp3, 0 channels, 128 kb/s
    Metadata:
      encoder         : Lavc57.3.100 libmp3lame
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (ac3 (native) -> mp3 (libmp3lame))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

Câu trả lời:


2

Error while opening encoder

Thông báo này cho biết luồng đầu ra nào đang gặp sự cố. Trong trường hợp của bạn, đó là #0:0, theo đầu ra giao diện điều khiển, là video.

Ngoài ra, khi bạn nhận được thông báo này, bạn thường có thể cuộn lên để xem một thông báo lỗi khác cụ thể hơn. Trong đầu ra của bạn, nó là:

[libx264 @ 00000000050647a0] constant rate-factor is incompatible with 2pass.

Nguyên nhân

Lệnh của bạn đang sử dụng hai phương thức kiểm soát tốc độ: -qp-b:v. Đây là loại trừ lẫn nhau và -qpkhông tương thích với 2pass.

Làm thế nào để khắc phục

  • Không sử dụng 2pass, hoặc
  • Không sử dụng -qphoặc -crfvới 2pass (trừ khi bạn biết bạn đang làm gì)

2pass không có nghĩa là chất lượng tốt hơn. 2pass chủ yếu được sử dụng khi bạn đang cố xuất ra trong một giới hạn kích thước tệp cụ thể.

Những gì bạn yêu cầu

  1. "Điều tôi muốn là mã hóa lại video giữ được chất lượng ban đầu"

Bạn không thể giữ "chất lượng ban đầu" với bộ mã hóa bị mất. Bạn sẽ phải sử dụng các thiết lập lossless:

ffmpeg -i input -c:v libx264 -qp 0 output.mp4

Các tập tin đầu ra sẽ rất lớn, nhưng mất mát.

  1. "Bạn có thể thay đổi lệnh để mã hóa lại video để giữ chất lượng nhiều nhất có thể không"

Một -crfgiá trị của khoảng 18 được coi là khoảng "trực quan lossless". Nó không phải là tổn thất về mặt kỹ thuật, nhưng có thể sẽ xuất hiện như vậy tùy thuộc vào đầu vào của bạn và cách bạn xem chất lượng.

ffmpeg -i input -c:v libx264 -crf 18 output.mp4
  1. "và chuyển đổi luồng âm thanh thành 192k .mp3"

Điều này có thể được giải thích theo hai cách. Bạn có muốn âm thanh và video cùng nhau trong một đầu ra không?

ffmpeg -i input -c:v libx264 -crf 18 -c:a libmp3lame -b:a 192k output.mp4

Hay riêng biệt?

ffmpeg -i input -map 0:v -c:v libx264 -crf 18 video.mp4 -map 0:a -c:a libmp3lame -b:a 192k audio.mp3
  1. "Dù sao, bạn có thể xin vui lòng thêm một ví dụ aac với nhau?"
ffmpeg -i input -c:v libx264 -crf 18 -c:a aac -strict experimental -b:a 192k output.mp4

Thêm thông tin


Nhưng tôi vẫn thích mã hóa 2 pass. Điều tôi muốn là mã hóa lại video giữ nguyên chất lượng ban đầu. Tôi biết đó là một copylệnh sao chép codec, nhưng nó không mã hóa lại chút nào, nó chỉ mux video với âm thanh được mã hóa. Bạn có thể thay đổi lệnh để mã hóa lại video để giữ chất lượng nhiều nhất có thể mà không mất nhiều thời gian (như -preset veryslowtiêu tốn hàng tấn thời gian và năng lượng) và chuyển đổi luồng âm thanh sang 192k .mp3. Dù sao, bạn có thể xin vui lòng thêm một aacví dụ với nhau? Cảm ơn.
Gương mặt hạnh phúc

@dark Phường Tại sao bạn thích 2-pass?
llogan

Chất lượng đầu ra sẽ tốt hơn 1 lượt
Happy Face

@dark Phường Điều đó không đúng . Dù sao, câu trả lời cập nhật.
llogan

Hmm tôi thấy. Vì vậy, điều chỉnh giá trị CRF không ảnh hưởng đến bitrate?
Gương mặt hạnh phúc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.