6

When I run FFMpeg from the command line like this

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

it works fine. However, when I spawn the exact same thing (minus > junk.bin) I get this nasty "bad header" error after a few seconds of playback. What is causing this? I have trouble believing my process blocks the pipe longer than the filesystem does, but it should be able to block the pipe indefinitely without defeating the decoding. The truncated stderr is below. My code to spawn the thing is 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)
Community
  • 1
  • 1
Brannon
  • 5,324
  • 4
  • 35
  • 83
  • If you're using ffMpeg on .Net why not use MediaHandler Pro for wrapping it? – o_weisman Mar 03 '14 at 13:13
  • I think using an external library that already wraps FFMPEG would help you a lot. I've used the video portion of AForge.NET, which contains an FFMPEG external library to extract frames from a .mpeg with great sucess. You can find it [here](https://code.google.com/p/aforge/). – Michael Fox Mar 03 '14 at 15:25
  • The minus sign at the end of your commandline makes FFMpeg expect input data from standard input. You have explicitely specified an input file using "-i". Therefore, I would rather omit the "-". – Axel Kemper Mar 05 '14 at 18:17
  • Actually, I think in this situation it sends output to STDOUT, which is exactly what I wanted. – Brannon Mar 05 '14 at 21:29

1 Answers1

0

Try removing the -re option. It tells ffmpeg to read from the input at the native framerate, and perhaps there's some synchronization or bottleneck issues between the hard disk, ffmpeg, and your output capture program.

Since your input is stored on a local disk there doesn't seem to be any reason not to simply read the file normally.

Nick
  • 3,722
  • 2
  • 26
  • 17