Extract HEVC bitstream with ffmpeg

4

I would like to extract the raw .265 bitstream from HEVC mkv file. I use this:

ffmpeg.exe -i hevc.mkv -an -vcodec copy -f hevc bitstream.265

I got this error:

Requested output format 'hevc' is not a suitable output format

However, HEVC demuxer is already implemented and I can extract it to uncompressed raw YUV. ffmpeg -formats:

 File formats:
 D. = Demuxing supported
 .E = Muxing supported
D  hevc            raw HEVC video

What is wrong here?

Mark

Posted 2013-11-21T16:22:08.167

Reputation: 295

1I think you just need a -f rawvideo. Since the codec is copied, that should do it. – slhck – 2013-11-21T21:44:16.397

Well it does something, but the result is improper stream, i.e. can't be decoded with HM decoder 12.0 (TappDecoder.exe) – Mark – 2013-11-24T15:29:11.697

Answers

1

So far, the best solution is to use MKVToolNix.

mkvextract.exe tracks hevc.mkv -f 0:bitstream.265

Mark

Posted 2013-11-21T16:22:08.167

Reputation: 295

3

The raw bitstream of H.264/H.265 is typically called the Annex B format. You can create those files with the following FFmpeg commands:

H.265 to Annex B

ffmpeg -i in.mkv -c:v copy -bsf hevc_mp4toannexb out.h265

does the trick with ffmpeg and H.265/HEVC.

H.264 to Annex B

For H.264 it's slightly different:

ffmpeg -i in.mkv -c:v copy -bsf h264_mp4toannexb out.h264

Sebastian Annies

Posted 2013-11-21T16:22:08.167

Reputation: 131

1

I tried the ffmpeg solution from Sebastian, but it didn't work for me. Here is what I did to get just the H.265 bitstream. I did see that some people suggested setting the output file extension to .bin, but I like h264/h265 as it makes it more clear what kind of bitstream the file contains.

H.265 to Annex B

ffmpeg -i test.mkv -c:v copy -bsf hevc_mp4toannexb -f hevc test.h265

H.264 to Annex B

ffmpeg -i test.mkv -c:v copy -bsf h264_mp4toannexb -f h264 test.h264

NOTE: This also works for .mov files and probably for other formats as well.

arndtc

Posted 2013-11-21T16:22:08.167

Reputation: 11

1

So, you answer is identical to Sebastian Annies’s answer except you added back in the -h option that was in the question already (even though dstob recommended leaving it out)?  If you’re going to compare your answer to somebody else’s answer, compare your answer to the other answer (i.e., describe how it’s different, and why).

– Scott – 2019-02-28T21:33:42.077

Thanks for the feedback, but I did try without the -h, but ffmpeg kept giving an error. I found that frustrating so I posted the solution that worked for me. – arndtc – 2019-03-06T22:56:20.537

0

I would recommend using a file extension of .bin for your output. This is a raw bitstream file so that should be good enough.

You are doing a video copy so I would recommend leaving out the -f hevc and letting ffmpeg handle the format selection. If HEVC has been implemented in your version then it should work.

Also consider going with -c:v copy over -vcodec copy as the latter is deprecated.

I have a lot of experience with the h265 test model encoder and with using ffmpeg but not with the HEVC muxer in ffmpeg so my information may be inaccurate.

dstob

Posted 2013-11-21T16:22:08.167

Reputation: 305

-1

You might want check if you have a recent version of ffmpeg. If you want a video file without audio, try this:

ffmpeg -y -i hevc.mkv -codec:v copy videostream.mkv

or:

ffmpeg -y -i hevc.mkv -codec:v copy videostream.mp4

KernelPanic

Posted 2013-11-21T16:22:08.167

Reputation: 1

The OP asked how to extract the raw stream, not how to mux it into another container. – slhck – 2017-09-18T07:44:07.943