ffmpeg - 将MOV文件转换为MP4

use*_*606 123 ffmpeg converter

我刚刚安装了ffmpeg,我正在尝试将我上传的所有视频编码为.mp4文件.大多数用户目前上传.mov,我想将每个视频转换为.mp4.

我正在运行命令如下:

ffmpeg -i movie.mov -vcodec copy -acodec cop out.mp4
Run Code Online (Sandbox Code Playgroud)

但我得到的只是以下错误

ffmpeg version 0.8.5, Copyright (c) 2000-2011 the FFmpeg developers
  built on Aug 19 2012 11:38:20 with clang 3.1 (tags/Apple/clang-318.0.61)
  configuration: --enable-nonfree --enable-gpl --enable-version3 --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libfaac --enable-libxvid --enable-libx264 --enable-libvpx --enable-hardcoded-tables --enable-shared --enable-pthreads --disable-indevs --cc=clang
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  7. 0 / 53.  7. 0
  libavformat  53.  4. 0 / 53.  4. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'movie.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2012-03-28 07:13:20
  Duration: 00:00:26.23, start: 0.000000, bitrate: 12974 kb/s
    Stream #0.0(eng): Video: mjpeg, yuvj420p, 1280x720 [PAR 72:72 DAR 16:9], 12972 kb/s, 11.67 fps, 600 tbr, 600 tbn, 600 tbc
    Metadata:
      creation_time   : 2012-03-28 07:13:20
File 'out.mp4' already exists. Overwrite ? [y/N] y
Output #0, mp4, to 'out.mp4':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2012-03-28 07:13:20
    encoder         : Lavf53.4.0
    Stream #0.0(eng): Video: mjpeg, yuvj420p, 1280x720 [PAR 72:72 DAR 16:9], q=2-31, 12972 kb/s, 600 tbn, 600 tbc
    Metadata:
      creation_time   : 2012-03-28 07:13:20
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
frame=  121 fps=  0 q=-1.0 size=   16408kB time=00:00:10.08 bitrate=13332.2kbitsframe=  306 fps=  0 q=-1.0 Lsize=   41543kB time=00:00:26.12 bitrate=13025.0kbits/s    
video:41538kB audio:0kB global headers:0kB muxing overhead 0.012531%
Run Code Online (Sandbox Code Playgroud)

Con*_*otz 210

请看以下内容

ffmpeg -i movie.mov -vcodec copy -acodec copy out.mp4
Run Code Online (Sandbox Code Playgroud)

一定是

ffmpeg -i input.mov -q:v 0 output.mp4
Run Code Online (Sandbox Code Playgroud)

这看起来像拼写错误.

  • 由于这在搜索结果中出现,我将在写入时为ffmpeg添加更新的命令:`ffmpeg -i input.mov -qscale 0 output.mp4` (65认同)
  • @StudioEvoque`-qscale 0`标志有什么作用? (13认同)
  • @StudioEvoque要小心!你在这里提出的是**与OP所做的并且可能想要的**完全不同的东西.您没有给出编解码器规范,因此您要求FFMpeg**将实际媒体数据**转码为与MP4容器关联的标准编解码器.即使您使用最高质量的设置,转码也总会失去一些质量.只有在使用`-c copy`时,才能确保不触及原始媒体数据,只更改容器 (8认同)
  • @MiguelBartelsman @Baodad一个容器打包多个视频和音频流,添加一个标题和一个目录.从技术上讲,Quicktime(mov)和MPEG(mp4)容器的工作方式完全不同.如果你只是将Quicktime文件重命名为mp4,你假装它是一个MPEG视频,但它仍然是一个Quicktime容器.请注意:由于您使用`copy`作为编解码器参数,因此您可以告诉FFMpeg复制实际的媒体数据,而无需重新编码到另一个编解码器中. (7认同)
  • @Cyber​​Skull`-qscale`设置压缩级别.qscale值越低,质量越好.可用的qscale值范围从1(最高质量)到31(最低质量). (4认同)
  • 它打印`请使用 -q:a 或 -q:v,-qscale 不明确` (3认同)
  • 这不等于将文件重命名为 .mp4 吗? (2认同)
  • 根据[这个堆栈溢出答案](/sf/ask/1010141541/​​ncoding-a-readed-movie-by-quicktime-using-ffmpeg/14437323#14437323)我必须添加 `-pix_fmt yuv420p`使输出文件能够与 QuickTime Player 配合使用。 (2认同)
  • '-q:v 0' 与 '-q:v 1' 相同,因为 qscale 范围为 [1..31],其中 qscale=1 对应于最大质量。因此qscale=0超出范围,修改为qscale=1。 (2认同)