[求助] ffmpeg 转码失败 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zeayes
V2EX    FFmpeg

[求助] ffmpeg 转码失败

  •  
  •   zeayes 2014-09-14 10:06:03 +08:00 7829 次点击
    这是一个创建于 4103 天前的主题,其中的信息可能已经有所发展或是发生改变。
    日志太长,详细内容:

    原始视频: http://pan.baidu.com/s/1mgIBxgO

    目前情况是这样的:
    1、ffmpeg读取视频就失败了,用ffprobe查看视频信息,其中SAR -1:1 DAR -71:40,应该是这2个值有负数导致读取失败。
    2、用MPLAYER是可以直接播放的,QUCK TIME需要转码才能播放。
    3、MPLAYER播放的视频画面是倒的,QUICK TIME转码后是画面正常的。
    4、尝试过avconv和mencoder,都会转码失败。
    5、QUICK TIME转码后的视频信息中的encoder信息乱码了,用谷歌也没找到。。。

    是不是ffmpeg缺少MPLAYER和QUICK TIME解码视频的某个库?
    PS:MPLAYER是brew安装的,查看起FORMULA,编译选项没看到和视频解码相关的库?
    26 条回复    2014-10-18 01:17:19 +08:00
    icylord
        1
    icylord  
       2014-09-14 11:07:24 +08:00
    如果用 mplayerx 或者 movist 播放正常不
    DylanRing0
        2
    DylanRing0  
       2014-09-14 12:25:01 +08:00
    在Windows上用FFMS导入视频走x264转码OK
    AVS如下:
    LoadPlugin("D:\Program Files (x86)\PressTools\MeGUI_2418_x86\tools\ffms\ffms2.dll")
    FFVideoSource("D:\recordUnity3D.mov", fpsnum=29853, fpsden=1000, threads=1)
    Turn180()
    FlipHorizontal()
    输出视频(已用mmg合并音频):
    https://onedrive.live.com/redir?resid=D4FF896B9B126B5!478&authkey=!AFkla6JCqWJBBK8&ithint=file%2cmkv
    DylanRing0
        3
    DylanRing0  
       2014-09-14 12:28:03 +08:00
    在非Windows平台做这种事,还是开个Wine跑AVS用Windows的那套方法吧
    这里头坑太多,稍有不慎就被坑
    seki
        4
    seki  
       2014-09-14 13:13:14 +08:00 via Android
    谁写的负数的 sar 和 dar………

    用封装工具比如 mkvtoolnix 换成正的再去转码吧……
    zeayes
        5
    zeayes  
    OP
       2014-09-14 16:50:12 +08:00
    @DylanRing0 难道是差什么解码库?
    zeayes
        6
    zeayes  
    OP
       2014-09-14 16:51:03 +08:00
    @icylord QUICK TIME、MPLAYER和VLC都可以播放,就是FFMPEG转码失败。
    zeayes
    nbsp;   7
    zeayes  
    OP
       2014-09-14 16:51:42 +08:00
    @seki FFPROBE读到的负数。。。
    seki
        8
    seki  
       2014-09-14 17:24:36 +08:00
    @zeayes 所以是说一般人不会这么写负数的吧 - -
    你那边有 mediainfo 吗,它是怎么显示信息的?
    zeayes
        9
    zeayes  
    OP
       2014-09-14 20:30:08 +08:00
    @seki 你看下上面最后一个gist文件。
    msg7086
        10
    msg7086  
       2014-09-14 20:54:22 +08:00 via iPhone
    有没有手动指定sar/par的功能?
    seki
        11
    seki  
       2014-09-14 21:25:02 +08:00
    @zeayes 哦,看到了,自己试了一下的确 ffmpeg 无力,但是发现用 x264 (win32 jeeb 编译版)是能顺利视频转码的
    zeayes
        12
    zeayes  
    OP
       2014-09-14 22:02:41 +08:00
    @msg7086 ffmpeg读不了这个视频,设置不了sar/par。
    zeayes
        13
    zeayes  
    OP
       2014-09-14 22:03:21 +08:00
    @seki 我在OSX上编译里面加了x264库的。。。
    seki
        14
    seki  
       2014-09-14 22:09:09 +08:00
    @zeayes 我知道,我只是把我这边的情况告诉你。个人感觉并不是 libx264 不支持负数的 sar 和 dar
    ctexlive
        15
    ctexlive  
       2014-09-15 01:18:06 +08:00
    我觉得可以用mencoder解码,再用ffmpeg播放,或者干脆用mencoder编码。
    ctexlive
        16
    ctexlive  
       2014-09-15 01:18:30 +08:00
    我觉得可以用mencoder解码,再用ffmpeg编码,或者干脆用mencoder解编码。
    ctexlive
        17
    ctexlive  
       2014-09-15 05:58:19 +08:00   1
    ---------------方法
    mencoder -flip -ofps 29.853 -ovc x264 -ffourcc H264 -x264encopts bitrate=800:threads=auto -oac faac -faacopts br=64 -channels 2 -o temp.avi recordUnity3D.mov
    ffmpeg -i temp.avi -acodec copy -vn temp.aac
    ffmpeg -i temp.avi -vcodec copy -an temp.h264
    MP4Box temp.mp4 -add temp.h264 -fps 29.853 -add temp.aac
    ----------------
    zeayes
        18
    zeayes  
    OP
       2014-09-15 13:05:23 +08:00
    @ctexlive 早上在弄,弄好了整理一份文档,非常感谢!
    ctexlive
        19
    ctexlive  
       2014-09-15 14:42:33 +08:00
    -flip 是让你的视频翻转回来.你的视频本身就是倒的
    ctexlive
        20
    ctexlive  
       2014-09-15 14:51:47 +08:00
    mencoder只能导出avi,这个avi只有mplayer才能支持.必须音视频轨道分离后再封装成其他格式(mp4,mkv).
    选择ffmpeg分离是因为速度快且兼容性好. 不建议用mencoder和mplayer分离(有点兼容性问题).
    封装mp4最好用mp4box或者MP4cteater,最标准,兼容性好. (用ffmpeg和mencoder也能封装mp4,不推荐)

    注意为了保证音视频同步,一定要注意必须指定 帧率.(mencoder的 ofps 和 mp4box的 -fps).

    ps. 其实还有一个更方便的gui编码工具,https://handbrake.fr/ 专门制作mp4和mkv的视频. 编码速度相比mencoder稍微慢点点.
    zeayes
        21
    zeayes  
    OP
       2014-09-16 09:26:38 +08:00
    @ctexlive
    @seki
    @seki
    @seki
    @DylanRing0
    @icylord
    同事最后改的稍微修改了一下ffmpeg的源代码,简单地把这个问题处理了。
    ctexlive
        22
    ctexlive  
       2014-09-16 11:10:52 +08:00 via Android
    @zeayes 请问有patch吗?这个应该有用
    Akagi201
        23
    Akagi201  
       2014-10-07 20:04:38 +08:00
    @zeayes 怎么改的?
    zeayes
        24
    zeayes  
    OP
       2014-10-08 19:20:54 +08:00   1
    @Akagi201

    # libavutil/opt.c:188
    if (o->min > num && strcmp(o->name, "pixel_aspect") == 0) {
    num = abs(num);
    }
    keery
        25
    keery  
       2014-10-17 15:31:27 +08:00
    按你的方法可以把视频转换,但是转换后视频是倒着的,需要倒转,请问应该如何实现呢?
    zeayes
        26
    zeayes  
    OP
       2014-10-18 01:17:19 +08:00
    @keery

    -vf vflip
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4833 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    Word is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 03:58 PVG 11:58 LAX 19:58 JFK 22:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86