【发布时间】:2018-08-13 04:20:12
【问题描述】:
我可以在 centOS 6 环境下使用以下命令手动将 mp4 文件手动转换为 jpg 文件。
现在,任何人都可以帮助我如何为目录中的任何 mp4 文件设置一个 cron 以自动转换
转换成与 mp4 文件同名的 jpg 文件,例如 03052022_5a9d28723d2da.jpg 用于以下环境?
操作系统:centos-6 (x86_64)
ffmpeg 2.2.2 版
Plesk 17.0.17
[root@server-xxxxxxxx-x ~]# ffmpeg -i \
/var/www/vhosts/xxxxx.com/httpdocs/save/03052022_5a9d28723d2da.mp4 \
/var/www/vhosts/xxxxx.com/httpdocs/save/03052022_5a9d28723d2da.jpg
用's/.conf$/.jpg/p':
[root@server-xxxxxx-x ~]# for i in `find /var/www/vhosts/xxxxxx.com/httpdocs/save/ -type f -name "*.mp4"`; do ffmpeg -i $i `echo $i | sed -En 's/.conf$/.jpg/p'`; done
ffmpeg 版本 2.2.2 版权所有 (c) 2000-2014 FFmpeg 开发者 使用 gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-18) 于 2018 年 2 月 21 日 03:03:24 构建 配置: libavutil 52. 66.100 / 52. 66.100 libavcodec 55. 52.102 / 55. 52.102 libavformat 55. 33.100 / 55. 33.100 libav 设备 55. 10.100 / 55. 10.100 libavfilter 4. 2.100 / 4. 2.100 libswscale 2. 5.102 / 2. 5.102 libswresample 0. 18.100 / 0. 18.100 输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自'/var/www/vhosts/xxxxxx.com/httpdocs/save/03081956_5aa116c836015.mp4': 元数据: 主要品牌:mp42 次要版本:0 compatible_brands:isomp42 创建时间:2018-02-14 04:42:34 持续时间:00:00:00.83,开始:0.000000,比特率:23270 kb/s 流 #0:0(eng):视频:h264(基线)(avc1 / 0x31637661)、yuvj420p(pc、smpte170m)、1920x1080、25370 kb/s、SAR 65536:65536 DAR 16:9、29.73 fps、30 tbr、 90k tbn,180k tbc(默认) 元数据: 旋转:90 创建时间:2018-02-14 04:42:34 handler_name : 视频句柄 流 #0:1(eng):音频:aac (mp4a / 0x6134706D),48000 Hz,立体声,fltp,96 kb/s(默认) 元数据: 创建时间:2018-02-14 04:42:34 handler_name : 声音句柄 必须至少指定一个输出文件 转换失败!
用“s/.conf$/.jpg/p”:
[root@server-xxxxxxx-x ~]# for i in `find /var/www/vhosts/xxxxxx.com/httpdocs/save/ -type f -name "*.mp4"`; do ffmpeg -i $i `echo $i | sed -En "s/.conf$/.jpg/p"`; done
ffmpeg 版本 2.2.2 版权所有 (c) 2000-2014 FFmpeg 开发者 使用 gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-18) 于 2018 年 2 月 21 日 03:03:24 构建 配置: libavutil 52. 66.100 / 52. 66.100 libavcodec 55. 52.102 / 55. 52.102 libavformat 55. 33.100 / 55. 33.100 libav 设备 55. 10.100 / 55. 10.100 libavfilter 4. 2.100 / 4. 2.100 libswscale 2. 5.102 / 2. 5.102 libswresample 0. 18.100 / 0. 18.100 输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自'/var/www/vhosts/xxxxxx.com/httpdocs/save/03081956_5aa116c836015.mp4': 元数据: 主要品牌:mp42 次要版本:0 compatible_brands:isomp42 创建时间:2018-02-14 04:42:34 持续时间:00:00:00.83,开始:0.000000,比特率:23270 kb/s 流 #0:0(eng):视频:h264(基线)(avc1 / 0x31637661)、yuvj420p(pc、smpte170m)、1920x1080、25370 kb/s、SAR 65536:65536 DAR 16:9、29.73 fps、30 tbr、 90k tbn,180k tbc(默认) 元数据: 旋转:90 创建时间:2018-02-14 04:42:34 handler_name : 视频句柄 流 #0:1(eng):音频:aac (mp4a / 0x6134706D),48000 Hz,立体声,fltp,96 kb/s(默认) 元数据: 创建时间:2018-02-14 04:42:34 handler_name : 声音句柄 必须至少指定一个输出文件 转换失败!
用“s/.mp4$/.jpg/p”
[root@server-xxxxx-x ~]# for i in `find /var/www/vhosts/xxxxxx.com/httpdocs/save/ -type f -name "*.mp4"`; do ffmpeg -i $i `echo $i | sed -En "s/.mp4$/.jpg/p"`; done
[image2 @ 0x2c488e0] 无法从模式“/var/www/vhosts/xxxxxx.com/httpdocs/save/03100013_5aa2a49bb67bc.jpg”中获取帧文件名编号 2(设置 updatefirst 或在文件名模式) av_interleaved_write_frame():参数无效 帧= 2 fps=0.0 q=3.2 Lsize=N/A 时间=00:00:00.06 比特率=N/A 视频:289kB 音频:0kB 字幕:0 数据:0 全局标题:0kB 复用开销 -100.007446% 转换失败!
【问题讨论】:
-
使用 crontab?就像你只需要设置命令并绘制
-
谢谢 Mike,我对 centos 上的 ffmpeg cron 作业不是很熟悉,如果您能向我展示上述案例的示例,我将不胜感激。
-
其他都和设置crontab一样
-
错误来自 sed 命令。您可以尝试将最后一个选项从 /P 更改为 /p 吗?
-
感谢 OldC,所以,我使用大写字母 P 是我的错误,感谢您发现这么小的错误。我已经尝试并发布了结果。它减少了错误消息,但一直显示“必须指定至少一个输出文件”。
标签: php linux ffmpeg cron imagick