VideoHelp Forum

Our website is made possible by displaying online advertisements to our visitors. Consider supporting us by disable your adblocker or Try ConvertXtoDVD and convert all your movies to DVD. Free trial ! :)
+ Reply to Thread
Results 1 to 2 of 2
Thread
  1. Member
    Join Date
    Aug 2019
    Location
    USA
    Search PM
    New to ffmpeg and playing around that to understand better. I'm trying to use ffmpeg code base to get TS packets from a HLS Streaming server. I don't need any decoding as I just have to store the TS packets to be processed later.

    First I built a minimal FFMPEG as outlined in https://ffmpeg.zeranoe.com/forum/viewto ... f=5&t=7426. No decoders and only hls and mpegts demuxers. Then using the following code to receive the frames. While inspecting it doesn't seem to be MPEG-TS packets while looking into buffers thru GDB. Attaching the code here..

    Two Questions:
    1. Shouldn't the av_recv_frame get me the TS packets? However When I trace all the way to playlists (off HLSContext), the read_buffer there contains TS packets. IS there any example I could look into to get TS packets in this scenario without decoders?

    2. If I get answer for (1), How to get the best stream off the HLS server? when looking into ffplay, av_find_best_stream() sounds like the one to look into.. But again without needing to decode, is there a way to get best one according to the network condition?

    Thanks..


    int main(int argc, char *argv[])
    {
    AVFormatContext * ifmt_ctx = NULL;
    char *in_filename = NULL;
    int ret = 0;
    AVPacket pkt;

    if (argc != 2)
    {
    return 1;
    }
    in_filename = argv[1];

    av_register_all();


    if (!(ifmt_ctx = avformat_alloc_context())) {
    goto end;
    }
    if ((ret = avformat_open_input(&ifmt_ctx, in_filename, 0, 0)) < 0)
    {
    fprintf(stderr, "Could not open input file '%s'", in_filename);
    goto end;

    }

    if ((ret = avformat_find_stream_info(ifmt_ctx, 0)) < 0)
    {
    fprintf(stderr, "Failed to retrieve input stream information");
    goto end;

    }


    av_dump_format(ifmt_ctx, 0, in_filename, 0);

    while (1)
    {

    ret = av_read_frame(ifmt_ctx, &pkt);
    if (ret < 0)
    break;

    av_free_packet(&pkt);

    }


    end:

    avformat_close_input(&ifmt_ctx);
    return 0;
    }
    Quote Quote  
  2. Member
    Join Date
    Aug 2019
    Location
    USA
    Search PM
    Got more info. What gets returned from av_recv_frame is either Audio/Video stream from the HLS server. Also its not given as TS packets.

    So my question should have been how to get TS packets as is given an input url.
    Quote Quote  



Similar Threads