ffmpeg命令从下面的avi文件转换为mp4文件确实创建了mp4文件,但是它的质量不是很好.拳头,文件大小不同,mp4小得多,约为avi文件的1/10.其次,新创建的mp4的播放时间持续约0.1秒,而avi文件持续约60秒.
ffmpeg command to convert from avi file to mp4 file below does create mp4 file, but the quality of it is not all right at all. Fist, the sizes of the files are different, the mp4 is much smaller and about 1/10 of the avi file. Second, the playing time of the newly created mp4 is short lasting about 0.1 seconds where the avi file lasts about 60 seconds.
有人可以帮我帮助ffmpeg命令从avi下创建mp4文件吗?
Can anyone please help me out for the ffmpeg command to create mp4 file from avi under the directory like below?
for i in /xxxxxxx/xxxxxxx/*.avi; do ffmpeg -i "$i" -frames:v 1 "/xxxxxxx/xxxxxxx/$(basename "$i" .avi).mp4" done尝试后登录:
[root@server-xxxxxxx-x ~]# for i in /xxxxxx/xxxxxxx/xxxxxxx/*.avi; do ffmpeg -i "$i" -pix_fmt yuv420p -movflags +faststart "/xxxxxx/xxxxxxx/xxxxxxx/$(basename "$i" .avi).mp4"; done ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-18) configuration: libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 Guessed Channel Layout for Input Stream #0.1 : mono Input #0, avi, from '/xxxxxx/xxxxxxx/xxxxxxx/09141944_5b9b910308858.avi': Metadata: creation_time : 2018-09-14 00:18:07 encoder : CanonMVI06 Duration: 00:00:04.20, start: 0.000000, bitrate: 12999 kb/s Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 12384 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, mono, s16, 705 kb/s File '/xxxxxx/xxxxxxx/xxxxxxx/09141944_5b9b910308858.mp4' already exists. Overwrite ? [y/N] y Stream mapping: Stream #0:0 -> #0:0 (mjpeg (native) -> mpeg4 (native)) Stream #0:1 -> #0:1 (pcm_s16le (native) -> aac (native)) Press [q] to stop, [?] for help [swscaler @ 0x3d75fa0] deprecated pixel format used, make sure you did set range correctly Output #0, mp4, to '/xxxxxx/xxxxxxx/xxxxxxx/09141944_5b9b910308858.mp4': Metadata: encoder : Lavf57.83.100 Stream #0:0: Video: mpeg4 (mp4v / 0x7634706D), yuv420p, 640x480, q=2-31, 200 kb/s, 30 fps, 65521 tbn, 30 tbc Metadata: encoder : Lavc57.107.100 mpeg4 Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1 Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s Metadata: encoder : Lavc57.107.100 aac [mp4 @ 0x3d0e6e0] Starting second pass: moving the moov atom to the beginning of the file17x frame= 126 fps=0.0 q=11.8 Lsize= 310kB time=00:00:04.20 bitrate= 603.3kbits/s speed=6.21x video:270kB audio:35kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.605194% [aac @ 0x3d36f40] Qavg: 2283.534 ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-18) configuration: libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 Guessed Channel Layout for Input Stream #0.1 : mono Input #0, avi, from '/xxxxxx/xxxxxxx/xxxxxxx/09141945_5b9b913e87834.avi': Metadata: creation_time : 2018-09-14 00:18:07 encoder : CanonMVI06 Duration: 00:00:04.20, start: 0.000000, bitrate: 12999 kb/s Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 12384 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, mono, s16, 705 kb/s 推荐答案问题:您不支持编码器
您的配置行为空.这意味着您没有启用H.264/H.265视频编码器.因此, ffmpeg 选择本机编码器 mpeg4 输出MPEG-4 Part 2视频.这是HTML5视频不支持的旧格式.
Problem: You have no supported encoder
Your configuration line is blank. This means that you do not have an H.264/H.265 video encoder enabled. So ffmpeg chooses the native encoder mpeg4 which outputs MPEG-4 Part 2 video. This is an old format which is not supported by HTML5 video.
使用-enable-libx264 或-enable-libx265 进行编译.您还需要-enable-gpl 才能使用这些编码器.有关说明,请参见本指南:
Compile using --enable-libx264 or --enable-libx265. You'll also need --enable-gpl to use these encoders. See this guide for instructions:
FFmpeg Wiki:针对RHEL/Fedora/CentOS进行编译
或者,一种简单的方法是下载已经编译的 ffmpeg 并将其放在您的PATH中的某个位置,例如/usr/local/bin .或者,如果您希望脚本在任意位置,请确保脚本提供了可执行文件的完整路径.确保执行此新的 ffmpeg 而不是旧的,残废的代码.
Alternatively, an easy method is to download an already compiled ffmpeg and put it somewhere in your PATH, such as /usr/local/bin. Or make sure your script provides the full path to the executable if you want it in an arbitrary location. Ensure that this new ffmpeg gets executed instead of your old, crippled one.
更多推荐
FFMpeg命令在php脚本中从avi转换为mp4
发布评论