请选择 进入手机版 | 继续访问电脑版

ChinaFFmpeg

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: 孙悟空

[Linux] code实现从ts切片成m3u8/HLS

[复制链接]
发表于 2015-6-3 17:08:31 | 显示全部楼层
大师兄  最新版本的ffmpeg 命令行可以-hls_flags single_file  这在code中怎么弄啊   还有  如何设置切片时间啊
回复 支持 反对

使用道具 举报

发表于 2015-6-11 15:37:50 | 显示全部楼层
解决了  通过av_opt_set 设置参数即可
回复 支持 反对

使用道具 举报

发表于 2015-6-17 10:15:19 | 显示全部楼层
jason306 发表于 2015-6-11 15:37
解决了  通过av_opt_set 设置参数即可

请问一下切片的ip地址跟时间如何设置啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-17 11:51:01 | 显示全部楼层
derekzhuo 发表于 2015-6-17 10:15
请问一下切片的ip地址跟时间如何设置啊。

hls muxer AVOptions:
  -start_number      <int64>      E....... set first number in the sequence (from 0 to I64_MAX) (default 0)
  -hls_time          <float>      E....... set segment length in seconds (from 0 to FLT_MAX) (default 2)
  -hls_list_size     <int>        E....... set maximum number of playlist entries (from 0 to INT_MAX) (default 5)
  -hls_ts_options    <string>     E....... set hls mpegts list of options for the container format used for hls
  -hls_wrap          <int>        E....... set number after which the index wraps (from 0 to INT_MAX) (default 0)
  -hls_allow_cache   <int>        E....... explicitly set whether the client MAY (1) or MUST NOT (0) cache media segments (from INT_MIN to INT_MAX) (default -1)
  -hls_base_url      <string>     E....... url to prepend to each playlist entry
  -hls_segment_filename <string>     E....... filename template for segment files
  -hls_flags         <flags>      E....... set flags affecting HLS playlist and media file generation (default 0)
     single_file                  E....... generate a single media file indexed with byte ranges
     delete_segments              E....... delete segment files that are no longer part of the playlist
回复 支持 反对

使用道具 举报

发表于 2015-6-17 13:23:39 | 显示全部楼层
孙悟空 发表于 2015-6-17 11:51
hls muxer AVOptions:
  -start_number            E....... set first number in the sequence (from 0  ...

有看到了,但是这个东西怎么用呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-17 13:32:31 | 显示全部楼层
derekzhuo 发表于 2015-6-17 13:23
有看到了,但是这个东西怎么用呢?

av_opt_set(is->priv, "hls_time", 5, 0);
设置 hls_time参数为5,就是5s一个ts片
回复 支持 反对

使用道具 举报

发表于 2015-6-17 13:37:12 | 显示全部楼层
孙悟空 发表于 2015-6-17 13:32
av_opt_set(is->priv, "hls_time", 5, 0);
设置 hls_time参数为5,就是5s一个ts片

好的,太感谢了。
回复 支持 反对

使用道具 举报

发表于 2015-6-18 13:26:35 | 显示全部楼层
孙悟空 发表于 2015-6-17 13:32
av_opt_set(is->priv, "hls_time", 5, 0);
设置 hls_time参数为5,就是5s一个ts片

大师兄,请问一下你第一个传进去的是什么类型的参数啊,我设置了不生效。
//    av_opt_set(output_fmtctx->priv_data, "hls_time", 5, 0);

    av_dump_format(output_fmtctx, NULL, index_filename, 1);


    if (avio_open2(&output_fmtctx->pb, index_filename, AVIO_FLAG_WRITE, &output_fmtctx->interrupt_callback, NULL) < 0) {
        av_log(NULL, AV_LOG_ERROR, "cannot open the output file '%s'\n", index_filename);
        return -ENOENT;
    }

    av_opt_set(output_fmtctx, "hls_time", 5, 0);
    av_opt_set(output_fmtctx, "hls_base_url", "http://192.168.1.5/", 0);

    if ((ret = avformat_write_header(output_fmtctx, NULL)) < 0) {
        av_log(NULL, AV_LOG_ERROR, "Cannot write the header for the file '%s' ret = %d\n", output_filename, ret);
        return -ENOENT;
    }


    while (1) {
        AVStream *in_stream = NULL;
        AVStream *out_stream = NULL;
回复 支持 反对

使用道具 举报

发表于 2015-6-18 14:11:05 | 显示全部楼层
derekzhuo 发表于 2015-6-18 13:26
大师兄,请问一下你第一个传进去的是什么类型的参数啊,我设置了不生效。
//    av_opt_set(output_fmtct ...

解决了,这样做就可以了。

    av_opt_set(output_fmtctx->priv_data, "hls_time", "1", 0);
    av_opt_set(output_fmtctx->priv_data, "hls_base_url", "http://1192.168.1.5/", 0);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-18 17:47:34 | 显示全部楼层
derekzhuo 发表于 2015-6-18 14:11
解决了,这样做就可以了。

    av_opt_set(output_fmtctx->priv_data, "hls_time", "1", 0);

现在感觉屌爆了,是吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Archiver|ChinaFFmpeg

GMT+8, 2024-4-16 16:34 , Processed in 0.071644 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表