ffmpeg - 将 MOV 文件转换为 MP4 [关闭]
Posted
技术标签:
【中文标题】ffmpeg - 将 MOV 文件转换为 MP4 [关闭]【英文标题】:ffmpeg - Converting MOV files to MP4 [closed] 【发布时间】:2012-08-15 02:49:11 【问题描述】:我刚刚安装了 ffmpeg,我正在尝试将我上传的所有视频编码为 .mp4 文件。目前大多数用户都上传 .mov,我想将每个视频都转换为 .mp4。
我运行命令如下:
ffmpeg -i movie.mov -vcodec copy -acodec cop out.mp4
但我得到的只是以下错误
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%
【问题讨论】:
您确定这些是错误吗?这对我来说更像是一个日志文件。它甚至要求覆盖以前的 mp4:文件 'out.mp4' 已经存在。覆盖? [是/否] 是 Similar question 在超级用户中。 【参考方案1】:将其流式传输到 Adobe Premiere Pro 等某些应用程序所需的新容器 (mp4) 的命令无需编码(快速)是:
ffmpeg -i input.mov -qscale 0 output.mp4
Alternative 如 cmets 中所述,以最佳质量重新编码 (-qscale 0
):
ffmpeg -i input.mov -q:v 0 output.mp4
【讨论】:
既然这出现在搜索结果中,我将在写作时为 ffmpeg 添加更新的命令:ffmpeg -i input.mov -qscale 0 output.mp4
@StudioEvoque -qscale 0
标志有什么作用?
@CyberSkull -qscale
设置压缩级别。 qscale 值越低,质量越好。可用的 qscale 值范围从 1(最高质量)到 31(最低质量)。
@MiguelBartelsman @Baodad 一个容器打包多个视频和音频流,添加标题和目录。 Quicktime (mov) 和 MPEG (mp4) 容器的工作方式在技术上完全不同。如果您只是将 Quicktime 文件重命名为 mp4,则您将其伪装成 MPEG 视频,但它仍然是 Quicktime 容器。请注意:由于您使用 copy
作为编解码器参数,因此您告诉 FFMpeg 复制实际的媒体数据,而无需将任何重新编码到另一个编解码器中。
@StudioEvoque 当心!您在这里提出的建议与 OP 所做的和可能想要的相比 完全不同。您没有提供编解码器规范,因此您要求 FFMpeg 将实际媒体数据转码到与 MP4 容器关联的标准编解码器中。即使您使用最高质量设置,转码总是会丢失一些质量。只有当你使用-c copy
时,你才能确保原始媒体数据不被触及,只有容器被改变以上是关于ffmpeg - 将 MOV 文件转换为 MP4 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
PHP FFMPEG - 将.mov转换为.mp4(H264)