这个命令有什么问题?
我想转换一个.avi将视频格式设为“视频=h.264/.mp4,音频=.mp3”视频。
ffmpeg -i "C:\video.avi" -c:v libx264 -preset slow -qp 0 -pass 2 -c:a mp3 -b:a 192k "C:\video.mp4"
输出 :
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
答案1
Error while opening encoder
此消息表明哪个输出流有问题。#0:0
根据控制台输出,在你的情况下,它是视频。
此外,当您收到此消息时,通常可以向上滚动以查看另一条更具体的错误消息。在您的输出中,它是:
[libx264 @ 00000000050647a0] constant rate-factor is incompatible with 2pass.
原因
您的命令使用了两种速率控制方法:-qp
和-b:v
。它们是互斥的,并且-qp
与 2pass 不兼容。
怎么修
- 不要使用 2pass,或者
- 不要将
-qp
或-crf
与 2pass 一起使用(除非您知道自己在做什么)
2pass 并不意味着更好的质量。2pass 主要用于当您尝试在特定文件大小限制内输出时。
您的请求
- “我想要的是重新编码视频并保持原始质量”
使用有损编码器无法保持“原始质量”。您必须使用无损设置:
ffmpeg -i input -c:v libx264 -qp 0 output.mp4
输出文件会很大,但是无损。
- “您能否对命令进行更改以重新编码视频,以尽可能保持质量”
值-crf
约为 18 被认为大致为“视觉无损”。从技术上讲,它并非无损,但根据你的输入和你对质量的看法,它很可能看起来是无损的。
ffmpeg -i input -c:v libx264 -crf 18 output.mp4
- “并将音频流转换为 192k .mp3”
这可以有两种解释。您想将音频和视频一起输出吗?
ffmpeg -i input -c:v libx264 -crf 18 -c:a libmp3lame -b:a 192k output.mp4
还是分开的?
ffmpeg -i input -map 0:v -c:v libx264 -crf 18 video.mp4 -map 0:a -c:a libmp3lame -b:a 192k audio.mp3
- “无论如何,您能添加一个 aac 示例吗?”
ffmpeg -i input -c:v libx264 -crf 18 -c:a aac -strict experimental -b:a 192k output.mp4