Hacker News new | past | comments | ask | show | jobs | submit login

What about gstreamer?

I asked ChatGPT for an example to work in memory instead of ffmpeg with files and it just went on and on... plus the dependencies were pretty clearly most at home on Linux.

Might have been my inexperience?




Writing against the ffmpeg c API is very very unpleasant. The official guidance you'll get is to read the source code of the command line app and copy what it does. This is not at all the normal use case. I would guess GPT will give you horrible advice here because it generally can't help with obscure APIs.


I've found the opposite to be true; the FFmpeg C API is pretty straightforward, although it tends to change a bit since the developers are deprecation-happy. The ffmpeg(1) CLI, though… that's crazy! I've mostly understood its model by now, but a lot of things are completely nonstandard and unexpected. (Like: ffmpeg a.mp4 b.mp4 means two output files, not an input and an output. Lots of arguments mean different things depending on whether they come before an input and an output argument; and yes, that's before and not after. And so on.)


if it is just encoding/decoding ffmpeg can go entirely from stdin to stdout IIRC, provided formats support it. So for example it won't work for mp4 output as it needs to seek to write some headers (again, IIRC) when saving it.


If you give the empty_moov parameter, the MP4 mux can write to a pipe (or a network stream).


Thanks for the tip!

I was hoping to combine lengthy h264 .mts video files chopped at 4GB by the video camera into one YouTube upload without duplicating on disk first.

Edit: also maybe some simple filters/ML to detect anything interesting to clip and merge into a time lapse.


Yeah forcing YT to accept it directly from ffmpeg would be the hardest part.

I hit that behaviour when I tried to upload encode directly to S3 bucket, turned out only some formats worked


Wouldn't it work if you stream the resulting video as a Youtube Live stream?

You would have to set a stream up in the Youtube creator web page, in order to get a streaming key and with it, a full RTMP URL.

Then in FFmpeg, use "-f rtmp://...your target url" as output. Youtube will stream a live video (which you can hide as "unlisted") and afterwards, the video will remain in the channel as a VOD.


MoviePy is pretty committed to working with files, and I couldn't quickly figure out PyAV pts/dts for the concat even though the files were all exactly the same format.


Have you tried using a fifo file?




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: