c# - 从 .NET 生成时从 FFMpeg 获取错误

标签 c# .net process ffmpeg pipe

当我像这样从命令行运行 FFMpeg 时

ffmpeg.exe -hwaccel auto -re -i "C:\Users\Public\Videos\Sample Videos\Wildlife.wmv" -an -sn -c:v bmp -pix_fmt bgr24 -f rawvideo - > junk.bin

它工作正常。然而,当我生成完全相同的东西(减去 > junk.bin)时,我在播放几秒钟后得到了这个讨厌的“坏 header ”错误。是什么原因造成的?我很难相信我的进程比文件系统阻塞管道的时间更长,但它应该能够无限期地阻塞管道而不会破坏解码。截断的 stderr 如下。我生成这个东西的代码是 here .

ffmpeg version N-60761-g916a792 Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb 19 2014 21:57:22 with gcc 4.8.2 (GCC)
  configuration: --target-os=mingw32 --enable-shared --enable-runtime-cpudetect
  libavutil      52. 65.100 / 52. 65.100
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 33.100 / 55. 33.100
  libavdevice    55. 10.100 / 55. 10.100
  libavfilter     4.  1.103 /  4.  1.103
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
cygwin warning:
  MS-DOS style path detected: C:\Users\Public\Videos\Sample Videos\Wildlife.wmv
  Preferred POSIX equivalent is: /cygdrive/c/Users/Public/Videos/Sample Videos/Wildlife.wmv
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
[asf @ 0x600059480] Stream #0: not enough frames to estimate rate; consider increasing probesize
Guessed Channel Layout for  Input Stream #0.0 : stereo
Input #0, asf, from 'C:\Users\Public\Videos\Sample Videos\Wildlife.wmv':
  Metadata:
    SfOriginalFPS   : 299700
    WMFSDKVersion   : 11.0.6001.7000
    WMFSDKNeeded    : 0.0.0.0000
    comment         : Footage: Small World Productions, Inc; Tourism New Zealand | Producer: Gary F. Spradling | Music: Steve Ball
    title           : Wildlife in HD
    copyright       : © 2008 Microsoft Corporation
    IsVBR           : 0
    DeviceConformanceTemplate: AP@L3
  Duration: 00:00:30.09, start: 0.000000, bitrate: 6977 kb/s
    Stream #0:0(eng): Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, stereo, fltp, 192 kb/s
    Stream #0:1(eng): Video: vc1 (Advanced) (WVC1 / 0x31435657), yuv420p, 1280x720, 5942 kb/s, 29.97 tbr, 1k tbn, 1k tbc
Output #0, rawvideo, to 'pipe:':
  Metadata:
    SfOriginalFPS   : 299700
    WMFSDKVersion   : 11.0.6001.7000
    WMFSDKNeeded    : 0.0.0.0000
    comment         : Footage: Small World Productions, Inc; Tourism New Zealand | Producer: Gary F. Spradling | Music: Steve Ball
    title           : Wildlife in HD
    copyright       : © 2008 Microsoft Corporation
    IsVBR           : 0
    DeviceConformanceTemplate: AP@L3
    encoder         : Lavf55.33.100
    Stream #0:0(eng): Video: bmp, bgr24, 1280x720, q=2-31, 200 kb/s, 90k tbn, 29.97 tbc
Stream mapping:
  Stream #0:1 -> #0:0 (vc1 -> bmp)
Press [q] to stop, [?] for help
frame=    3 fps=0.0 q=0.0 size=    8100kB time=00:00:00.10 bitrate=662902.1kbits/s    
frame=   29 fps= 26 q=0.0 size=   78302kB time=00:00:00.96 bitrate=662902.3kbits/s    
frame=   50 fps= 30 q=0.0 size=  135003kB time=00:00:01.66 bitrate=662902.2kbits/s    
frame=   65 fps= 30 q=0.0 size=  175503kB time=00:00:02.16 bitrate=662902.2kbits/s    
frame=   80 fps= 30 q=0.0 size=  216004kB time=00:00:02.66 bitrate=662902.1kbits/s    
frame=   95 fps= 30 q=0.0 size=  256505kB time=00:00:03.16 bitrate=662902.1kbits/s    
[asf @ 0x600059480] ff asf bad header 74  at:5053733
[asf @ 0x600059480] invalid packet_length -1908511255 at:5053740
[asf @ 0x600059480] ff asf bad header d4  at:5053759
[asf @ 0x600059480] ff asf skip 55629 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5181733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5189733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5197733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5205733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5213733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5221733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5229733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5237733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5245733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5357733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5365733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5373733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5381733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5493733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5501733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5509733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5517733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5629733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5637733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5645733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5653733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5701733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5709733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5717733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5725733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5805733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5813733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5821733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5829733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5877733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5885733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5893733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5901733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5949733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5957733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5965733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] ff asf bad header 0  at:5973733
[asf @ 0x600059480] ff asf skip 7991 (unknown stream)
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 15 times
[asf @ 0x600059480] unexpected packet_replic_size of 2
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 7 times
[asf @ 0x600059480] ff asf skip 2562 (unknown stream)
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 3 times
[asf @ 0x600059480] ff asf skip 448 (unknown stream)
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 9 times
[asf @ 0x600059480] unexpected packet_replic_size of 6
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 7 times
[asf @ 0x600059480] packet_frag_size is invalid (1749-9)
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 13 times
[asf @ 0x600059480] packet_frag_size is invalid (1749-9)
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 24 times
[asf @ 0x600059480] unexpected packet_replic_size of 6
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 6 times
[asf @ 0x600059480] unexpected packet_replic_size of 5
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 6 times
[asf @ 0x600059480] packet_frag_size is invalid (1749-9)
[asf @ 0x600059480] packet_obj_size invalid
[asf @ 0x600059480] packet_frag_size is invalid (1749-9)
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 2 times
[asf @ 0x600059480] unexpected packet_replic_size of 5
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 8 times
[asf @ 0x600059480] unexpected packet_replic_size of 5
[asf @ 0x600059480] packet_obj_size invalid
    Last message repeated 39 times
[asf @ 0x600059480] packet_frag_size is invalid (1749-40)

最佳答案

尝试删除 -re 选项。它告诉 ffmpeg read from the input at the native framerate ,也许硬盘、ffmpeg 和您的输出捕获程序之间存在一些同步或瓶颈问题。

由于您的输入存储在本地磁盘上,因此似乎没有任何理由不简单地正常读取文件。

关于c# - 从 .NET 生成时从 FFMpeg 获取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21939882/

相关文章:

ruby - 在 ruby 中杀死整个进程树

c++ - 在 Linux 中使用 C++ 显示进程

c# - 在 TreeViewItem 中存储对象?

c# - 更新面板触发器 : Could not find an event named 'OnRowCommand'

c# - 在 ASP.NET 中发送带有嵌入图像的邮件

.net - Table-per-hierarchy 和继承实现问题

.net - 全局禁用缓存 .NET

由于 StandardOutput.ReadToEnd() 和 StandardError.ReadToEnd(),C# 进程挂起

c# - 是否有类似于 C# `using` 的构造或模式将返回一个对象?

c# - 创建线程前台 VS Thread.Join()