Tubefeeder / Pipeline

Watch YouTube, LBRY, and PeerTube videos in one place. Moved to https://gitlab.com/schmiddi-on-mobile/pipeline
https://mobile.schmidhuberj.de/pipeline
GNU General Public License v3.0
136 stars 15 forks source link

Play videos in the application using the gtk4 video widget. #21

Open grantshandy opened 3 years ago

grantshandy commented 3 years ago

Tubefeeder is still using gtk3, when it (should) switch over to gtk4 in the near future it would be able to easily play videos within the application using the gtk::Video widget.

Once relm updates to gtk4 sometime in the future I'd love to do some work here and submit a pull request.

Schmiddiii commented 3 years ago

I would love some contributions to the project. Sadly the project in its current form is barely maintainable (did not think the application would be popular in the beginning so I just threw something working together).

I currently do not have time for such a major refactor, but by the end of the month I will probably work on that.

Regarding the gtk::Video: I think it is a good idea, but I see a few problems:

Maybe we should implement the video in the application, for people where a simple media player is enought, but keep mpv as a secondary option for people who want a powerful and configurable media player.

relm4 probably still needs a while so we can think about that and refactor the application.

Ferenc- commented 3 years ago

@Schmiddiii do you have perhaps a list of good first contribution candidates? I think that would encourage contributions.

BTW, there is this new player on the block clapper, which can do hardware accelerated video decoding, from a youtube URI on an PP, it's just so much better playback experience, that I even went on, and swapped out mpv with clapper as a quick fix. (Maybe we could have a temporary setting somewhere, where the user can change the player?)

BTW in my interpretation the documentation of gtk::Video clearly states, that this is not the intended use case of gtk::Video, and for serious tasks, one should use a framework like gstreamer (that's what clapper uses as well). So perhaps embedding gstreamer would be better than gtk::Video?

Schmiddiii commented 3 years ago

I currently do not have many contribution candidates as I would like to refactor the application first. After that contributions should be easier.

A few things that should still be possible to contribute to:

From the Matrix conversation it seemed possible to support (almost) any video player using xdg-mime query default video/* and than spawning it using gtk-launch, falling back to mpv if something fails. This does not seem possible on flatpak, so we will have to make mpv the only video player for now on flatpak, e.g. by including a diff in the flathub repository. It may also be easier to provide the application as a enviromental variable, e.g TUBEFEEDER_PLAYER or similar.

BTW in my interpretation the documentation of gtk::Video clearly states, that this is not the intended use case of gtk::Video, and for serious tasks, one should use a framework like gstreamer (that's what clapper uses as well). So perhaps embedding gstreamer would be better than gtk::Video?

I have already heared that somewhere but I did not look at the documentation this close. Integrating gstreamer would definitly be possible, but as I do not currently have any experience with gstreamer, spawning a external application will be the default for the time. Once I have refactored the application, contributions about this topic are of course welcome.

bertob commented 1 year ago

Ping? I just tried the app for the first time in a while and the UI is quite nice now, but the lack of an in-app player makes for very unintuitive UX.

Schmiddiii commented 1 year ago

No there is still no update on this. While being unintuitive (something that has also been discussed in #95), I still stand by my opinion that I am not able to create a video player that is at least comparable to most video players out there. Furthermore, it would not be as easy as just using gstreamer as I would also need to download (while playing) the videos from the platforms.

The only way I currently see Tubefeeder having an integrated video player would be including Clapper (for which the creator has already announced plans to make it integratable, but I don't know how close he currently is to the goal).