[Libav-user] Cannot remux HLS stream to MKV

Alexandr Kasyan a.kasyan at ntechlab.com
Mon Jul 12 15:07:59 EEST 2021

Nicolas George (2021-07-07)> Some codecs have two modes: one with global
extradata used in formats
> optimized for storage, one without used in formats optimized for
> streaming. You are probably getting the latter and trying to use where
> the former is needed.
> You probably need to insert one of the mp4toannexb bitstream filters.

That was an awesome idea, 'coz it both sounds reasonable and correlates
with what I've dug up in the ffmpeg sources so far.
Nevertheless, same error --

The most important part is the following:

if (codec_id == AV_CODEC_ID_H264 || codec_id == AV_CODEC_ID_HEVC) {
    const char *filtername = codec_id == AV_CODEC_ID_H264 ?
"h264_mp4toannexb" : "hevc_mp4toannexb";

    const auto *bsf = av_bsf_get_by_name(filtername);
    if (!bsf) {
        std::cerr << "failed to find bit stream filter" << std::endl;

    AVBSFContext *bsf_ctx_raw = nullptr;
    err = av_bsf_alloc(bsf, &bsf_ctx_raw);
    if (err < 0) {
        std::cerr << "failed to allocate bit stream filter context" <<

    bsf_ctx = std::unique_ptr<AVBSFContext, void (*)(AVBSFContext
*)>{bsf_ctx_raw, [](AVBSFContext *p) { av_bsf_free(&p); }};

Then I try something as straightforward as av_bsf_send_packet +
av_bsf_receive_packet, from my experience that's a working approach.
Still "Invalid data found when processing input" =(( Any ideas, please? ((


Regards, Alex
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20210712/051475f1/attachment.htm>

More information about the Libav-user mailing list