Extract HEVC bitstream with ffmpeg
Solution 1
So far, the best solution is to use MKVToolNix.
mkvextract.exe tracks hevc.mkv -f 0:bitstream.265
Solution 2
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
Solution 3
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.
Related videos on Youtube
Mark
Updated on September 18, 2022Comments
-
Mark almost 2 years
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?
-
slhck over 10 yearsI think you just need a
-f rawvideo
. Since the codec is copied, that should do it. -
Mark over 10 yearsWell it does something, but the result is improper stream, i.e. can't be decoded with HM decoder 12.0 (TappDecoder.exe)
-
-
slhck almost 7 yearsThe OP asked how to extract the raw stream, not how to mux it into another container.
-
Scott - Слава Україні over 5 yearsSo, 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). -
arndtc over 5 yearsThanks 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.