|
| 1 | +# FFmpeg-Encoder-Decoder-for-Python |
| 2 | + |
| 3 | +## Update Report |
| 4 | + |
| 5 | +### V3.2.4 @ 4/24/2022 |
| 6 | + |
| 7 | +1. Fix a bug when `tqdm<4.40.0` is installed. Previously, this problem should not trigger if `tqdm>4.40.0` is installed, or `tqdm` is not installed. |
| 8 | + |
| 9 | +2. Fix the same bug (mentioned by item 1) in the `setup.py` script. |
| 10 | + |
| 11 | +3. Add change logs. |
| 12 | + |
| 13 | +### V3.2.3 @ 4/22/2022 |
| 14 | + |
| 15 | +1. Fix a severe bug that causes the dependencies to be downloaded repeatedly. |
| 16 | + |
| 17 | +### V3.2.2 @ 4/22/2022 |
| 18 | + |
| 19 | +1. Fix a typo: `mpegCoder.__verion__` -> `mpegCoder.__version__`. |
| 20 | + |
| 21 | +### V3.2.1 @ 4/22/2022 |
| 22 | + |
| 23 | +1. Fix an issue caused by the missing dependency `libcrypto.so.1.1`. This fixture is only required by the Linux version. |
| 24 | + |
| 25 | +2. Format the PyPI release script. |
| 26 | + |
| 27 | +### V3.2.0 @ 4/8/2022 |
| 28 | + |
| 29 | +1. Upgrade to `FFMpeg 5.0` version. |
| 30 | + |
| 31 | +2. Fix the const assignment bug caused by the codec configuration method. |
| 32 | + |
| 33 | +3. (Only for Linux) Upgrade the dependencies of FFMpeg to the newest versions ([#4](https://github.com/cainmagi/FFmpeg-Encoder-Decoder-for-Python/issues/4)). |
| 34 | + |
| 35 | +4. (About PyPI) Change the behavior of the PYPI `.whl` release. Now the dependencies will not be packed into `.whl` directly. When users `import mpegCoder` for the first time, the dependency will be automatically downloaded. Please ensure that you have the authority to modify the `site-packages` folder when you import `mpegCoder` for the first time. |
| 36 | + |
| 37 | +### V3.1.0 @ 7/23/2021 |
| 38 | + |
| 39 | +1. Support `str()` type for all string arguments. |
| 40 | + |
| 41 | +2. Support `http`, `ftp`, `sftp` streams for `MpegServer`. |
| 42 | + |
| 43 | +3. Support `nthread` option for `MpegDecoder`, `MpegEncoder`, `MpegClient` and `MpegServer`. |
| 44 | + |
| 45 | +4. Fix a bug caused by the constructor `MpegServer()`. |
| 46 | + |
| 47 | +5. Clean up all `gcc` warnings of the source codes. |
| 48 | + |
| 49 | +6. Fix typos in docstrings. |
| 50 | + |
| 51 | +### V3.0.0 update report |
| 52 | + |
| 53 | +1. Fix a severe memory leaking bugs when using `AVPacket`. |
| 54 | + |
| 55 | +2. Fix a bug caused by using `MpegClient.terminate()` when a video is closed by the server. |
| 56 | + |
| 57 | +3. Support the `MpegServer`. This class is used for serving the online video streams. |
| 58 | + |
| 59 | +4. Refactor the implementation of the loggings. |
| 60 | + |
| 61 | +5. Add `getParameter()` and `setParameter(configDict)` APIs to `MpegEncoder` and `MpegServer`. |
| 62 | + |
| 63 | +6. Move `FFMpeg` depedencies and the `OutputStream` class to the `cmpc` space. |
| 64 | + |
| 65 | +7. Fix dependency issues and cpp standard issues. |
| 66 | + |
| 67 | +8. Upgrade to `FFMpeg 4.4` Version. |
| 68 | + |
| 69 | +9. Add a quick script for fetching the `FFMpeg` dependencies. |
| 70 | + |
| 71 | +### V2.05 update report |
| 72 | + |
| 73 | +1. Fix a severe bug that causes the memory leak when using `MpegClient`.This bug also exists in `MpegDecoder`, but it seems that the bug would not cause memory leak in that case. (Although we have also fixed it now.) |
| 74 | + |
| 75 | +2. Upgrade to `FFMpeg 4.0` Version. |
| 76 | + |
| 77 | +### V2.01 update report |
| 78 | + |
| 79 | +1. Fix a bug that occurs when the first received frame may has a PTS larger than zero. |
| 80 | + |
| 81 | +2. Enable the project produce the newest `FFMpeg 3.4.2` version and use `Python 3.6.4`, `numpy 1.14`. |
| 82 | + |
| 83 | +### V2.0 update report |
| 84 | + |
| 85 | +1. Revise the bug of the encoder which may cause the stream duration is shorter than the real duration of the video in some not advanced media players. |
| 86 | + |
| 87 | +2. Improve the structure of the code and remove some unnecessary codes. |
| 88 | + |
| 89 | +3. Provide a complete version of client, which could demux the video stream from a server in any network protocol. |
| 90 | + |
| 91 | +### V1.8 update report |
| 92 | + |
| 93 | +1. Provide options `(widthDst, heightDst)` to let `MpegDecoder` could control the output size manually. To ensure the option is valid, we must use the method `setParameter` before `FFmpegSetup`. Now you could use this options to get a rescaled output directly: |
| 94 | + |
| 95 | + ```python |
| 96 | + d = mpegCoder.MpegDecoder() # initialize |
| 97 | + d.setParameter(widthDst=400, heightDst=300) # noted that these options must be set before 'FFmpegSetup'! |
| 98 | + d.FFmpegSetup(b'i.avi') # the original video size would not influence the output |
| 99 | + print(d) # examine the parameters. You could also get the original video size by 'getParameter' |
| 100 | + d.ExtractFrame(0, 100) # get 100 frames with 400x300 |
| 101 | + ``` |
| 102 | + |
| 103 | + In another example, the set optional parameters could be inherited by encoder, too: |
| 104 | + |
| 105 | + ```python |
| 106 | + d.setParameter(widthDst=400, heightDst=300) # set optional parameters |
| 107 | + ... |
| 108 | + e.setParameter(decoder=d) # the width/height would inherit from widthDst/heightDst rather than original width/height of the decoder. |
| 109 | + ``` |
| 110 | + |
| 111 | + Noted that we do not provide `widthDst`/`heightDst` in `getParameter`, because these 2 options are all set by users. There is no need to get them from the video metadata. |
| 112 | + |
| 113 | +2. Optimize some realization of Decoder so that its efficiency could be improved. |
| 114 | + |
| 115 | +### V1.7-linux update report |
| 116 | + |
| 117 | +Thanks to God, we succeed in this work! |
| 118 | + |
| 119 | +A new version is avaliable for Linux. To implement this tool, you need to install some libraries firstly: |
| 120 | + |
| 121 | +* python3.5 |
| 122 | + |
| 123 | +* numpy 1.13 |
| 124 | + |
| 125 | +If you want, you could install `ffmpeg` on Linux: Here are some instructions |
| 126 | + |
| 127 | +1. Check every pack which ffmpeg needs here: [Dependency of FFmpeg](https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu "Dependency of FFmpeg") |
| 128 | + |
| 129 | +2. Use these steps to install ffmpeg instead of provided commands on the above site. |
| 130 | + |
| 131 | +```Bash |
| 132 | +git clone https://git.ffmpeg.org/ffmpeg.git |
| 133 | +cd ffmpeg |
| 134 | +./configure --prefix=host --enable-gpl --enable-libx264 --enable-libx265 --enable-shared --disable-static --disable-doc |
| 135 | +make |
| 136 | +make install |
| 137 | +``` |
| 138 | + |
| 139 | +### V1.7 update report |
| 140 | + |
| 141 | +1. Realize the encoder totally. |
| 142 | + |
| 143 | +2. Provide a global option `dumpLevel` to control the log shown in the screen. |
| 144 | + |
| 145 | +3. Fix bugs in initialize functions. |
| 146 | + |
| 147 | +### V1.5 update report |
| 148 | + |
| 149 | +1. Provide an incomplete version of encoder, which could encode frames as a video stream that could not be played by player. |
| 150 | + |
| 151 | +### V1.4 update report |
| 152 | + |
| 153 | +1. Fix a severe bug of the decoder, which causes the memory collapsed if decoding a lot of frames. |
| 154 | + |
| 155 | +### V1.2 update report |
| 156 | + |
| 157 | +1. Use numpy array to replace the native pyList, which improves the speed significantly. |
| 158 | + |
| 159 | +### V1.0 update report |
| 160 | + |
| 161 | +1. Provide the decoder which could decode videos in arbitrary formats and arbitrary coding. |
0 commit comments