0

我要转换的视频上传到http://www.filedropper.com/video_17

我正在使用以下命令来转换文件:

ffmpeg -i archive.iva -c copy -map 0 output.mp4 -vsync 2 -y;

该文件的长度应该在 1 分钟左右,但转换后只有 7 秒

我究竟做错了什么?


编辑

控制台输出:

rupesh@rupesh-Lenovo-IdeaPad-Y510P:~/video$ ffmpeg -i archive.iva -c copy -map 0 output.mp4 -vsync 2 -y; 
ffmpeg version N-80026-g936751b Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
  configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --mandir=/usr/share/man --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab
  libavutil      55. 24.100 / 55. 24.100
  libavcodec     57. 42.100 / 57. 42.100
  libavformat    57. 36.100 / 57. 36.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 45.100 /  6. 45.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
[mjpeg @ 0x3a2eda0] Format mjpeg detected only with low score of 25, misdetection possible!
Input #0, mjpeg, from 'archive.iva':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 25 fps, 25 tbr, 1200k tbn
[mp4 @ 0x3a309c0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf57.36.100
    Stream #0:0: Video: mjpeg (l[0][0][0] / 0x006C), yuvj422p(pc, bt470bg/unknown/unknown), 640x480, q=2-31, 25 fps, 25 tbr, 1200k tbn
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame=  190 fps=0.0 q=-1.0 Lsize=    5909kB time=00:00:07.56 bitrate=6403.2kbits/s speed= 127x    
video:5908kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.026134%
4

1 回答 1

1

这里不需要 streamcopy ( -c copy)。只需简单地让 FFmpeg 决定实际的输出参数(它会尝试再现相同质量的输入视频,例如保持相同的大小、纵横比等):

ffmpeg -i archive.iva output.mp4

此外,您完全滥用了这些选项。

  • -y告诉 FFmpeg 自动对是/否问题说“是”(通常是覆盖具有相同名称的输出文件。全局选项,因此应该在-i选项之前使用它。
  • -map:使用此选项,您可以告诉 FFmpeg 应该在以下语句中处理哪个流。(例如:-map a:1选择第二个音频流)
  • -vsync选项必须在编码选项中进行调整;输出前!我也不确定这里是否必要。
  • -c为一个或多个流选择编码器(或解码器)。所以如果你想为视频流指定'h264',它应该是这样的:-c:v h264. 该copy参数告诉 FFmpeg将选定的流原样复制到输出。如果您将其保留,则播放器无法将视频解码为 MP4 文件。

一个基本的 FFmpeg 命令的结构大致可以这样概括:

ffmpeg [global options] -i [input file] [encoding/filtering options] [output file]
于 2016-06-09T07:32:49.230 回答