VideoHelp Forum
+ Reply to Thread
Results 1 to 15 of 15
Thread
  1. I have some mp4 video that was generated with the FFMPEG command line on another computer. It plays the only the audio on my computer and the video is a black screen. What FFMPEG command line settings can i tell my friend to use so that the mp4 video he produces with FFMPEG will play on most Windows computers without having to install a special codec to play?

    Thanks!


    Bob


    This is the MediaInfo text for the mp4 that gives the black screen on my computer, but I do hear the audio.


    General
    Complete name : F:\final_video.mp4
    Format : MPEG-4
    Format profile : Base Media
    Codec ID : isom
    File size : 449 KiB
    Duration : 9s 600ms
    Overall bit rate mode : Variable
    Overall bit rate : 383 Kbps
    Writing application : Lavf55.21.100


    Video
    ID : 1
    Format : AVC
    Format/Info : Advanced Video Codec
    Format profile : High 4:4:4 Predictive@L3.0
    Format settings, CABAC : Yes
    Format settings, ReFrames : 4 frames
    Codec ID : avc1
    Codec ID/Info : Advanced Video Coding
    Duration : 9s 600ms
    Bit rate : 254 Kbps
    Width : 500 pixels
    Height : 500 pixels
    Display aspect ratio : 1.000
    Frame rate mode : Constant
    Frame rate : 30.000 fps
    Color space : YUV
    Chroma subsampling : 4:4:4
    Bit depth : 8 bits
    Scan type : Progressive
    Bits/(Pixel*Frame) : 0.034
    Stream size : 298 KiB (66%)
    Writing library : x264 core 140 r2377 1ca7bb9
    Encoding settings : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / 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=4 / threads=6 / 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=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00


    Audio
    ID : 2
    Format : AAC
    Format/Info : Advanced Audio Codec
    Format profile : LC
    Codec ID : 40
    Duration : 9s 89ms
    Bit rate mode : Variable
    Bit rate : 126 Kbps
    Maximum bit rate : 128 Kbps
    Channel(s) : 2 channels
    Channel positions : Front: L R
    Sampling rate : 44.1 KHz
    Compression mode : Lossy
    Delay relative to video : -1s 24ms
    Stream size : 140 KiB (31%)
    Quote Quote  
  2. Member
    Join Date: Sep 2007
    Location: Canada
    Search Comp PM
    I would just use something like VLC or SMPlayer that can play bascially anything. There are portable versions that don't require installation

    If you want it to play on ALL windows computers, in WMP , the most common would be WMV3 video, WMA2 audio . Even windows 95 comes with support for this out of the box . Quality will be worse than what you have now, as it doesn't support 4:4:4, the chroma will be subsampled 4:2:0 . You will notice fine colored lines, text will not be as visibly distinct. Also FFMpeg can only encode WMV2 (quality is slightly worse than WMV3)

    For -q:v 4, that's the quantizer level or quality level. Use a lower quantizer for higher quality, larger filesizes. Typical ranges would be around 2-6

    Code:
    ffmpeg -i input.ext -vcodec wmv2 -q:v 4 -acodec wmav2 output.wmv
    I would use the original, original video as input, not the MP4 that he produced (which has already incurred some loss)
    Quote Quote  
  3. Thanks poisondeathray!

    What can FFMPEG do to have mp4 output that is supported cross all platforms?


    Currently the FFMPEG output is mp4 but not of a flavor that will play on All Windows, Android, ios, etc. ... unless I recompile the video using HandBrake.


    I am sorry that I increased the requirement.
    Quote Quote  
  4. Member
    Join Date: Sep 2007
    Location: Canada
    Search Comp PM
    Originally Posted by BobAchgill View Post
    Thanks poisondeathray!

    What can FFMPEG do to have mp4 output that is supported cross all platforms?


    Currently the FFMPEG output is mp4 but not of a flavor that will play on All Windows, Android, ios, etc. ... unless I recompile the video using HandBrake.


    I am sorry that I increased the requirement.

    MP4 container isn't supported by older windows installs with default configuration . Only Win7 and above . Older versions require installing an MP4 splitter and probably a directshow h.264 decoder like ffdshow if you are using h264 compression

    And of course WMV is problematic on many idevices, OSX without perian or 3rd party installs

    There is no single format that is compatible everywhere, hence the recommendation to use a portable VLC player (eg. USB, not installed)
    Last edited by poisondeathray; 20th Jan 2014 at 15:38.
    Quote Quote  
  5. So what is Handbrake doing when it makes an mp4 that plays on Win7 and above, ios, android that FFMPEG does not? That's the boost that I would like to have. Maybe that is not possible to recreate the encoding that Handsbrake is doing short of using HandBrake to re-encode??
    Quote Quote  
  6. Member
    Join Date: Sep 2007
    Location: Canada
    Search Comp PM
    Yes it's possible, tell your friend to add -pix_fmt yuv420p

    Your mediainfo report shows YUV444 , which is not supported by the majority of hardware players
    Quote Quote  
  7. Thanks a million... poisondeathray!
    Quote Quote  
  8. MPEG-1 is good codec (and MPEG PS as container) very well supported worldwide, and overall efficiency is not bad.
    Quote Quote  
  9. Originally Posted by poisondeathray View Post
    Yes it's possible, tell your friend to add -pix_fmt yuv420p

    Your mediainfo report shows YUV444 , which is not supported by the majority of hardware players
    Poisondeathray, how exactly will the FFMPEG string look to get the result you mention of a mp4 output that is supported on a majority of hardware players? We tried the "-pix_fmt yuv420p" but without result.

    Thanks!
    Bob
    Quote Quote  
  10. Originally Posted by pandy View Post
    MPEG-1 is good codec (and MPEG PS as container) very well supported worldwide, and overall efficiency is not bad.
    Thanks Pandy! Is this codec going to be as compressed and equal quality to mp4? Which one is it on this list? http://en.wikipedia.org/wiki/Comparison_of_container_formats

    What command line would I use to produce such output using FFMPEG?

    Will that output run on Android and ios phones as well as Windows and macs?

    Thanks!
    Bob
    Quote Quote  
  11. Member
    Join Date: Sep 2007
    Location: Canada
    Search Comp PM
    Originally Posted by BobAchgill View Post
    Originally Posted by pandy View Post
    MPEG-1 is good codec (and MPEG PS as container) very well supported worldwide, and overall efficiency is not bad.
    Thanks Pandy! Is this codec going to be as compressed and equal quality to mp4? Which one is it on this list? http://en.wikipedia.org/wiki/Comparison_of_container_formats

    What command line would I use to produce such output using FFMPEG?
    MP4 is just a container (can hold different types of video compression) . You're probably really referring to h.264/AVC video compression

    No, quality is much worse, compression is much worse . Don't bother



    Will that output run on Android and ios phones as well as Windows and macs?
    Windows yes out of the box ; IOS phones I don't think so, unless you use a 3rd party app like VLC - I think Apple dropped support for legacy formats like MPEG1, MPEG2.
    Quote Quote  
  12. Originally Posted by BobAchgill View Post
    Originally Posted by poisondeathray View Post
    Yes it's possible, tell your friend to add -pix_fmt yuv420p

    Your mediainfo report shows YUV444 , which is not supported by the majority of hardware players
    Poisondeathray, how exactly will the FFMPEG string look to get the result you mention of a mp4 output that is supported on a majority of hardware players? We tried the "-pix_fmt yuv420p" but without result.

    Thanks!
    Bob
    OK, Poisondeathray, all my hopes and dreams are on getting your suggestion to work! Can you give me the complete command line to get the "-pix_fmt yuv420p" to work? I must not be doing something correct.
    Quote Quote  
  13. Member
    Join Date: Sep 2007
    Location: Canada
    Search Comp PM
    You just add it to the existing commandline, the one you had in the 1st post. You should add vbv-maxrate and bufsize settings for devices

    You're still going to have great difficulty obtaining complete comaptibility across all devices. That's why there are dozens of different device profiles . For example some settings that works for Android won't necessarly work on a PSP. The reason is different devices have different chips - some are stronger, support more features, others are weaker only support a few things and lower bitrates. The vbv-bufsize and maxrate can vary a lot for different devices . Some support only baseline profile (eg. early ipod & archos) , some main, some support high. Almost none support YUV444 that you had in the 1st post, or 10bit AVC

    Tell me what settings you're using in handbrake, and I'll translate them for ffmpeg libx264. Or use a batch GUI that has presets for all devices, or why don't use use handbrake/vidcoder in the first place ?
    Quote Quote  
  14. We are trying to automate the building of video dictionaries for deaf people in developing countries. Hence the need to build them with a tool that has a command line interface like FFMPEG. We need the clarity that comes with 264 compression on one hand (so the fingers can be seen clearly and file size will be small for Africa downloads) but we also would like to run on as many platforms as possible on the other hand. The largest platform base will be low end Google smart android phones or DVD players or photo picture frames that play video.

    Any advice is more than welcome!
    Quote Quote  
  15. Member
    Join Date: Sep 2007
    Location: Canada
    Search Comp PM
    Originally Posted by BobAchgill View Post
    We are trying to automate the building of video dictionaries for deaf people in developing countries. Hence the need to build them with a tool that has a command line interface like FFMPEG. We need the clarity that comes with 264 compression on one hand (so the fingers can be seen clearly and file size will be small for Africa downloads) but we also would like to run on as many platforms as possible on the other hand. The largest platform base will be low end Google smart android phones or DVD players or photo picture frames that play video.

    Any advice is more than welcome!




    DVD players won't be able to play h.264/AVC/MP4 , only MPEG2 and sometimes only authored as a DVD. But MPEG4-ASP (DivX/XviD) compatible DVD players will be able to play XviD AVI

    Android , like most Apple devices doesn't support MPEG2 natively (but you can download additional 3rd party software players)

    Newer Androids are more powerful than the models 3-4 years ago. To make it compatible with those, you need baseline profile, but you're severely handicapping the quality and compression ratio (no b-frame, no CABAC)

    Handbrake has a CLI version, you should be able batch with that

    For early Androids (gen 1):

    Code:
    ffmpeg -i input.ext -pix_fmt yuv420p -vcodec libx264 -profile:v baseline -level 3.0 -crf 22 -x264opts vbv-bufsize=2500:vbv-maxrate=2500:bframes=0 -c:a libvo_aacenc -ar 44100 -ac 2 -b:a 128k -movflags faststart output.mp4

    Medium Androids:

    Code:
    ffmpeg -i input.ext -pix_fmt yuv420p -vcodec libx264 -profile:v main -level 3.0 -crf 22 -x264opts vbv-bufsize=5000:vbv-maxrate=5000 -c:a libvo_aacenc -ar 44100 -ac 2 -b:a 128k -movflags faststart output.mp4

    High end Androids can play high profile @ L3.1 , HD video , higher bitrates

    The lower the crf value, the higher the quality , the larger the filesize.

    Also some devices/models have resolution limitations. So you may also have to resize (-s width x height in ffmpeg) and take account the AR information of the source video
    Quote Quote  



Similar Threads