[FFmpeg-user] Hardening ffmpeg stream download?

Bo Berglund bo.berglund at gmail.com
Fri Jun 10 00:59:09 EEST 2022


On Thu, 9 Jun 2022 19:00:39 +0000, Carl Zwanzig <cpz at tuunq.com> wrote:

>On 6/9/2022 10:25 AM, Bo Berglund wrote:
>> Is there some way to let ffmpeg write the mpeg or ts stream to disk and then
>> immediately feed it to itself as an input to create the mp4?
>
>The "keep it simple" principle applies-
>
>Unless disk space is a big issue and you need the output immediately after 
>recording, use a temp file for this and convert after the download* 
>completes (as driven by your script). It'll be much easier all around and 
>more tolerant of errors. If you choose to re-encode while downloading, you 
>can run into the problem that the re-encoder catches up to the download and 
>ends (the circular buffer problem).
>
>*if saving in the downloaded codec, there's no added conversion overhead or 
>quality loss.
>

So given my original command in the script:
CMD="ffmpeg -hide_banner ${MODE} -i \"${M3U8URL}\" -vf scale=w=-4:h=480 -c:v
libx264 -preset fast -crf 26 -c:a aac -t ${CAPTURETIME} ${TARGETFILE}"

should I replace -c:v libx264 -preset fast -crf 26 with something else or simply
remove it and rely on ffmpeg to understand how to do based on me setting the
ouptput file extension to ts?

CMD="ffmpeg -hide_banner ${MODE} -i \"${M3U8URL}\" -vf scale=w=-4:h=480 -c:v
-preset fast -crf 26 -c:a aac -t ${CAPTURETIME} testfile.ts"

Or do I have to specify an encoding library?

Notice that early on I just downloaded the video and then applied the geometry
change and recoding to mp4 as a second step but it took a long time, almost half
the playing time of the video.
So that is why it all takes place during download now.


-- 
Bo Berglund
Developer in Sweden



More information about the ffmpeg-user mailing list