updated for recent changes

This commit is contained in:
2019-03-07 23:08:11 -08:00
parent 4950392a94
commit 5844bab92c
3 changed files with 25 additions and 2 deletions

View File

22
README.md Normal file
View File

@@ -0,0 +1,22 @@
httpsegmenter
=============
I grabbed this off of Google Code a few years ago; it was useful at the time
for streaming live audio to my iPhone (back when I was using an iPhone). I
came up with a workflow that I documented in [this StackOverflow post](https://stackoverflow.com/a/36227445),
and I put it to work in a live-stream timeshifter that converts radio
stations' streams into podcasts.
I just tried building it again, though, and the compile failed with some
undeclared variables or something. A bit of digging indicated that (1)
something had changed in libavcodec that broke httpsegmenter and (2) ffmpeg
has gained the ability to create the files for HTTP live streaming all by
itself.
I made a few tweaks to the source of this program to get it to build again.
They're in the latest commit, but are untested as of yet. A better idea at
this point might be to use ffmpeg's built-in segmenter. I got a stream
working pretty quickly with [this Medium post](https://medium.com/androvideo/convert-rtsp-to-hls-using-ffmpeg-2fe2cdf3a0de),
and got it dialed in further (mainly to keep it from filling the disk) with
[this bit of ffmpeg documentation](https://www.ffmpeg.org/ffmpeg-formats.html#segment).

View File

@@ -34,6 +34,7 @@
#include "libavformat/avformat.h"
#include "libavutil/opt.h"
#include "libavcodec/avcodec.h"
#ifdef _WIN32
//----------------------------------------------------------------
@@ -119,7 +120,7 @@ static AVStream *add_output_stream(AVFormatContext *output_format_context, AVStr
output_codec_context->sample_rate = input_codec_context->sample_rate;
output_codec_context->channels = input_codec_context->channels;
output_codec_context->frame_size = input_codec_context->frame_size;
if ((input_codec_context->block_align == 1 && input_codec_context->codec_id == CODEC_ID_MP3) || input_codec_context->codec_id == CODEC_ID_AC3) {
if ((input_codec_context->block_align == 1 && input_codec_context->codec_id == AV_CODEC_ID_MP3) || input_codec_context->codec_id == AV_CODEC_ID_AC3) {
output_codec_context->block_align = 0;
}
else {
@@ -133,7 +134,7 @@ static AVStream *add_output_stream(AVFormatContext *output_format_context, AVStr
output_codec_context->has_b_frames = input_codec_context->has_b_frames;
if (output_format_context->oformat->flags & AVFMT_GLOBALHEADER) {
output_codec_context->flags |= CODEC_FLAG_GLOBAL_HEADER;
output_codec_context->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
}
break;
default: