I'm kinda a newbie on arduino but I have a question where google don't respond me at all.
I was wondering if it's possible to add some text (like movie subtitles) on the flow from VGA or HDMI. I may imagine that we would detect the resolution (i.e 1080p or 720p) and then add text on a specific pixel range.
Do you know if it's possible or if someone made it? I'm kinda interested on working on such idea.
I think you'd need a video interface or "video controller" chip. Maybe two chips... The one that goes on a video board and the one that goes in a monitor. Then, you might be able to control these chips and add pixels with the Arduino.
It's my understanding that HDMI from a Blu-Ray is encrypted. I'm not sure about other HDMI data. There's no way you can do anything with that (unless you can crack the encryption). i.e. If you are building an HDTV or monitor, you have to get a license and key.
I've done something similar to overlay telemetry onto a stream from a set of bullet cams. You can do it fairly easily with a PC that had a video capture card/dongle, an application to pull frames off the framebuffer and apply your captions and then write them to your output media stream, and a display adapter that supported your preferred video format/resolution. The ffmpeg library makes it quite easy to read/write video streams and manipulate them on the way through.
First of all I would like to thank all the three of you for your answers!
So, if I resume, with an andruino alone I can't make it so I may add more chips or use a computer... Mmmh ok. As I won't use any computer I may work on the "more chips" solution
I wasn't aware that HDMI could be encrypted, I only thought It was like a "vga+sound" cable, no more, thanks for the tips! But for the chips I didn't really understand how to make it. Is there somewhere I could learn which kind of chips (video or other) I would have to use? Or just could you please guide me a little bit more so I could walk ahead on this subject?
jinsa:
I won't use any computer I may work on the "more chips" solution
Why not? It seems to me that it's the only feasible way to solve the problem you described.
Because I want it as a standalone hardware, it has to work without a computer
So you need something with a video capture card, a substantial amount of processor power and RAM to manipulate frames in real time as they come off the card, a display adapter to convert the outgoing frames into your preferred video transmission standard, and presumably some sort of user interface to enable the captions to be defined or configured. Unless you plan to enter these on the fly while the video stream is being processed, that also implies persistent storage. Oh, and you need a fairly fast bus to tie this lot together.
Put that lot together and what you have is essentially what a PC is. Now, you can either spend a shed load of money buying the discrete components and then reinvent about 50 years of consumer electronic design to figure out how to make them all work together, or you can get an embedded PC (or even a standard domestic PC) that has all this ready and working for you. Which do you think is the smarter approach?
I clearly understand what you said and thank you for that. But, I'm not here to solve a problem with the smarter / easier solution. I'm here to understand how arduino is working and if this kind of idea could be handled by arduino.
It's certain that a PC could make it, ok. I just want to make it without a PC and to build one standalone system with the only hardware I need to. Why? Because it looks like fun to me and I'll learn tons of things working on this project. I'm not aiming to solve one issue as fast as possible. I'm here to learn how to build something specifically made for one idea.
Maybe arduino is just not made for this kind of project. Maybe there is something like arduino oriented to video. Or maybe it could be done with a lot of work and then show that arduino could make everything.
I'm a working dreamer and people like me are not smart but reach there dreams no matter what
jinsa:
I'm not here to solve a problem with the smarter / easier solution. I'm here to understand how arduino is working and if this kind of idea could be handled by arduino.
That's fair enough. I believe the answer to your question is that no, it is not feasible to do this with an Arduino.
I don't see why you have to capture the video, all you have to do is to generate your captions synchronised to the incoming video and then over lay them using a mixer or video switch.
It is still quite a project and not one for a beginner. The arduino part is the least of it.
I've never seen one of those before. That looks like the perfect solution to jinsa's problem. They aren't cheap, and seem to be out of stock at the moment, but if you can get your hands on one it should be just what you need.
MMhhh that's really cool! It works with composite video but I think that I could make something with it! Thank you very much for this. Maybe you know if it's applicable to HDMI with some chips?
You could try modifying a NeTV. It overlays information over HDMI video without breaking DMCA (should be checked with legal though). If you want to overlay, you just need to learn to write applications for NeTV: it's an overlay solution for HDMI (even HDCP encrypted).
I made this as an early Arduino project, and it was only with lots of patient help from the big5 on the forum that I got it going. ( thanks guys )
I could compress the text to repeat 10 or more times across the screen without losing definition.
I stored each lines info ( or several lines repeated to make the blocks ) during the horizontal flyback and first part of the trace, into 2 parallel in / serial out registers, which I read out to make the video signals to add to the video.
Obviously it was all syncd to the H and V pulses on the vga lead.
I chuckle when I think of how I got this going ( no arrays, or anything clever ) and look at my code ............
Check the picture of the leopard watching the mouse steal his meat !