https://github.com/codelucas/vsummarize
[OUT OF DATE] I only made this repo public since I'm out of Github credit, don't use it.
https://github.com/codelucas/vsummarize
Last synced: 9 months ago
JSON representation
[OUT OF DATE] I only made this repo public since I'm out of Github credit, don't use it.
- Host: GitHub
- URL: https://github.com/codelucas/vsummarize
- Owner: codelucas
- License: mit
- Created: 2014-02-11T03:13:15.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2022-06-21T21:14:32.000Z (over 3 years ago)
- Last Synced: 2025-03-27T08:45:07.094Z (10 months ago)
- Language: Python
- Homepage:
- Size: 26 MB
- Stars: 21
- Watchers: 3
- Forks: 5
- Open Issues: 4
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
Pythonic Video summarization
----------------------------
Sick of nlp text summarization? Presenting: **video summarization**!
We take advantage of youtube's comment timestamp video references to generate
a summarized + shorter video from any youtube video.
A glance:
---------
.. code-block:: pycon
>>> import vsummarize
>>> data = vsummarize.summarize('http://youtube.com/watch?v=...', output='shorter.mp4')
After this command, the physical summarized ``.mp4`` is now in the output path
you provided. We return some meta data incase you need it.
Timestamps from youtube comments are included and are important b/c our
algorithm generates summaries via the comments and their timestamps.
.. code-block:: pycon
>>> print data.hot_clips
[('0:12', '0:16'), ..., ('12:31', '13:01')]
>>> print data.timestamps
['0:12', '0:12', '0:14', ..., '12:31']
>>> print data.duration # in seconds
65
A demo:
-------
I tested this software on a 1 hour long Obama speech.
Original video (59 minutes): http://www.youtube.com/watch?v=hed1nP9X7pI
Summarized video (3:30 minutes): http://www.youtube.com/watch?v=aDYDN9lsSHg
A lot of the time, (even in my product www.shorten.tv),
you just want a list of hot video clips instead of physically summarizing
a video into a new ``.mp4`` because of the resource consumption.
To do this, simply ignore the output video file parameter.
.. code-block:: pycon
>>> data = vsummarize.summarize('http://youtube.com/watch?v=...')
>>> print data.hot_clips
[('0:12', '0:16'), ..., ('12:31', '13:01')]
The physical, summarized ``.mp4`` has NOT been generated. We just
retrieved a set of meta data of what would have happened if we did
summarize it.
To actually generate a summary, we use **ffmpeg + moviepy**
along with the above ``.hot_clips`` video sequences to stitch together the video.
Features
--------
- ``.mp4`` video summarization
- youtube comments timestamp extraction
- youtube video hot timestamp extraction
- youtube video hot sub-clip extraction
Get it now
----------
Because I use both OSX and Ubuntu, I have clear instructions on setting
up this project in both platforms. However, I can't guarantee
anything for the other platforms besides give installation advice.
We use ``moviepy``, the python video manipulation library, which in turn depends
on the ``ffmpeg`` library.
Be sure you have `pip `_.
The installation instructions are as follows:
**OSX**:
::
$ brew install ffmpeg
**Ubuntu**:
::
$ curl -O http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.2014-02-28.tar.gz
$ tar -zxvf ffmpeg.static.64bit.2014-02-28.tar.gz
$ sudo mv ffmpeg ffprobe /usr/local/bin/.
$ rm ffmpeg.static.64bit.2014-02-28.tar.gz
And lastly, don't forget to install ``vSummarize`` itself!
::
$ pip install vsummarize
**This app uses the google gdata api**. I have a file named ``settings.py`` which contains
my personal api keys. I've removed that file from this repo for obvious
reasons but i've included a file called ``rename_to_settings.py`` which has two api key
values for you to cleanly fill out. Also, please rename that file to ``settings.py`` after
you are finished!
Warning
-------
Because this is such a resource intensive task & lib (especially if you are
actually using the summarized ``.mp4`` generation feature), you may notice on a few
videos the ``.mp4`` generation fail due to an *OS memory exception*. This means
that you don't have the RAM for ``ffmpeg`` to fork processes to subchunk out your video.
License
-------
Authored and maintained by `Lucas Ou-Yang`_.
Shoutout to `Zulko`_ for helping code and giving advice to
some parts of this project.
We use `moviepy`_ and `ffmpeg`_ for video manipulation.
We also use google's youtube api.
Please feel free to `email & contact me`_ if you run into issues or just would like
to talk about the future of this library!
.. _`Lucas Ou-Yang`: http://codelucas.com
.. _`email & contact me`: mailto:lucasyangpersonal@gmail.com
.. _`moviepy`: https://github.com/Zulko/moviepy
.. _`ffmpeg`: http://www.ffmpeg.org/
.. _`Zulko`: https://github.com/Zulko