drupal - FFMPEG - 将任何类型的文件转换为与 IOS 和 Flash 兼容的 Mp4

标签 drupal ffmpeg video-streaming html5-video

我正在努力使用 Drupal 视频模块中的 FFmpeg 将文件生成与 IOS 和 Flash Player10 及更高版本兼容的 MP4。 到目前为止我已经使用了以下命令,请注意以“!”开头的变量是占位符,将被替换为适当的项目:

FFmpeg -strict experimental -y -i !videofile -pass 1 -s !widthx!height -b:v 500k -threads 0 -vcodec libx264 -vf "pad=!paddingwidth:!paddingheight:!paddingleft:!paddingtop:000000" -preset slow -an !convertfile

FFmpeg -strict experimental -y -i !videofile -pass 2 -s !widthx!height -b:v 500k -threads 0 -vcodec libx264 -vf "pad=!paddingwidth:!paddingheight:!paddingleft:!paddingtop:000000" -preset slow -acodec aac -ab 128k !convertfile

上述命令产生错误:

执行渲染预设 HTML5 MP4 的命令时出错,命令 #1:

nice -n 19 /usr/bin/ffmpeg/ffmpeg -y -i '80137db8c3_1334836277_int_tr_19.mp4' -s 176x100 -b:v 500k -threads 0 -vcodec libx264 -preset slow -acodec aac -ab 128k '/converted/80137db8c3_1334836277_int_tr_19.mp4' 2>&1

Output:

ffmpeg version git-2013-02-01-5a67e30 Copyright (c) 2000-2013 the FFmpeg developers
  built on Feb  1 2013 14:23:14 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --enable-gpl --enable-libass --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3
  libavutil      52. 17.100 / 52. 17.100
  libavcodec     54. 91.100 / 54. 91.100
  libavformat    54. 61.104 / 54. 61.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 35.100 /  3. 35.100
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '80137db8c3_1334836277_int_tr_19.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2011-03-28 00:12:26
  Duration: 00:02:01.14, start: 0.000000, bitrate: 703 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 601 kb/s, 29.96 fps, 29.92 tbr, 1k tbn, 59.83 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96 kb/s
    Metadata:
      creation_time   : 2011-03-28 00:12:27
      handler_name    : (C) 2007 Google Inc. v08.13.2007.
[libx264 @ 0x34ec060] using SAR=100/99
[libx264 @ 0x34ec060] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x34ec060] profile High, level 2.0
[libx264 @ 0x34ec060] 264 - core 129 r2245 bc13772 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x3:0x113 me=umh subme=8 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=abr mbtree=1 bitrate=500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.
Alternatively use the non experimental encoder 'libfaac'.

我使用的另一个命令是:

FFmpeg -i !videofile -an -pass 1 -vcodec libx264 -preset slow -b 500k -threads auto !convertfile

FFMpeg -y -i !videofile -acodec libfaac -ab 128k -pass 2 -vcodec libx264 -preset slow -b 500k -threads auto !convertfile

第一遍的输出:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'comiccon.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: mp41
    creation_time   : 2012-08-15 17:12:37
  Duration: 01:17:15.93, start: 0.000000, bitrate: 706 kb/s
    Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 636 kb/s, 30 fps, 30 tbr, 90k tbn, 60 tbc
    Metadata:
      creation_time   : 2012-08-15 17:12:37
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 63 kb/s
    Metadata:
      creation_time   : 2012-08-15 17:12:37
      handler_name    : SoundHandler
Please use -b:a or -b:v, -b is ambiguous

using SAR=1/1
[libx264 @ 0x1c39be0] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x1c39be0] profile Main, level 3.0
[libx264 @ 0x1c39be0] 264 - core 129 r2245 bc13772 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x1:0 me=dia subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=abr mbtree=1 bitrate=500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'comiccon.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: mp41
    encoder         : Lavf54.61.104
    Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=-1--1, pass 1, 500 kb/s, 15360 tbn, 30 tbc
    Metadata:
      creation_time   : 2012-08-15 17:12:37
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
Press [q] to stop, [?] for help
frame=139078 fps=279 q=32766.0 Lsize=  286145kB time=01:17:15.86 bitrate= 505.6kbits/s    
video:284758kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.487000%
[libx264 @ 0x1c39be0] frame I:656   Avg QP:19.51  size: 21457
[libx264 @ 0x1c39be0] frame P:76006 Avg QP:22.19  size:  3141
[libx264 @ 0x1c39be0] frame B:62416 Avg QP:26.38  size:   621
[libx264 @ 0x1c39be0] consecutive B-frames: 32.3% 17.5% 18.6% 31.6%
[libx264 @ 0x1c39be0] mb I  I16..4: 24.5%  0.0% 75.5%
[libx264 @ 0x1c39be0] mb P  I16..4:  7.5%  0.0%  0.0%  P16..4: 40.5%  0.0%  0.0%  0.0%  0.0%    skip:52.1%
[libx264 @ 0x1c39be0] mb B  I16..4:  1.4%  0.0%  0.0%  B16..8: 12.0%  0.0%  0.0%  direct: 2.9%  skip:83.7%  L0:41.1% L1:41.6% BI:17.3%
[libx264 @ 0x1c39be0] final ratefactor: 23.45
[libx264 @ 0x1c39be0] direct mvs  spatial:95.3% temporal:4.7%
[libx264 @ 0x1c39be0] coded y,uvDC,uvAC intra: 37.6% 42.8% 11.8% inter: 8.9% 8.2% 0.5%
[libx264 @ 0x1c39be0] i16 v,h,dc,p: 43% 28% 19% 10%
[libx264 @ 0x1c39be0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 21% 11%  6%  4%  5%  4%  6%  6%
[libx264 @ 0x1c39be0] i8c dc,h,v,p: 57% 19% 20%  4%
[libx264 @ 0x1c39be0] Weighted P-Frames: Y:1.4% UV:0.5%
[libx264 @ 0x1c39be0] kb/s:503.18

第二遍的输出:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'comiccon.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: mp41
    creation_time   : 2012-08-15 17:12:37
  Duration: 01:17:15.93, start: 0.000000, bitrate: 706 kb/s
    Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 636 kb/s, 30 fps, 30 tbr, 90k tbn, 60 tbc
    Metadata:
      creation_time   : 2012-08-15 17:12:37
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 63 kb/s
    Metadata:
      creation_time   : 2012-08-15 17:12:37
      handler_name    : SoundHandler
Please use -b:a or -b:v, -b is ambiguous
[libx264 @ 0x3247f80] using SAR=1/1
[libx264 @ 0x3247f80] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x3247f80] profile High, level 3.0
[libx264 @ 0x3247f80] 264 - core 129 r2245 bc13772 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x3:0x113 me=umh subme=8 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=2pass mbtree=1 bitrate=500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'comiccon.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: mp41
    encoder         : Lavf54.61.104
    Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=-1--1, pass 2, 500 kb/s, 15360 tbn, 30 tbc
    Metadata:
      creation_time   : 2012-08-15 17:12:37
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, s16, 128 kb/s
    Metadata:
      creation_time   : 2012-08-15 17:12:37
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
  Stream #0:1 -> #0:1 (aac -> libfaac)
Press [q] to stop, [?] for help
frame=139078 fps=206 q=32766.0 Lsize=  357252kB time=01:17:15.93 bitrate= 631.3kbits/s    
video:282992kB audio:69592kB subtitle:0 global headers:0kB muxing overhead 1.324238%
[libx264 @ 0x3247f80] frame I:656   Avg QP:19.61  size: 20433
[libx264 @ 0x3247f80] frame P:76006 Avg QP:23.07  size:  2996
[libx264 @ 0x3247f80] frame B:62416 Avg QP:26.23  size:   780
[libx264 @ 0x3247f80] consecutive B-frames: 32.3% 17.5% 18.6% 31.6%
[libx264 @ 0x3247f80] mb I  I16..4: 17.2% 37.8% 44.9%
[libx264 @ 0x3247f80] mb P  I16..4:  2.9%  3.7%  1.2%  P16..4: 30.3%  6.1%  3.4%  0.0%  0.0%    skip:52.5%
[libx264 @ 0x3247f80] mb B  I16..4:  0.5%  0.6%  0.3%  B16..8: 25.9%  2.2%  0.5%  direct: 0.9%  skip:69.3%  L0:51.4% L1:43.0% BI: 5.7%
[libx264 @ 0x3247f80] 8x8 transform intra:45.9% inter:51.5%
[libx264 @ 0x3247f80] direct mvs  spatial:85.5% temporal:14.5%
[libx264 @ 0x3247f80] coded y,uvDC,uvAC intra: 47.3% 49.2% 13.5% inter: 9.0% 9.4% 0.5%
[libx264 @ 0x3247f80] i16 v,h,dc,p: 38% 27% 13% 22%
[libx264 @ 0x3247f80] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 16% 14%  5%  5%  7%  7%  8%  9%
[libx264 @ 0x3247f80] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 15%  9%  6%  7%  8%  7%  8%  8%
[libx264 @ 0x3247f80] i8c dc,h,v,p: 49% 22% 20%  8%
[libx264 @ 0x3247f80] Weighted P-Frames: Y:1.4% UV:0.5%
[libx264 @ 0x3247f80] ref P L0: 79.3% 10.4%  6.8%  1.6%  1.2%  0.7%  0.0%
[libx264 @ 0x3247f80] ref B L0: 93.6%  4.8%  1.2%  0.3%
[libx264 @ 0x3247f80] ref B L1: 96.6%  3.4%
[libx264 @ 0x3247f80] kb/s:500.06

上述命令正确生成文件,但无法在 Flash Player 中播放。我注意到的一件事是,如果输入文件也是 mp4,则可能会发生这种情况。该命令是针对用户上传文件执行的,因此输入文件可以是任意格式。

以下是有关我的 FFmpeg 版本的信息: > ffmpeg 版本 git-2013-02-01-5a67e30 版权所有 (c) 2000-2013 > FFmpeg 开发人员于 2013 年 2 月 1 日 14:23:14 使用 gcc 4.6 构建 > (Ubuntu/Linaro 4.6.3-1ubuntu5) 配置:--enable-gpl > --enable-libass --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable -libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3 libavutil 52.17.100/52.17.100
libavcodec 54.91.100/54.91.100
libavformat 54.61.104/54.61.104
libavdevice 54.3.103/54.3.103
libavfilter 3.35.100/3.35.100
libswscale 2.2.100/2.2.100
libsresample 0.17.102/0.17.102
libpostproc 52.2.100/52.2.1

最佳答案

一些注意事项:

  • 二进制文件是ffmpeg;不是 FFmpeg 或 FFMpeg。

  • -strictexperimental 应该用作输出选项。您将其用作输入选项并且被忽略。其他 AAC 编码器不需要它。

  • -threads auto 现在是默认值,添加它是多余的。

  • 您使用 --enable-libfdk-aac 进行编译,因此您可以使用 -codec:a libfdk_aac,这将提供比每个文件大小更好的质量其他 AAC 编码器。请参阅FFmpeg AAC Encoding GuideFFmpeg and x264 Encoding Guide .

  • 不应忽略消息请使用 -b:a 或 -b:v,-b 不明确,以便 ffmpeg 知道您是否要将所需的比特率应用于音频或视频。

  • 我不明白为什么第二个命令不能在 Flash 播放器中运行。您可能只是在播放之前没有等待足够长的时间来完全下载文件。您可以添加 -movflags +faststart 以允许在下载完成之前开始播放。

  • -s 替换为 scale过滤,这样你就可以有一个合适的filterchainpad 。下次显示实际命令而不是带有变量的命令;否则我可以给出一个正确的过滤示例。

关于drupal - FFMPEG - 将任何类型的文件转换为与 IOS 和 Flash 兼容的 Mp4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14694042/

相关文章:

mysql - SQL数据库创建错误

css - Drupal、CSS、表单提交按钮 - 样式在 ajax 之后丢失

Drupal:自动将新节点添加到节点队列

node.js - 使用 ffmpeg 和 nodejs 剪切视频而不重新编码( Fluent-ffmpeg )

node.js - 流利的ffmpeg如何将X11显示设置为输入

ffmpeg 调整较大视频的大小以适合所需大小并添加填充

c# - 缓冲时播放视频 : relating buffered bytes to buffered duration

php - 获取指定节点类型的最新 10 篇文章?

ffmpeg - libav MPEGTS 解复用 - 处理循环/不连续性

java - xuggler 错误 - "cannot find symbol : class VideoImage"- 我缺少什么?