Page MenuHomePhabricator

GSoC 2023 proposal: Improve the functionality of VideoCutTool
Closed, DeclinedPublic

Description

Profile Information

Name : Najni Fatima
Email : najnifatima01@gmail.com
Location: Kolkata, India
Typical working hours :
On weekdays : 5:00 PM to 12:00 AM (UTC + 5:30)
On Weekends : 11 AM to 11 PM (UTC + 5:30)

Synopsis

  • VideoCutTool is a free web-based video editing tool whose main focus is to edit videos quickly and easily within Commons with just a few clicks, without needing to download and use external software and then re-upload.
  • The goal of this project is :
    • Improve the tool:
      • Edited video should persist after the refresh tab: Currently after refreshing the tab, the edited video is lost and we have to start from the scratch. To prevent this, the edited video data needs to be stored in the session storage using javascript. If there is saved video data, it will be restored and then loaded into the VideoCutTool and the user can continue working on the video from where they left off.
      • No bitrate drop while editing videos: This will ensure that users can upload/download a high quality video. First identify the cause for bitrate drop and explore the different tools to overcome the problem. Since the codebase already uses FFmpeg for processing and editing the video. It will better if we use its lossless feature to preventing the bitrate drop.
      • Fixing the edited video back to commons: When uploading the video to the commons, sometimes it shows a successful response but the video is not actually uploaded. The main aim is to find the root cause for this error, reproduce it and brainstorm the solution.
    • Add additional functionality: Right now, the VideoCutTool provides: remove audio, Rotate , trim, and crop Video features.
      • Stabilising shaky Video would improve the viewing experience and make the video more polished. We can use FFmpeg to stabilise the shaky videos. Firstly determine the extend of the shakiness and identify the section of the video that need to be stabilised. Use FFmpeg's stabilising filters to create a stable video and then preview the stabilised video to make sure that the stabilised video is satisfactory.
      • Ability to add seperate audio to a video: This feature can add a seperate audio to the video. Users can use this to improve the impact of their video content. It can be useful for creating video with voice-overs or music or sound effects. Use of FFmpeg can be useful to implement this feature. We can merge the video and the audio files together to produce a final video that has the audio embedded in it.
    • Write unit tests:
      • Currently for the front-end , the Home, Authentication, and Notification Components has their units test written using jest and React Testing Library. The rest of of the components do not have any unit test. All the rest of the component's unit test needs to be written using RTL and Jest.
      • No Unit Test is available for back-end. Jest will be used to write the test for the entire backend.
    • Fix existing bugs:
      • This is an important task as it ensures that the application runs smoothly and without errors. Currently I am implementing fixes for some of the identified bugs and will also fix the bugs that will arise later and make the code optimised.
  • Possible Mentor(s) : Gopa Vasanth (@Gopavasanth), Sohom Datta (@Soda)
  • Have you contacted your mentors already? Yes

Deliverables

PeriodTask
May 4 to May 28Community Bonding Period : Setting up the development environment and installing all the dependencies. Discussing with Mentors and coming up with the list of features and functionalities that needs to be implemented to improve the user experience while getting more familiarise with the code base. Have a wireframe designed for the new improved tool and fix the existing bugs. Begin to code once after the finalization so to balance semester exams with the coding period.
May 29 to June 4Work on task to make the edited video to persist after refreshing the tab by using session storage. Save the video data in session storage using Javascript. We can create an object that contains all the necessary video data and store it in session storage and retrive it after page refresh. Clear the session storage data after the video is saved. Submit for review and Feedback.
June 5 to June 11Make necessary changes based on feedback and work on issues that are identified. Optimise the code.
June 12 to June 18Write unit tests for the above task using Jest and React Testing Library(Back-end as well as front-end). Integrate the unit tests with jenkins-bot/CI.
June 19 to June 25Work with FFmpeg's lossless editing feature to avoid bitrate drop while editing video. Submit the code for review and feedback and make necessary changes based on the feedback.
June 26 July 2Write unit tests for the above task using Jest and React Testing Library(Back-end as well as front-end). Integrate the unit tests with jenkins-bot/CI.
July 3 to July 9Identify the root cause that make the error of 'fixing the edited video back to commons'. Brainstorm different solutions that will resolve the problem. Start to implement it on the codebase. Submit for review and Feedback and make the necessary changes from the feedback.
July 10 to July 14 Midterm evaluations
July 15 to July 23Research and understanding of digital image stabilization techniques. Implementing the video stabilization algorithms and integrate it in videoCutTool. Write unit tests for the above task using Jest and React Testing Library(Back-end as well as front-end). Integrate the unit tests with jenkins-bot/CI.
July 31 to August 6Start to work on the feature: Add seperate audio to video. Define the requirements and specifications for the feature, including the user interface, audio formats supported, and synchronization options. Submit for review and Feedback and make the necessary changes from the feedback.
August 7 to August 13Complete unit test for all the remaining front-end components as well as backend. Integrate the unit tests with jenkins-bot/CI.
August 14 to August 20Complete any unfinished tasks and fix bugs and finalize the project. Submit the project for review and feedback from the Mentors.
August 21 to August 27Final week: Incorporate any necessary changes based on feedback. Present the finalized VideoCutTool to the mentors. Submit final work product.
August 28 to September 4Mentors submit final GSoC contributor evaluations (standard coding period)
September 5Initial results of Google Summer of Code 2023 announced

Participation

I plan to communicate progress and ask for help, as well as publish my source code using the following :

  • Gerrit for code reviews, feedback, and managing source code.
  • Zulip when I need assistance or need to discuss about tasks.
  • Phabricator for maintaining/tracking bugs and task.

About Me

  • I am pursuing B. Tech in Computer Science and Engineering (CSE) in Netaji Subhash Engineering College, Kolkata. I am currently in 4th semester (2nd Year) out of the my 8 semester program.
  • I heard about GSoC through social media and then searched it online.
  • I will have my practicals (end May) and semester examination (early June). Other than that I am free to contribute to open Source.
  • We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)? No.
  • What does making this project happen mean to you? Working in this project with help me gain skill and knowledge that would have a positive impact on my work experience. Being a open Source Project it adds to develop my team work ability and how to work with skillful people. WikiMedia projects has been such an integrated part in my daily life ( eg. wikipedia, wikibooks, wikiquote ) that contributing to the Foundation would really bring a great pleasure.

Past Experience

Event Timeline

General feedback, we use Gerrit as our primary code review and management platform, I'm not really sure we would want to shift to using Github for VideoCutTool (I'm open to shifting to Gitlab, but I think it's too early to make the shift imo)

Hi @Najni_Fatima, as the deadline for GSoC is quickly approaching in less than 48 hours (April 4th, 2023, 18:00 UTC), it's crucial that you submit your proposal on Phabricator and Google's program website in the recommended format as soon as possible. To avoid any potential last-minute rushes or server failures, we highly recommend that you submit your proposal early and keep updating it as needed before the deadline. Once you have submitted your proposal, please move it from the "Proposals in Progress" column to the "Proposals Submitted" column on the Phabricator workboard by simply dragging it. If you have any inquiries, please do not hesitate to ask. Good luck with your application!

Hi @Najni_Fatima, as the deadline for GSoC is quickly approaching in less than 48 hours (April 4th, 2023, 18:00 UTC), it's crucial that you submit your proposal on Phabricator and Google's program website in the recommended format as soon as possible. To avoid any potential last-minute rushes or server failures, we highly recommend that you submit your proposal early and keep updating it as needed before the deadline. Once you have submitted your proposal, please move it from the "Proposals in Progress" column to the "Proposals Submitted" column on the Phabricator workboard by simply dragging it. If you have any inquiries, please do not hesitate to ask. Good luck with your application!

@Gopavasanth Could you give a final overview on this so i can work on the necessary changes and submit the proposal.

Hi @Najni_Fatima ,

Stabilising shaky Video would improve the viewing experience and make the video more polished. We can use FFmpeg to stabilise the shaky videos. Firstly determine the extend of the shakiness and identify the section of the video that need to be stabilised. Use FFmpeg's stabilising filters to create a stable video and then preview the stabilised video to make sure that the stabilised video is satisfactory.

Can you provide a more detailed explanation of your proposed solution for stabilizing shaky videos, including the specific ffmpeg commands you plan to use? Additionally, have you personally tested these commands on your local machine?

@Najni_Fatima We are sorry to say that we could not allocate a slot for you this time. Please do not consider the rejection to be an assessment of your proposal. We received over 100 quality applications, and we could only accept 9 applicants. We were not able to give all applicants a slot that would have deserved one, and these were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many applicants who we did not accept in previous rounds have become Wikimedia maintainers, contractors and even GSoC students and mentors this year!

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for GSoC next year, we look forward to your participation!