zoukankan      html  css  js  c++  java
  • 用mencoder解决ffmpeg转换wmv/asf to flv花屏的问题,并支持rm/rmvb

    SS/XS里面教我们的例子是用ffmpeg的,但是转换wmv和asf时经常出现花屏现像,网上查了资料调整参数发现无效
    后来用了下mencoder,转换是慢了点,但是质量不错,至少试了十来个wmv/asf还没看到花屏,并意外发现转换后的flv文件比ffmpeg转出来的小。

    值得一提的是,mencoder比ffmpeg慢,占用系统资源也相对大一点。也许是我用的参数质量比较高,大家有空可以调整参数试试。

    改了下SS/XS的convert.bat实现可以按照原来的计划任务自动进行转换

    convert.bat内容如下
    复制内容到剪贴板
    代码:
    @echo off
    for /R %1\video\temp    %%I in (*.mov *.avi *.mpg *.mpeg) do call :Convert %1 %%~I %%~nI
    for /R %1\video\temp    %%I in (*.rm *rmvb *.wmv *.asf) do call :Convert1 %1 %%~I %%~nI
    goto :END
    :Convert SitePath FullFile FileName
    setlocal enableextensions
    set file=%3
    set Path=%file:~-14,6%
    IF NOT EXIST %1\video\%Path% mkdir %1\video\%Path%
    C:\ffmpeg.exe -i %2 -y -ab 56 -ar 11025 -ac 2 -b 1500 -qscale 9 -r 15 -s 320*240 %1\video\%Path%\%3.flv
    C:\ffmpeg.exe -i %2 -y -f image2 -ss 8 -sameq -t 0.001 -s 320x240 %1\video\%Path%\%3.jpg
    del %2
    endlocal
    :Convert1 SitePath FullFile FileName
    setlocal enableextensions
    set file=%3
    set Path=%file:~-14,6%
    IF NOT EXIST %1\video\%Path% mkdir %1\video\%Path%
    C:\mencoder.exe %2 -o %1\video\%Path%\%3.flv -of lavf    -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=200:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=320:240 -ofps 12 -srate 22050
    C:\ffmpeg.exe -i %2 -y -f image2 -ss 8 -sameq -t 0.001 -s 320x240 %1\video\%Path%\%3.jpg
    del %2
    endlocal
    :END

    另外,mencoder支持rm和rmvb格式,所以顺便在这个批处理里加上了。



    mencoder下载:
    http://www.llbbll.com/?uid-1145-action-viewspace-itemid-990
    或从mplayer中提取:
    http://www5.mplayerhq.hu/MPlayer ... -mingw32-1.0rc1.zip
    官方资源地址:
    http://www5.mplayerhq.hu/MPlayer/releases/win32/

    不过有个问题我用下面的语句进行测试

    C:\>mencoder.exe D:\website\MySpace\video\temp\jhb.rm -o D:\website\MySpace\vide
    o\temp3.flv -of lavf   -lavfopts i_certify_that_my_video_stream_does_not_use_b_fr
    ames -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=20
    0:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=320:2
    40 -ofps 12 -srate 22050
    MEncoder 1.0rc1-3.4.2 (C) 2000-2006 MPlayer Team
    CPU: Intel(R) Celeron(R) CPU 2.40GHz (Family: 15, Model: 3, Stepping: 4)
    CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 0 SSE2: 0
    Compiled with runtime CPU detection.
    success: format: 0   data: 0x0 - 0x815b5
    REAL file format detected.
    Stream description: Video Stream
    Stream mimetype: video/x-pn-realvideo
    Stream description: Audio Stream
    Stream mimetype: audio/x-pn-realaudio
    Stream mimetype: logical-fileinfo
    VIDEO:   [RV40]   632x420   24bpp   29.000 fps     0.0 kbps ( 0.0 kbyte/s)
    [V] filefmt:11   fourcc:0x30345652   size:632x420   fps:29.00   ftime:=0.0345
    ==========================================================================
    Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
    AUDIO: 44100 Hz, 2 ch, s16le, 44.1 kbit/3.12% (ratio: 5512->176400)
    Selected audio codec: [ffcook] afm: ffmpeg (FFmpeg COOK audio decoder)
    ==========================================================================
    ** MUXER_LAVF *****************************************************************
    You have certified that your video stream does not contain B frames.
    REMEMBER: MEncoder''s libavformat muxing is presently broken and will generate
    INCORRECT files in the presence of B frames. Moreover, due to bugs MPlayer
    will play these INCORRECT files as if nothing were wrong!
    *******************************************************************************
    OK, exit
    Opening video filter: [expand osd=1]
    Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
    Opening video filter: [scale w=320 h=240]
    ==========================================================================
    Opening video decoder: [realvid] RealVideo decoder
    Error loading dll
    ERROR: Could not open required DirectShow codec drvc.so.
    Read the RealVideo section of the DOCS!
    VDecoder init failed :(
    Opening video decoder: [realvid] RealVideo decoder
    Error loading dll
    ERROR: Could not open required DirectShow codec drv4.so.6.0.
    Read the RealVideo section of the DOCS!
    VDecoder init failed :(
    Opening video decoder: [realvid] RealVideo decoder
    Error loading dll
    ERROR: Could not open required DirectShow codec drv43260.dll.
    Read the RealVideo section of the DOCS!
    VDecoder init failed :(
    Opening video decoder: [realvid] RealVideo decoder
    Error loading dll
    ERROR: Could not open required DirectShow codec drvc.bundle/Contents/MacOS/drvc.

    Read the RealVideo section of the DOCS!
    VDecoder init failed :(
    Cannot find codec matching selected -vo and video format 0x30345652.
    Read DOCS/HTML/en/codecs.html!
    ======================================================

    出错的部分我用黑色粗体表示出来了。

    解决的办法就是到http://www.mplayerhq.hu/design7/dload.html 下载其中的Binary Codec Package

    然后解开压缩包,把其中的drv43260.dll copy到windows/system32/ 下面

    然后 开始->运行 regsvr32 drv42360.dll 已经成功输出 !!!! 搞定打开flv 果然效果是可以的

  • 相关阅读:
    总结一下vue里一些小技巧
    vue使用过程常见的一些问题
    Vue.js 的几点总结Watchers/router key/render
    Hibernate-3
    Hibernate-2
    Hibernate-1
    百词斩一面9.17
    vivo一面凉经
    中兴技术面被怼面经
    红黑树
  • 原文地址:https://www.cnblogs.com/top5/p/1615749.html
Copyright © 2011-2022 走看看