Commit dfa78693 authored by Stefan Westerfeld's avatar Stefan Westerfeld

HLS: support any file type as hls-prepare audio master

Signed-off-by: Stefan Westerfeld's avatarStefan Westerfeld <stefan@space.twc.de>
parent 12d320ac
......@@ -80,7 +80,7 @@ print_usage_hls()
printf ("\n");
printf ("Commands:\n");
printf (" * prepare HLS segments for streaming:\n");
printf (" audiowmark hls-prepare <input_dir> <output_dir> <playlist_name> <master_wav>\n");
printf (" audiowmark hls-prepare <input_dir> <output_dir> <playlist_name> <audio_master>\n");
printf ("\n");
printf (" * watermark one HLS segment:\n");
printf (" audiowmark hls-add <input_ts> <output_ts> <message_hex>\n");
......
......@@ -288,6 +288,28 @@ bit_rate_from_m3u8 (const string& m3u8, const WavData& wav_data, int& bit_rate)
return Error::Code::NONE;
}
Error
load_audio_master (const string& filename, WavData& audio_master_data)
{
FILE *tmp_file = tmpfile();
ScopedFile tmp_file_s (tmp_file);
string tmp_file_name = string_printf ("/dev/fd/%d", fileno (tmp_file));
if (!tmp_file)
return Error ("failed to create temp file");
/* extract wav */
Error err = run ({"ffmpeg", "-v", "error", "-y", "-i", filename, "-f", "wav", tmp_file_name});
if (err)
return err;
err = audio_master_data.load (tmp_file_name);
if (err)
return err;
return Error::Code::NONE;
}
Error
validate_input_segment (const string& filename)
{
......@@ -393,7 +415,7 @@ hls_prepare (const string& in_dir, const string& out_dir, const string& filename
}
WavData audio_master_data;
Error err = audio_master_data.load (audio_master);
Error err = load_audio_master (audio_master, audio_master_data);
if (err)
{
error ("audiowmark: failed to load audio master: %s\n", audio_master.c_str());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment