[FFmpeg-devel] [PATCH] avformat/hlsenc: added segment filename option
Michael Niedermayer
michaelni at gmx.at
Fri Dec 5 18:53:33 CET 2014
On Fri, Dec 05, 2014 at 11:06:19AM -0600, Christian Suloway wrote:
> This option allows segment filenames to be specified. Unless -hls_flags
> single_file is enabled the filename is used as a string format with the
> segment number.
>
> Example:
> ffmpeg -f lavfi -i testsrc -c:v h264 -map 0 -hls_segment_filename
> bar%03d.ts foo.m3u8
>
> Signed-off-by: Christian Suloway <csuloway at globaleagleent.com>`
> ---
> libavformat/hlsenc.c | 46 ++++++++++++++++++++++++++++++----------------
> 1 file changed, 30 insertions(+), 16 deletions(-)
missing update to doc/muxers.texi
also it doesnt work when the hls_segment_filename
is not in the current directory, aka no path can be specified
./ffmpeg -f lavfi -i testsrc -c:v h264 -map 0 -hls_segment_filename /tmp/bar%03d.ts foo.m3u8
fails with invalid segment filename /tmp/bar%03d.ts
[...]
> @@ -270,21 +268,36 @@ static int hls_write_header(AVFormatContext *s)
> goto fail;
> }
>
> - hls->basename = av_malloc(basename_size);
> -
> - if (!hls->basename) {
> - ret = AVERROR(ENOMEM);
> - goto fail;
> - }
> -
> - strcpy(hls->basename, s->filename);
> + if (hls->segment_filename) {
> + hls->basename = av_strdup(av_basename(hls->segment_filename));
> + if (!hls->basename) {
> + ret = AVERROR(ENOMEM);
> + goto fail;
> + }
> + if (strlen(hls->basename) != strlen(hls->segment_filename)) {
> + av_log(hls, AV_LOG_ERROR, "invalid segment filename %s\n",
> + hls->segment_filename);
> + ret = AVERROR(EINVAL);
> + goto fail;
> + }
> + } else {
> + if (hls->flags & HLS_SINGLE_FILE)
> + pattern = ".ts";
>
> - p = strrchr(hls->basename, '.');
> + basename_size = strlen(s->filename) + strlen(pattern) + 1;
> + hls->basename = av_malloc(basename_size);
> + if (!hls->basename) {
> + ret = AVERROR(ENOMEM);
> + goto fail;
> + }
>
> - if (p)
> - *p = '\0';
> + strlcpy(hls->basename, s->filename, basename_size);
av_strlcpy
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
If a bugfix only changes things apparently unrelated to the bug with no
further explanation, that is a good sign that the bugfix is wrong.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20141205/637dec96/attachment.asc>
More information about the ffmpeg-devel
mailing list