AMV 视频格式是一种专有视频文件格式,专为 MP4 播放器以及具有视频播放功能的 S1 MP3 播放器制作。
如何将 MP4 视频转换为 AMV?
我想这样做以使它在 Bertronic MP3 播放器上运行。
我尝试过
$ ffmpeg -i input.mp4 output.amv
[NULL @ 0x16d2880] Unable to find a suitable output format for 'output.amv'
output.amv: Invalid argument
下列 (来源) 似乎可以工作,但在 MP3 播放器上它给出了一条错误消息:
$ ffmpeg -i input.mp4 -map_metadata -1 -c:v amv -f avi -q:v 2 -vf scale="320:-16" -c:a libmp3lame -q:a 4 test.amv.encode.amv
ffmpeg version 2.8.10-0ubuntu0.16.04.1 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
WARNING: library configuration mismatch
avcodec configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv --enable-version3 --disable-doc --disable-programs --disable-avdevice --disable-avfilter --disable-avformat --disable-avresample --disable-postproc --disable-swscale --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libvo_aacenc --enable-libvo_amrwbenc
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.40.101
Duration: 00:04:17.91, start: 0.000000, bitrate: 692 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 854x480 [SAR 1:1 DAR 427:240], 560 kb/s, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
Metadata:
handler_name : SoundHandler
[swscaler @ 0x1bea0e0] deprecated pixel format used, make sure you did set range correctly
Output #0, avi, to 'test.amv.encode.amv':
Metadata:
ISFT : Lavf56.40.101
Stream #0:0: Video: amv (AMVF / 0x46564D41), yuvj420p(pc), 320x176 [SAR 4697:4800 DAR 427:240], q=2-31, 200 kb/s, 23.98 fps, 23.98 tbn, 23.98 tbc (default)
Metadata:
encoder : Lavc56.60.100 amv
Stream #0:1: Audio: mp3 (libmp3lame) (U[0][0][0] / 0x0055), 44100 Hz, stereo, fltp (default)
Metadata:
encoder : Lavc56.60.100 libmp3lame
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> amv (native))
Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
frame= 6181 fps=500 q=2.0 Lsize= 71370kB time=00:04:17.90 bitrate=2267.0kbits/s
video:66671kB audio:4302kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.559218%
答案1
您可以从以下位置下载修改后的 ffmpeg 副本以支持 AMV:
- https://sourceforge.net/projects/amvconv/
- 或者https://github.com/tomvanbraeckel/amv-codec-tools/(之前在https://code.google.com/archive/p/amv-codec-tools/)
如何使用:
ffmpeg -i <input> -f amv -s <width>x<height> -r 16 -ac 1 -ar 22050 -qmin 3 -qmax 3 <output>
参考: amv 编解码器工具 - HowToConvertToAMV.wiki
我尝试过amvconv-0.1
并且它可以在 Ubuntu 16.04 上运行,但我无法在真实设备上测试它。
$ ./ffmpeg-amv -i ../orig.avi -f amv -s 160x120 -r 16 -ac 1 -ar 22050 -qmin 3 -qmax 3 ../test.amv
$ mediainfo ../test.amv
General
Complete name : ../test.amv
Format : AMV
Format/Info : Chinese hack of AVI
File size : 8.72 MiB
VLC 编解码器输出:
答案2
我发现我必须先使用现代/标准版本的 ffmpeg 转换为 AVI 文件,然后才能使用 ffmpeg-amv 将 AVI 转换为 AMV。我使用的命令如下:
ffmpeg -i input.mp4 -s 160x128 -y convertedToAVI.avi
./ffmpeg-amv -i convertedToAVI.avi -r 16 -ac 1 -ar 22050 -qmin 3 -qmax 3 convertedToAMV.amv
注意,在第一个命令中,我将视频缩放到我便宜的视频播放器的分辨率(160x128)。您可能需要根据设备的功能更改分辨率。
我正在使用 Mymahdi 数字紧凑型便携式 MP3/MP4 播放器 和 CentOS 7.5(但我认为这在 Ubuntu 上也同样有效)。
答案3
我创建了一个 amv-ffmpeg 项目的分支,因为我有两个播放器现在需要 AMV 文件。下面是我将文件转换为 AMV 的方法。
使用常规 FFMPEG,我将其转换为 qqvga 大小的单声道 WMV 文件。
ffmpeg -i lucas.mp4 \
-vcodec msmpeg4 -q:v 1 -s qqvga -r 16 \
-acodec wmav2 -ac 1 -ar 22050 \
lucas.wmv
然后,我使用我分叉的 amv-ffmpeg 将 WMV 转换为 AMV。
amv-ffmpeg -i lucas.wmv lucas.amv
要编译 amv-ffmpeg,请执行这些命令。
git clone https://github.com/vsubhash/amv-ffmpeg.git
cd amv-ffmpeg
./configure
make
然后可以在 git 创建的目录中名为 bin 的目录中找到 amv-ffmpeg 可执行文件。更多信息请参见我的博客。