。 。 。 。 。

。 。 。 。 。

我正在尝试通过 ffmpeg 将 MPEG4 视频转换为 AMV。我在网上搜索了合适的格式,还尝试检查了其他 AMV 视频参数。所以我发现,对于 adpcm_ima_amv 声音格式,声音比特率应该是 22050,像素格式应该是 yuvj420p,视频大小应该是 160x120。所以我创建了一个相同大小的视频,并尝试了各种类型的命令,最后如下:

ffmpeg.exe -i “c:\source160x120.mp4” -c:v amv -c:a adpcm_ima_amv -pix_fmt yuvj420p -vstrict -1 -s 160x120 -ar 22050 -b:a 40400 “c:\destination.amv”

但是我仍然收到以下错误:

Only mono is supported Error initializing output stream 0:1 -- Error
while opening encoder for output stream #0:1 - maybe incorrect
parameters such as bit_rate, rate, width or height

我也尝试过按照如下方法将其更改为单声道,但出现了更多错误:

ffmpeg.exe -i “c:\source160x120.mp4” -c:v amv -c:a adpcm_ima_amv -pix_fmt yuvj420p -vstrict -1 -s 160x120 -ar 22050 -b:a 40400 -af pan="mono| c0=FL" “c:\destination.amv”

错误:

[Parsed_pan_0 @ 000002914a4d3cc0] Pure channel mapping detected: 0
[swscaler @ 000002914a60e9c0] deprecated pixel format used, make sure you did set range correctly
[amv @ 000002914a436c00] Invalid audio frame size. Got 1024, wanted 1378
[amv @ 000002914a436c00] Invalid audio block align. Got 520, wanted 697
[amv @ 000002914a436c00] Try -block_size 1378
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:0 --
Conversion failed!

您知道我在命令中遗漏了什么吗?或者我该如何让它工作?我对 ffmpeg 还很陌生。

谢谢您的帮助!

。 。 。 。 。

顺便说一句:我尝试通过 ffmpeg 复制一个 AMV 视频,以了解它是如何制作的,复制过程中得到以下结果,希望有帮助:

比例/速率为 0/0,无效。(该文件由损坏的软件生成。)最后一条消息重复了 1 次输入流 #0.1 的猜测通道布局:单声道输入 #0,avi,来自'..\1.8_Test-2.amv':持续时间:N/A,开始:0.000000,比特率:N/A流 #0:0:视频:amv,yuvj420p(pc,bt470bg/unknown/unknown),160x120,16 fps,16 tbr,16 tbn,16 tbc流 #0:1:音频:adpcm_ima_amv ([1][0][0][0] / 0x0001),22050 Hz,单声道,s16,88 kb/s文件'test1.amv'已存在。覆盖吗? [y/N] y 输出 #0,amv,到‘test1.amv’:元数据:编码器:Lavf58.76.100 流 #0:0:视频:amv,yuvj420p(pc,bt470bg/unknown/unknown),160x120,q=2-31,16 fps,16 tbr,16 tbn,16 tbc 流 #0:1:音频:adpcm_ima_amv ([1][0][0][0] / 0x0001),22050 Hz,单声道,s16,88 kb/s 流映射:流 #0:0 -> #0:0(复制)流 #0:1 -> #0:1(复制)按 [q] 停止,按 [?] 获取帮助 [amv @ 0000021460f90800] 音频数据包大小无效(698 != 697)速率= 40.4kbits/s 速度=1.04e+04x 最后一条消息重复 136 次 帧= 992 fps=0.0 q=-1.0 Lsize= 5031kB 时间=00:01:02.00 比特率= 664.7kbits/s 速度= 122x 视频:4339kB 音频:675kB 字幕:0kB 其他流:0kB 全局标头:0kB 多路复用开销:0.315401%

答案1

ffmpeg -i input.mp4 -ac 1 -ar 22050 -r 25 -block_size 882 output.amv
  • 音频通道布局必须是单声道 ( -ac 1)。
  • 音频采样率必须为 22050 ( -ar 22050)。
  • 帧速率必须能被音频采样率 (22050) 整除。因此帧速率 ( -r) 可以是 10、14、15、18、21、25、30 等。
  • -block_size取决于帧速率。控制台输出将告诉您使用什么。示例消息:Try -block_size 1378

答案2

谢谢您的快速帮助!

您的参数有效,因此视频已转换,检查了转换后的播放器,看起来它有效,包括时间安排和所有内容!

成功使用的命令如下:

ffmpeg.exe -i “c:\input160x120.mp4” -c:v amv -c:a adpcm_ima_amv -pix_fmt yuvj420p -vstrict -1 -s 160x120 -ac 1 -ar 22050 -r 25 -block_size 882 “c:\output.amv”

相关内容