Я пытаюсь преобразовать файлы .avi в .mp4, используя ffmpeg, как можно без потерь.
Я попробовал эту команду:
ffmpeg -i filename.avi -c:v copy -c:a copy -y filename.mp4
и получил этот вывод:
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-shared --disable-static --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libvmaf --enable-vulkan --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-libdavs2 --enable-ffnvcodec --enable-cuda-llvm --enable-libglslang --enable-libgme --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp
libavutil 57. 0.100 / 57. 0.100
libavcodec 59. 1.101 / 59. 1.101
libavformat 59. 3.100 / 59. 3.100
libavdevice 59. 0.100 / 59. 0.100
libavfilter 8. 0.102 / 8. 0.102
libswscale 6. 0.100 / 6. 0.100
libswresample 4. 0.100 / 4. 0.100
libpostproc 56. 0.100 / 56. 0.100
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, avi, from 'Filename.avi':
Metadata:
TAPE : Filename
TCOD : 653986667
Duration: 00:01:54.01, start: 0.000000, bitrate: 30411 kb/s
Stream #0:0: Video: dvvideo (dvsd / 0x64737664), yuv411p, 720x480 [SAR 8:9 DAR 4:3], 28779 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn
Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s
[mp4 @ 000001d0ca8a1480] Could not find tag for codec dvvideo in stream #0, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:1 --
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Last message repeated 1 times
Он выводит файл .mp4 с сообщением об ошибке, что файл не может быть воспроизведен, и кодом ошибки 0xc10100be.
Кто-нибудь может интерпретировать происходящее? Какую команду вы бы порекомендовали здесь?
Большое спасибо!
Вы пытаетесь включить кодек (dvvideo) в контейнер (mp4), который его не поддерживает (по крайней мере, в ffmpeg). См. разницу между кодеком и контейнером . Вам лучше использовать кодек, поддерживаемый mp4, скажем, H.265 с использованием libx265, и попробовать конвертировать. Дополнительные параметры, которые вы можете применить, см. в документации . Вот обширный список кодеков, поддерживаемых mp4, но не все из них могут поддерживаться ffmpeg. Вот некоторые популярные кодеки . Кроме того, pcm_s16le — это необработанный аудиоформат, конвертируйте его в aac. Пытаться
ffmpeg -i filename.avi -c:v libx265 -x265-params lossless=1 -c:a libfdk_aac -b:a 128k -y filename.mp4
Он имеет кодировку без потерь H.265 и использует libfdk_aac, который имеет лучшее качество, чем родной.
звезды.в.небе
Абдулла ибн Фулан