popcornmix / omxplayer

omxplayer
GNU General Public License v2.0
1.01k stars 334 forks source link

Gapless playback #91

Closed kirgene closed 10 years ago

kirgene commented 10 years ago

Does omxplayer support gapless playback?

popcornmix commented 10 years ago

No. It plays a single file.

kirgene commented 10 years ago

Are there any plans to implement this feature in the nearest future?

popcornmix commented 10 years ago

No immediate plans.

trickkiste commented 10 years ago

Can we promote these plans to be immediate with a bounty?

Markus

On Mon, Nov 4, 2013 at 12:48 PM, popcornmix notifications@github.comwrote:

No immediate plans.

— Reply to this email directly or view it on GitHubhttps://github.com/popcornmix/omxplayer/issues/91#issuecomment-27679730 .

Markus Kienast - CEO mark@sfe.tvmark@trickkiste.at +43 699 180 84401

Trickkiste KG Neubaugasse 12-14/19 1070 Wien Austria / Europe

Firmenbuch: FN 363780 x UID: ATU66601545 WWW: http://trickkiste.at

popcornmix commented 10 years ago

A bounty is unlikely to encourage me. Anyone could implement this. I'd suggest creating two audio_decode components, and connect them both to audio mixer. Then the second one can be started up shortly before the first one finishes. OMX_IndexConfigBrcmAudioTrackChangeControl can be used to trigger a fade. We can see if anyone volunteers to work on this.

kirgene commented 10 years ago

I think it can be a killer-feature so it would be great if someone take this task.

trickkiste commented 10 years ago

Are we talking just audio? What I would need is audio and video.

And I would like to be able to add and remove clips from the playlist through a TCP socket interface. At best using this protocol here: http://www.mltframework.org/bin/view/MLT/MVCP

I definitely would need some way to get status information, so I know, when to add new clips to the playlist.

I would really love to get a quote on how much an implementation of such a featureset would cost.

Regards, Markus

On Tue, Nov 5, 2013 at 12:46 PM, Yevhen notifications@github.com wrote:

I think it can be a killer-feature so it would be great if someone take this task.

— Reply to this email directly or view it on GitHubhttps://github.com/popcornmix/omxplayer/issues/91#issuecomment-27766492 .

Markus Kienast - CEO mark@sfe.tvmark@trickkiste.at +43 699 180 84401

Trickkiste KG Neubaugasse 12-14/19 1070 Wien Austria / Europe

Firmenbuch: FN 363780 x UID: ATU66601545 WWW: http://trickkiste.at

popcornmix commented 10 years ago

Do you need true gapless (i.e. with crossfade between audio of the two tracks). Or do you just need the subsequent video to start almost immediately. Are you in control of the video files? If they are all of the same parameters (resolutions/codecs) then the job is easier.

trickkiste commented 10 years ago

I am in control of the video files, yes. I do not need a crossfade. I need them to be attached after one another. Audio either is faded out in the movie, or continues exactly at the right point in the next video.

Any crossfading would be unacceptable as I need to be able to cut a video in several parts and play them one after the other without the user noticing, that it is even cut in pieces.

Think of HLS or other segmented pseudo streaming. However, we are not actually streaming her. We are using this as a playout to HDMI.

Markus

On Tue, Nov 5, 2013 at 2:25 PM, popcornmix notifications@github.com wrote:

Do you need true gapless (i.e. with crossfade between audio of the two tracks). Or do you just need the subsequent video to start almost immediately. Are you in control of the video files? If they are all of the same parameters (resolutions/codecs) then the job is easier.

— Reply to this email directly or view it on GitHubhttps://github.com/popcornmix/omxplayer/issues/91#issuecomment-27771834 .

Markus Kienast - CEO mark@sfe.tvmark@trickkiste.at +43 699 180 84401

Trickkiste KG Neubaugasse 12-14/19 1070 Wien Austria / Europe

Firmenbuch: FN 363780 x UID: ATU66601545 WWW: http://trickkiste.at

popcornmix commented 10 years ago

HLS is probably the right answer - I believe the ffmpeg version used by omxplayer supports it, and it should just work. You may be able to do this locally on the Pi - perhaps with vlc acting as the HLS server from a local file.

trickkiste commented 10 years ago

no, you don't understand me. it is NOT a stream.

HLS was just an example to explain to you, that I need to be able to stitch video parts together and play them back, as if they were one video, just like hls does.

however, I am dealing with separate full video files. And I can not create a HLS stream from that. For one, I would need to rewrite this video data in order to have a continous clock and I would still not know, when to push in a new file ....

Ergo: not practical.

I need to work with this like with melted throug MVCP protocol.

There should be an internal playlist in omxplayer. Through mvcp I add and remove stuff to that playlist. I keep a watch on what is going on from an external script, watching realtime info in coming through the TCP socket.

STATUS tells me periodically: current clip current position clip total lenght ... and it does that every time a new frame has been decoded or sent to the display.

I check that info and prior to that clip running out, I append a new one.

Playlist info can be fetched via the LIST command. When I want to ask for the status non-periodically, I sent USTA.

...

Having that would greatly improve, what we could do with the raspi. A lot of people could use these new features and the TCP socket interface to do great things with omxplayer/raspi.

And I would really like to know, what this would cost to implement, so I can check if I can manage to sponsor this.

Markus Am 05.11.2013 14:52 schrieb "popcornmix" notifications@github.com:

HLS is probably the right answer - I believe the ffmpeg version used by omxplayer supports it, and it should just work. You may be able to do this locally on the Pi - perhaps with vlc acting as the HLS server from a local file.

— Reply to this email directly or view it on GitHubhttps://github.com/popcornmix/omxplayer/issues/91#issuecomment-27773617 .

popcornmix commented 10 years ago

As I've said, a bounty is not going to encourage me. I will continue to work on things that I see as benefitting the most people, and this request is niche.

There may be other developers in the commity who are interested, either because they could use a similar feature, or because they are being paid.

trickkiste commented 10 years ago

ok, i didn't understand that denial right. sounded like: "a little bounty wont cut it, I need more", to me. I am sorry.

Well niche, I don't really think it is niche. Many people want to use the Raspi as a mediaplayer for all kinds of installations - in the art space, for lobbies, digital signage, ... And the way this has to be done now is not very sexy. Both in terma of scripting and in terms of user experience in front of the screen, as we have flickering - rather huge gaps - in between videos.

And I can easily script a node.js control program, but I can not code any C language to extend omxplayer. ... I probably should start to learn some day soon.

I know a couple of guys myself, who would need such a feature as well.

Think about it.

Markus Am 05.11.2013 15:27 schrieb "popcornmix" notifications@github.com:

As I've said, a bounty is not going to encourage me. I will continue to work on things that I see as benefitting the most people, and this request is niche.

There may be other developers in the commity who are interested, either because they could use a similar feature, or because they are being paid.

— Reply to this email directly or view it on GitHubhttps://github.com/popcornmix/omxplayer/issues/91#issuecomment-27776284 .

perrypoint commented 10 years ago

You should study up a bit on the HLS standard - it may work for your needs. The idea of HLS is that you simply create an .m3u8 playlist with the "chunks" of video and the player selects the correct alternative chunk based on various criteria. You CAN have a playlist with no alternative chunks (thus no adaptive bit rate) and those chunks aren't any different than just mini-mp4 files. This means you could probably create an m3u8 with the files you want to play and it would handle it. The player will automatically re-request the m3u8 (update from URL) when it approaches the end of the list - so you can just continually update the m3u8 file yourself, and pipe the omxplayer log into your process to monitor it. Worth a try.

trickkiste commented 10 years ago

Sounds interesting.

What info would I be able to gather from the log?

On Tue, Nov 5, 2013 at 5:12 PM, Jim Perry notifications@github.com wrote:

You should study up a bit on the HLS standard - it may work for your needs. The idea of HLS is that you simply create an .m3u8 playlist with the "chunks" of video and the player selects the correct alternative chunk based on various criteria. You CAN have a playlist with no alternative chunks (thus no adaptive bit rate) and those chunks aren't any different than just mini-mp4 files. This means you could probably create an m3u8 with the files you want to play and it would handle it. The player will automatically re-request the m3u8 (update from URL) when it approaches the end of the list - so you can just continually update the m3u8 file yourself, and pipe the omxplayer log into your process to monitor it. Worth a try.

— Reply to this email directly or view it on GitHubhttps://github.com/popcornmix/omxplayer/issues/91#issuecomment-27786265 .

Markus Kienast - CEO mark@sfe.tvmark@trickkiste.at +43 699 180 84401

Trickkiste KG Neubaugasse 12-14/19 1070 Wien Austria / Europe

Firmenbuch: FN 363780 x UID: ATU66601545 WWW: http://trickkiste.at

DrakaSAN commented 10 years ago

Gapless playback, at least for format-resolution-framerate identical video, like some branch are trying to do (one video stop, next start immediatelly), would already be a great point for omxplayer, I don t think it is "niche". Look at pasky modification, I m using this old version because playback is working really well, but with all bugs from febuary version.

NSMyself commented 10 years ago

Not niche at all, imho, this would be fantastic. Pasky's modification is interesting, but the encoding needs to be exactly the same in all of the playlist's videos. There's also roughly a half a second break between each video

popcornmix commented 10 years ago

Gotham xbmc now supports gapless. omxplayer is a single file player with no support for playlists, so gapless is beyond the scope of this program.