-
Notifications
You must be signed in to change notification settings - Fork 15
/
NEWS
1001 lines (880 loc) · 54.7 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
FFmpegfs NEWS
Important changes in 2.17 (2024-11-10):
* Bugfix: Issue #164: Fixed incorrectly discarded HLS seek requests.
* Bugfix: Wrong error message fixed when an invalid audio/video codec was
selected. The message should rather say "unsupported codec" instead of
talking about "sample format not supported.".
* Bugfix: Issue #162: If not present, add time stamps to the copied streams.
* Changed quality from 34 to 40 for hardware encoded video streams to create
slightly smaller files.
* Closes#1084487: Moved from the Fuse 2 to the Fuse 3 API.
Important changes in 2.16 (2024-06-10):
* Bugfix: Closes#1072412: Fix build with FFmpeg 7.0. write_packet() now with
const buffer as of Libavformat 61+.
* Fixed deprecation: 2014-05-18 - 68c0518 / fd05602 - lavc 55.63.100 / 55.52.0
- avcodec.h
Add avcodec_free_context(). From now on it should be used for freeing
AVCodecContext.
* Fixed deprecation: 2023-05-15 - 7d1d61cc5f5 - lavc 60 - avcodec.h
Depreate AVCodecContext.ticks_per_frame in favor of
AVCodecContext.framerate (encoding) and
AV_CODEC_PROP_FIELDS (decoding).
Important changes in 2.15 (2024-02-03):
* Bugfix: Issue #151: Fixed autocopy STRICT never triggers for video streams
* Bugfix: Issue #153: The --include_extensions parameter now contains a
description, which was previously missing from the manual and online help.
* Issue #149: 2023-05-04 - xxxxxxxxxx - lavu 58.7.100 - frame.h
Deprecate AVFrame.interlaced_frame, AVFrame.top_field_first, and
AVFrame.key_frame.
Add AV_FRAME_FLAG_INTERLACED, AV_FRAME_FLAG_TOP_FIELD_FIRST, and
AV_FRAME_FLAG_KEY flags as replacement.
* Issue #149: 2023-05-04 - xxxxxxxxxx - lavu 58.7.100 - frame.h
Deprecate AVFrame.interlaced_frame, AVFrame.top_field_first, and
AVFrame.key_frame.
Add AV_FRAME_FLAG_INTERLACED, AV_FRAME_FLAG_TOP_FIELD_FIRST, and
AV_FRAME_FLAG_KEY flags as replacement.
* Issue #149: 2021-09-20 - dd846bc4a91 - lavc 59.8.100 - avcodec.h codec.h
Deprecate AV_CODEC_FLAG_TRUNCATED and AV_CODEC_CAP_TRUNCATED,
as they are redundant with parsers.
* Issue #136: The CMake build files have been removed. Support was never more
than experimental, and CMake lacks a good uninstall option. Will stick to
automake system from now on.
Important changes in 2.14 (2023-06-15):
* Bugfix: Issue #141: Improved memory management by allocating several times the
average size of allocations. This prevents obtaining tiny portions over and over
again. Additionally, after the file is opened, grab the entire expected memory
block rather than doing a tiny allocation initially, followed by a larger
allocation.
* Bugfix: Avoid race conditions that cause the inter-process semaphore creation to
fail for the second process.
* Bugfix: Issue #119: If a seek request is still open after EOF, restart
transcoding.
* Bugfix: Issue #119: To prevent frame/segment creation errors, the frame set and
HLS code has been updated.
* Bugfix: Avoid crashes during shutdown if cache objects have already been closed.
* Bugfix: Issue #119: The AVSEEK_FLAG_FRAME set should be used to seek to frames
when building frame sets. Otherwise, output images may vary if searched for or
continuously decoded.
* Bugfix: The conversion of PTS to frame number and vice versa for frame sets was
incorrect if TBR did not equal frames per second.
* Bugfix: Fixed seek requests that are being ignored with frame sets.
* Bugfix: When transferring from cache to the Fuse buffer, avoid a possible 1 byte
overrun.
* Bugfix: Issue #143: To avoid occasional EPERM failures, missing synchronisation
objects were added.
* Bugfix: Issue #144: To fix the crashes that may have been caused by them, the
variables impacted by a potential threading issue were marked as "volatile."
* Bugfix: Closes#1037653: Fix build with GCC-13
* Bugfix: Update docker build for Debian Bookworm
* Enhancement: Record milliseconds for every log event.
* Enhancement: make check: added a file size check to frame set tests.
* Optimisation: When reopening after invalidating the cache, the size remained
at 0. The original size is now once again reserved in order to prevent
reallocations.
* Optimisation: To avoid reallocations, save enough space in the cache buffer to
hold the entire frame set.
* Optimisation: Checking folders to see if they can be transcoded is completely
pointless. Directories are now immediately skipped.
* To avoid problems with logfile viewers, renamed built-in logfiles to
*_builtin.log (removing the double extension).
Important changes in 2.13 (2023-01-15):
* Added --prebuffer_time parameter. Files will be decoded until the buffer
contains the specified playing time, allowing playback to start smoothly
without lags. Works similar to --prebuffer_size but gives better control
because it does not depend on the bit rate. An example: when set to
25 seconds for HLS transcoding, this will make sure that at least 2 complete
segments will be available once the file is released and visible.
* Feature: Issue #140: Filtering the files that will be encoded has been
added. A comma-separated list of extensions is specified by the
--include_extensions parameter. These file extensions are the only ones that
will be transcoded.
The entries support shell wildcard patterns.
* Feature: The --hide_extensions parameter syntax has been extended. The
entries now support shell wildcard patterns.
* Bugfix: Issue #139: Additional files could be added using the --extensions
parameter. However, this is no longer necessary; in the past, a file's
extension determined whether or not it would be transcoded. Files with
unknown extensions would be ignored. The extension is no longer important
because FFmpegfs now examines all input files and recognises transcodable
files by the format.
The outdated --extensions argument was removed without substitution.
* Bugfix: Fixed crash when implode() function was called with an empty string.
Happened with Windows GCC 11.3.0 only.
Important changes in 2.12 (2022-08-27):
* The code has been run through clang-tidy to identify bug-prone or
inefficient code, and to find parts that could be modernised to C++17.
Several issues could be resolved. Sometimes, many lines of code could be
replaced by a few. Some parts run far more efficiently than before. C++17
is cool. I need to get a t-shirt.
* Bugfix: In get prores bitrate(), a crash that might have happened under
unusual circumstances has been corrected. If the best match resolution
could not be found, array access out-of-bounds could happen.
* Bugfix: Several unlikely, but potential problems that could have happened
when subtitle decoding failed or delayed video/audio packets couldn't be
decoded have been fixed.
* Bugfix: An internal problem could cause the application to crash. Should
never happen, though. Fixed anyway.
* Bugfix: Sometimes, the last segment's estimated size was incredibly small -
about 2 bytes. Each segment should have the same predicted size as it is
calculated simply by dividing the projected size of the entire file by the
number of segments. Following transcoding, the size was accurate.
Important changes in 2.11 (2022-06-16):
* Feature: Issue #86: Smart transcode now detects if a source file is audio only
and uses the correct target format. For example, with --destination=webm+mp3, if
one MP4 input file contains a video stream and another an audio stream only,
the resulting files will be WebM (for the video input) and mp3 for the audio only
file.
* Feature: Issue #137: Add --no_subtitles option to turn subtitles off.
* Bugfix: Smart encode selected the video format for cue sheet tracks, regardless
of the input format. This has been fixed now.
* Bugfix: Fix a crash that occurs when a DVD/Blu-ray is transcoded to audio only.
* Bugfix: If the track performer field in the cuesheet is blank, try album
performer instead.
* Bugfix: Failing to mount Fuse during "make check" went unnoticed as the result
code (which was supposed to be 99) was actually 0. Return the correct result
code, failing the operation as expected.
* Bugfix: The Docker build command contained a "make check" which actually failed
altogether. Step has been removed. "make check" mounts Fuse, but this requires
privileges that do not exist during "docker build".
* Bugfix: On error, mremap () returns MAP_FAILED rather than NULL. Fixed a check
for incorrect error conditions, which could cause the application to crash or
return illogical error messages.
* Bugfix: Issue #119: Fix a problem that caused frame set generation to fail
sometimes. It seems to be related to the nremap() issue.
* Generally revisited documentation, logging, and display texts. Improved grammar,
formatting, and fixed quite a few typos that escaped all proofreading sessions.
* The FFmpeg API INFO and DEBUG level log output has been changed to the
FFmpegfs DEBUG level. What FFmpeg considers "INFO" is far too chatty.
* Frequent memory reallocations when creating HLS segments have been reduced to
speed up processing.
* Optimised logging to save CPU time by not formatting log entries that are not
written anyway at their log level.
* Logging has been revised to shorten file paths and remove mount, input, and
cache paths. Log the additional portion only to reduce log file size and improve
readability.
* Bugfix: To fix the build with GCC 12, add the missing include headers
(closes: #1012925).
Important changes in 2.10 (2022-04-26):
* Feature: Issue #123: New command line option to hide files by extension. Example:
--hide_extensions=jpg,png,cue would stop covers and cue sheets from showing up.
* Feature: Issue #120: Added subtitle support. Subtitle streams can now also be
transcoded to the output files. Separate SRT or VTT files will be incorporated
as subtitle streams.
* Bugfix: Fixed memory leak in encode_audio_frame().
* Bugfix: Issue #122: Last song was missing from cuesheet files.
* Bugfix: Issue #129: Files remained zero size when previously transcoded.
* Bugfix: Issue #130: Fix file sizes can be incorrectly reported by ls but are
correct when data is read.
* Bugfix: Duration was not saved in cache SQLite database.
* Bugfix: Issue #131: Sometimes video parameters for some Blu-ray or DVD chapters
cannot be detected by FFmpeg API. Transcode then failes - fixed by using data
from the Blu-ray directory or DVD IFO instead.
* Lowest supported FFmpeg API version raised to 4.1.8 "al-Khwarizmi".
* Dropped libavresample support, library was removed from FFmpeg API after 3.4.9.
* Deprecated previous channel layout API based on uint64 bitmasks.
* Deprecated swr_alloc_set_opts() and swr_build_matrix().
* Going C++17 now: The packet queue has been recoded in C++17 to support
external subtitles files. As C++17 is required now, why not go all the way:
Starting to replace legacy C++ and somewhat C-like parts with real C++.
* Using std::shared_ptr to ensure proper memory allocation/free.
Important changes in 2.9 (2022-02-16):
* Feature: Issue #97: Added options to chose different codecs. The audio codec
can be selected with --audiocodec, for videos use --videocodec.
* Feature: Issue #109: Allow user defined file extensions for source files. By
default, only standard extensions are accepted, i.e., mp4, ts, avi etc.
Arbitrary file extensions can be defined now, e.g. using
--extensions=xxx,abc,yxz,aaa to also convert files ending with .xxx, .abc and
so on.
* Feature: Issue #121: Added MKV support. New format can be selected with
--desttype=mkv.
* Bugfix: Issue #112: Fixed Docker detection.
* Bugfix: Issue #110: Docker build command failed, added missing libchardet
and allow libdvdread4 or *8 to be used, whatever available.
* Bugfix: Fixed crash when video had no audio.
* Bugfix: Issue #112: Fixed access problems with frame sets and HLS.
* Bugfix: Issue #119: Fixed problem that caused frame set generation to
fail sometimes.
* Bugfix: Fixed JPG frame set generation. Suddenly FF_COMPLIANCE_UNOFFICIAL was
required to have FFmpeg API accept the codec.
* Enhancement: Issue #67: Enhance file size prediction.
* Bugfix: Need to synchronise screen log. Concurrent entries by separate flags
created garbled output.
* Bugfix: Avoid creating an HLS segment number which is out of bounds
(higher than the expected number of segments).
* Enhancement: Removed QMake support, replaced with CMake.
Important changes in 2.8 (2021-11-29):
* Bugfix: Issue #102: Not all SQL queries where case sensitive, causing cache
confusion. Several database entries were created, but only one was updated.
Made all queries case sensitive.
* Bugfix: Issue #91: Fixed HLS problems with cache causing garbled videos and
hick-ups in audio. Make sure that the cache is clean when transcoding starts.
There should be no remains left, all segments must be created or recreated
anyway. Do not append to cache when writing. This caused cache files to
become larger and larger.
* Enhancement: Issue #103: If requested HLS segment is less than X (adjustable)
seconds away, discard seek request. Segment would be available very soon
anyway, and that seek makes a re-transcode necessary. Can be set with
--min_seek_time_diff. Defaults to 30 seconds.
* Feature: Issue #105: Added Free Lossless Audio Codec (FLAC) support.
Activate with *--desttype=FLAC*.
* Feature: Issue #101: Sample format for audio files can be selected via
command line with --audiosamplefmt. Possible values are 0 to use the predefined
setting, 8, 16, 32, 64 for integer format, F16, F32, F64 for floating point.
Not all formats are supported by all destination types, selecting an invalid
format will be reported as error and a list of values printed.
Defaults to 0 (Use same as source or the predefined format of the destination
if source format is not possible).
Important changes in 2.7 (2021-11-08):
* Bugfix: Issue #92: Fixed crash when hardware decoding failed. The problem
is that the FFmpeg API very late reports that it cannot decode the file in
hardware. To find out about that, the source file must be decoded until the
first video frame is encountered.
It would be very time consuming to do this on every file (decode until it
is clear that the file is supported, then actually start transcoding it
from scratch). There is no feasible way to automatically handle the
situation. To get around this a --hwaccel_dec_blocked parameter has been
added.
If hardware decoding fails, check the log for a message similar this:
"[vp9 @ 0x7fe910016080] No support for codec vp9 profile 0."
If VP9 profile 0 is not supported, the parameter would be:
--hwaccel_dec_blocked=VP9:0
This will tell FFmpegfs to decode the file in software. To block VP9
as a whole, the parameter would be --hwaccel_dec_blocked=VP9. To block
both profile 0 and 1, use --hwaccel_dec_blocked=VP9:0:1.
The parameter can be repeated to block even more codecs.
* Bugfix: Issue #96: Fixed potential buffer overrun and crash when reading
corrupted input files.
* Enhancement: Issue #99: Report command line error if --desttype specifies
audio format first, or if the second format is not audio only. Avoid
misinterpretations. For example, --desttype=aiff+mov would create MOV
files out of any input. Correct would be --desttype=mov+aiff which will
create MOV files out of videos and AIFF from audio files, as expected.
Important changes in 2.6 (2021-09-04):
* No new features, just a bugfix. See V2.4 for details.
Important changes in 2.5 (2021-06-18)
* Feature: Issue #63 - Hardware acceleration for encoding/decoding is partly
implemented, VAAPI/MMAL/OMX/V4L2 are currently available only.
- Supported hardware: V4L2/VAAPI (Intel) and V4L2/MMAL/OMX (Raspberry).
- VAAPI: H264, H265/HEVC, MPEG-2 and VP-8 decoding and H264 encoding.
- VAAPI: MJPEG and VC-9 do not work (yet).
- MMAL: H264, MPEG-2, MPEG-4 and VC1 decoding.
- OMX: H264 encoding.
- V4L2: H263, H264, H265, MPEG1/2/4, VC-1, VP8/9 encoding/decoding.
* Feature: Added unit tests for hardware acceleration. Failing tests will
report as SKIPPED and not fail the whole test.
* Note: Which hardware en/decoder actually works depends on what your hardware
supports.
* Call for testers: Have a CUDA capable graphics adapter and interested in
testing? Please write me an E-Mail.
Important changes in 2.4 (2021-09-04)
* Bugfix: Issue #90: Make sure that one keyframe gets inserted at the start of
each HLS segment.
Important changes in 2.3 (2021-06-11)
* Enhancement: Issue #80: Open input video codec only if target supports
video. Saves resources: no need to decode video frames if not used.
* Enhancement: Issue #81: If source format has no audio, and the target supports
no video (e.g.WAV/MP3), the files have shown up zero sized. These will now not
be visible when doing ls. When trying to open them "File not found" will be
returned.
* Added "configure --enable-debug" to create binaries with debug symbols.
Defaults to the optimised version.
* Feature: Issue #73: Cue sheet tracks now play "gapless" if played in order.
Whenever a track is started, the next track will automatically be transcoded
as well.
* Feature: Issue #66 and issue #82: Added cue sheet support. If a file with cue
extension is found with the same name as a media file or if a cue sheet is
embedded into it (a tag named CUESHEET), tracks defined in it will show up in a
virtual directory.
* Feature: Issue #83: Character conversion for cue sheet files. Automatically
detects the character encoding of the cue sheet. and converts as necessary.
* Feature: Issue #78: Duplicate ARTIST to ALBUMARTIST tag if empty
* Feature: Issue #79: Added Docker support.
* Fixed deprecation: 2021-03-17 - f7db77bd87 - lavc 58.133.100 - codec.h
Deprecated av_init_packet()
* Fixed API compatitbility: Many pointers made const as of 2021-04-27. Although
reasonable, this breaks API compatibility with versions older than 59.0.100,
* Bugfix: find_original "fallback" method did not correctly handle the new filename
format (extension added, not the original one replaced).
* Bugfix: Issue #87: Segments are now properly separated, making sure that e.g.
segment 3 only goes from 30 seconds up to 40 (including 30, but not 40 seconds).
* Bugfix: Issue #88: HLS audio and video now stay in sync after longer playback
(more than 30 minutes) or after seek operations.
Important changes in 2.2 (2021-02-06)
This is a maintenance release, bugfixes only.
* Bugfix: Issue #75: Fix crash when opening mp3 output with Dolphin.
* Bugfix: Issue #70: Possible crash in Buffer::init: Should not assert if duration is 0
(and thus segment count 0). Report internal error and go on.
* Bugfix: Issue #70: Do not set duration to 0 from cache but leave unchanged. Caused HLS
transcoding to fail if more than one transcoder was concurrently started.
* Bugfix: Possible crash in transcoder_thread: Decoder object could have been used
after being freed.
* Bugfix: Stupid blooper. WAV and AIFF size was always calculated for a mono file,
thus for stereo files resulting in only half the correct size.
* Bugfix: Corrected documentation, "make checks" should read "make check", funny this
went unnoticed for over 3 years...
* Bugfix: Issue #74: Album arts were only copied from MP3/4 sources. Removed restriction,
if the input file contains an album art it will be copied to the target (if
supported, of course, e.g., to mp3 or mp4. Ogg is not yet supported because
embedding album arts in Ogg can only be done by an unofficial workaround).
* Bugfix: Issue #71:: Virtual directories were missing dot and dot-dot nodes.
Important changes in 2.1 (2020-12-14)
* Feature: Add BLURAY_VIDEO_FORMAT_2160P (UHD)
* Feature: Implemented in 1.7, removed experimental state for --win_smb_fix now.
Windows seems to access the files on Samba drives starting at the last 64K segment
simply when the file is opened. Setting --win_smb_fix=1 will ignore these attempts
(not decode the file up to this point).
* Feature: --win_smb_fix now defaults to 1 (fix on by default). Has no effect
if the drive is accessed directly or via Samba from Linux.
* Bugfix: Fixed grammatical error in text: It's "access to", not "access at".
* Bugfix: Did not transcode some source files with invalid DTS.
* Bugfix: Cosmetical - No need to log date/time twice in syslog.
* Bugfix: Cosmetical - Fix man page/online help for --recodesame parameter.
* Bugfix: Report correct segment duration
* Bugfix: Avoid crash if opening next HLS segment failed. Should not ignore this, but report
it instead and stop transcoding.
* Cosmetical: Log cache close action at trace level
* Cosmetical: Shorter log entry when opening cache files
Important changes in 2.0 (2020-09-13)
Hurray! This is release 2.0!
* Feature: No new features, new release 2.0 after feature freeze.
* Bugfix: Issue #64 - Fixed playback stopping prematurely on some files.
Important changes in 1.99 (2020-07-18)
* Libav support has been dropped. There is no activity on https://git.libav.org/?p=libav.git
since 21.08.2019, and some features that FFmpegfs required were already lagging behind
FFmpeg API. Supporting Libav already bound a lot of my time that I could better spend
on new features or fixes for FFmpegfs.
* Feature: Add PNG/BMP/JPG frame sets to 'make check'. Checks number of files and cp
operations in arbitrary order with wildcards and absolute file names.
* Feature: Add HLS segments to 'make check'. Checks number of segments, the segment sizes
and correct file names.
* Feature: Moved FFmpeg capabilities (formats) from --version/-V command to new -caps/-c
parameter to keep version information brief.
* Bugfix: Issue #61 - fix timeout problem when accessing JPG in arbitrary order.
* Bugfix: Issue #58 - Build list when ls/cp path/to/flles/00001.png is done. Access failed
because the file was not found.
* Bugfix: Issue #59 - *.m3u8 files were tried to be transcoded while they should simply be
passed through. Added to ignore and pass through list.
* Bugfix: Issue #57 - Correctly expand tilde when ~/ is used, for example in
"ffmpegfs --logfile=~/ffmpegfs.log".
* Bugfix: Issue #60 - Reopen cache file after it has been closed so that image frames can
be accessed after the file has been fully decoded.
Important changes in 1.98 (2020-04-15)
* Cool, there's an online revivew on Linux Uprising, you can read it here:
https://www.linuxuprising.com/2020/03/ffmpegfs-is-fuse-based-filesystem-for.html
* Support: FFmpegfs has recently been added to Debian sid and Debian Bullseye. It is also
available in Ubuntu 20.04 and Linux distributions based on it.
* Feature: HLS: Introducing direct segment access. If e.g. segment no. 333 is opened,
ffmpegfs will seek to this position and start transcoding the segment
immediately. *Please note that this feature is still experimental and may
produce unexpected results.*
* Support: No longer creating a user/group ffmpegfs while "make install". The user is not really
required, just bloats the system's user database.
* Support: Reduced quality of the test video to make the distribution archive slimmer. A full
HD (1920x1280) video at 60 frames per second was a bit of an overkill anyway.
720x400 at 30 fps should be enough for everybody.
* Feature: Cache dir changed to ${XDG_CACHE_HOME:-~/.cache}/ffmpegfs (as specified in the XDG
Base Directory Specification). Falls back to ${HOME:-~/.cache}/ffmpegfs if not
defined. Only if executed with root privileges, "/var/cache/ffmpegfs" will be used
(e.g. if invoked via /etc/fstab entry).
* Feature: Changed PTS generation: For DVD/Blu-ray chapters they will not start at 0 for each
chapter, but at the real time the chapter begins in its title. Fixes #51.
* Feature: Issue #52 - Added --audiochannels option to select a different number of channels.
Defaults to 2 (stereo), may be set to 1 to create mono files. Set to 0 to keep the
original number of channels.
* Bugfix: Issue #46 - Ensure the selected bitrate is used. Files could become much larger than
expected. There's a strange FFmpeg API behaviour behind that, added the solution used
in ffmpeg.c to fix.
* Bugfix: Issue #48 - Properly handle incorrectly authored DVDs with missing SRI_END_OF_CELL
marks after cells.
* Bugfix: Issue #49 - Avoid creating HLS last segments shorter than 200 ms, avoid stalls when
the total playtime is a multiple of the segment size, e.g. 10 seconds.
* Bugfix: Issue #54 - Made sure no duplicate filenames get created. This changes the output name
scheme, e.g. if two files xyz.ts and xyz.wmv exist and the destination type is mp4,
two output files named xyz.ts.mp4 and xyz.wmv.mp4 appear. An additional file xyz.mp4
will show up with its real name.
To continue using the old names, add --oldnamescheme=1 to the command line.
* Bugfix: Online help and docs state --autocopy=OFF would turn the function off, but this
actually was NONE. Changed to match documentation.
* Known bug: Libav support for videos seems broken. Not sure if this will be fixed or Libav be
simply dropped.
Important changes in 1.97 (2020-01-21)
* Support:
* Feature: Added support for HLS (HTTP Live Streaming). Select desttype=hls to enable.
* Feature: Added checks for mov/mp4/prores/webm video format.
* Bugfix: Moved video deinterlace filtering before rescaling. Deinterlace does not work properly on
rescaled videos, what a suprise. Especially caused strange results on Blu-ray sources,
created blurred frames if downscaled from HD to SD (or lower) before deinterlacing.
* Bugfix: Avoid EINVAL errors in case the cache file ends up at zero size. Minor problem, but ugly.
* Bugfix: Cache structure was not properly initialised, causing invalid values in the database.
* Bugfix: Properly handle case when start_time is AV_NOPTS_VALUE (frame sets only)
* Bugfix: Corrected mistake in online help: clear-cache should be clear_cache instead.
* Bugfix: Issue #43 - fix garbled first 12 frames. Enhanced overall picture quality.
* Workaround: Issue #45 - fix garbled Blu-ray/DVD playback. Just a workaround, the problem is
somewhere else.
* Due to copyright uncertanties and because the public domain license used is controversal, all
demo files in test/srcdir have been replaced with own works and put under the CC0 1.0 Universal
license.
* Known bug: Libav support for videos seems broken. Not sure if this will be fixed or Libav be
simply dropped.
Important changes in 1.96 (2019-11-18)
This is a pre-release towards the new version 2.0 coming up soon.
* Feature: Added version check and auto update to cache database. Older database versions will
now automatically upgraded to the latest structure.
* Feature: Transcode videos to frame works transparently for any input now (DVD, Blu-ray and VideoCD).
* Bugfix: Fix for "prores can't allocate memory #41".
* Bugfix: Do not shrink cache when reopening it.
* Known bug:
Important changes in 1.95 (2019-05-23)
This is a pre-release towards the new version 2.0 coming up soon.
* Feature: Added transcode videos to frame images option. Video files can be mounted to folders
with jpg/png/bmp files for each video frame.
* Feature: Reencode to same file format as source file. Normally files that already have the selected
output format will not be recoded. Added --recodesame option to allow transcoding to the
same format.
Important changes in 1.11 (2020-04-15)
* Cool, there's an online revivew on Linux Uprising, you can read it here:
https://www.linuxuprising.com/2020/03/ffmpegfs-is-fuse-based-filesystem-for.html
* Support: FFmpegfs has recently been added to Debian sid and Debian Bullseye. It is also
available in Ubuntu 20.04 and Linux distributions based on it.
* Support: No longer creating a user/group ffmpegfs while "make install". The user is not really
required, just bloats the system's user database.
* Support: Reduced quality of the test video to make the distribution archive slimmer. A full
HD (1920x1280) video at 60 frames per second was a bit of an overkill anyway.
720x400 at 30 fps should be enough for everybody.
* Feature: Cache dir changed to ${XDG_CACHE_HOME:-~/.cache}/ffmpegfs (as specified in the XDG
Base Directory Specification). Falls back to ${HOME:-~/.cache}/ffmpegfs if not
defined. Only if executed with root privileges, "/var/cache/ffmpegfs" will be used
(e.g. if invoked via /etc/fstab entry).
* Feature: Changed PTS generation: For DVD/Blu-ray chapters they will not start at 0 for each
chapter, but at the real time the chapter begins in its title.
* Feature: Issue #52 - Added --audiochannels option to select a different number of channels.
Defaults to 2 (stereo), may be set to 1 to create mono files. Set to 0 to keep the
original number of channels.
* Bugfix: Issue #46 - Ensure the selected bitrate is used. Files could become much larger than
expected. There's a strange FFmpeg API behaviour behind that, added the solution used
in ffmpeg.c to fix.
* Bugfix: Issue #48 - Properly handle incorrectly authored DVDs with missing SRI_END_OF_CELL
marks after cells.
* Bugfix: Issue #54 - Made sure no duplicate filenames get created. This changes the output name
scheme, e.g. if two files xyz.ts and xyz.wmv exist and the destination type is mp4,
two output files named xyz.ts.mp4 and xyz.wmv.mp4 appear. An additional file xyz.mp4
will show up with its real name.
To continue using the old names, add --oldnamescheme=1 to the command line.
* Bugfix: Online help and docs state --autocopy=OFF would turn the function off, but this
actually was NONE. Changed to match documentation.
* Libav support has been dropped. There is not activity on https://git.libav.org/?p=libav.git
since 21.08.2019, and some features that FFmpegfs required were already lagging behind FFmpeg
API. Supporting Libav already bound a lot of my time that I could better spend on new features
or fixes for FFmpegfs.
Important changes in 1.10 (2020-01-21)
* Feature: Added checks for mov/mp4/prores/webm video format.
* Bugfix: Moved video deinterlace filtering before rescaling. Deinterlace does not work properly on
rescaled videos, what a suprise. Especially caused strange results on Blu-ray sources,
created blurred frames if downscaled from HD to SD (or lower) before deinterlacing.
* Bugfix: Avoid EINVAL errors in case the cache file ends up at zero size. Minor problem, but ugly.
* Bugfix: Cache structure was not properly initialised, causing invalid values in the database.
* Bugfix: Skip corrupted and discarded video frames to avoid blurps.
* Bugfix: Corrected mistake in online help: clear-cache should be clear_cache instead.
* Bugfix: Issue #43 - fix garbled first 12 frames. Enhanced overall picture quality.
* Workaround: Issue #45 - fix garbled Blu-ray/DVD playback. Just a workaround, the problem is
somewhere else.
* Due to copyright uncertanties and because the public domain license used is controversal, all
demo files in test/srcdir have been replaced with own works and put under the CC0 1.0 Universal
license.
* Known bug: Libav support for videos seems broken. Not sure if this will be fixed or Libav be
simply dropped.
Important changes in 1.9 (2019-11-18)
* Support: Code has now been tested to work on ARMv7 (32 bit).
* Feature: Documented the whole project with Doxygen.
* Feature: Implemented a thread pool. File open (and thread starts) are now much faster than before.
The thread pool also ensures that not more threads than configured are started. Defaults
to 16x the number of processor cores available.
* Feature: Added Apple Lossles Audio Compression (ALAC) support.
* Feature: Added optional graphviz to configure, only required for Doxygen.
* Feature: Updated INSTALL.md with missing prerequisites. Rearranged paragraphs, mentioning building
from git first was confusing.
* Feature: Moved cache directory from rather unusual /tmp/ffmpegfs location to /var/cache/ffmpegfs.
* Bugfix: Fixed several warnings if compiled for 32 bit.
* Bugfix: Removed unused xmlint prerequisite from configure.
* Bugfix: Video and audio was out of sync on android devices.
* Bugfix: Fix crash when Blu-ray video without audio was opened.
* Bugfix: Cache files were left at the predicted size if it was larger than the result size.
Size is now correctly capped to the correct result size.
* Fixed deprecation in fpcompare: 2018-04-01 - f1805d160d - lavfi 7.14.100 - avfilter.h
Deprecate use of avfilter_register(), avfilter_register_all(),
avfilter_next(). Added av_filter_iterate().
Important changes in 1.8 (2019-05-23)
This is a bugfix/maintenance release with only a few minor features added.
* Feature: Added Doxygen documentation.
* Feature: Report all errors together with error number.
* Feature: More detailed error handling.
* Feature: Added "make wipe-all" to really clean up all generated files.
* Bugfix: Do not report "Not a directory" error for virtual directories. Not an error, it's a feature.
* Bugfix: Fixed make dist: checks did not work.
* Bugfix: Fixed make clean: some Doxgen files were not removed.
* Bugfix: Properly catch "no memory" errors.
* Bugfix: Deinterlacing filter only worked for YUV videos.
* Bugfix: Removed the check for invalid chapters - did not work as expected.
* Bugfix: Wrong bitrate for PAL (was 30 fps instead of 25 fps) and assume PAL if bits are invalid.
* Bugfix: Fixed potential crash in DVD handling.
* Bugfix: Do not add libavresample if libswresample is present. Saves build time.
* Bugfix: Removed dependency on unused libdvdnav. Saves buildtime.
* Bugfix: Fixed two (probably rare but possible) crashes.
* Bugfix: Image now not converted when the destination type is a video format.
Important changes in 1.7 (2019-02-26)
* Feature: Windows seems to access the files on Samba drives starting at the last 64K segment
simply when the file is opened. Setting --win_smb_fix=1 will ignore these attempts (not decode the
file up to this point).
* Feature: Added "Auto Stream Copy" option. This will copy audio or video streams to the output file rather than
recoding. Reduces computing time and CPU load.
* Feature: Sped up DVD/Blu-ray/VCD access drastically. FUSE calls getattr like crazy, using cached data now.
* Feature: Extended stream copy: now any codec can be copied if supported by target container using --autocopy=MATCH option.
* Feature: Added full virtual titles to DVD, Blu-ray and Video CD. Creating one virtual file per chapter is very nice for
music disks as it allows access to every single title very easily. For movies it is better to have it in one
piece.
* Feature: Enhanced win_smb_fix=1 functionality to hopefully catch all Windows incidents.
* Feature: Added min_dvd_chapter_duration parameter. DVD chapters shorter than this will be ignored. Defaults to 1 second.
* Bugfix: Decimal seconds in duration was wrong. Fixed.
* Bugfix: This was a bad one: The application crashed with a protection fault if there was not enough disk space
on the cache drive. This is now properly reported and transcoding aborted. Thanks for Muf for reporting
the issue.
* Bugfix: Fixed crash when DVD nav packet was missing
* Bugfix: Fixed clang compatibility. Project did not build with clang, this has gone unnoticed for a while...
* Bugfix: Fixed terrible miscalculation of DVD play time. No one told me the values are BCD, not decimal...
* Bugfix: Fixed conversion of DVD chapters consisting of more than one cell.
* Bugfix: Fixed pts/dts generation
* Known bug: Some Blurays are not recoded properly. The resulting files are much larger than expected, as a matter of
fact larger than the source (birates > 27 MBit). Happens only for some sources.
Important changes in 1.6 (2019-01-11)
* Feature: Made all parameters like --profile case insensitive.
* Feature: Added Apple MOV, Apple Prores and Apple AIFF formats.
* Feature: Enable "Smart Transcoding": To enable, specify --desttype=AUDIO+VIDEO, e.g.
--desttype=MOV+AIFF will automatically convert video files to MOV and audio
to AIFF.
* Feature: New parameter --level allows selecting a profile for Prores: proxy, lt, standard
or hq.
* Feature: Added MOV target format
* Feature: Added AIFF target format
* Feature: Smart conversion option ("Smart Transcode")
* Feature: Added level option for Prores
* Feature: Added Apple Prores support
* Feature: Do not "upgrade" mono audio to stereo. Create mono audio stream.
* Feature: Speed up DVD conversion significantly by using IFO data instead of probing each chapter.
* Feature: Added DVD angle support.Chapters with angles will show as separate files.
* Feature: Speed up Blu-ray conversion significantly by using the directory instead of probing each chapter.
* Feature: Speed up VCD conversion.
* Feature: EXPERIMENTAL: Windows seems to access the files on Samba drives starting at the last 64K segment
simply when the file is opened. Setting win_smb_fix=1 will ignore these attempts (not decode the file
up to this point).
* Bugfix: Suspend/decoding timeouts did not work. Transcoding never timed out...
* Bugfix: Fixed memory leak when using the deinterlace option.
* Bugfix: Deinterlace did not always work.
* Bugfix: Fixed memory leaks.
* Bugfix: Report correct error if directory mounted twice.
* Bugfix: Silence chatty log outputs.
* Bugfix: Fixed GPF when accessed.
* Bugfix: Fixed GPF when channel layout changed during playback.
* Bugfix: If transcode failed, the error was sometimes not reported to the client process, causing it to hang.
* Bugfix: Sometimes tried to create WebM files with zero width (failed to transcode).
* Bugfix: Avoid mpeg-4 profile/pixel format mismatches.
* Bugfix: Fixed creating zero sized files from DVDs when chapter playtime < 1 s.
* Bugfix: Update timeout when client just holds the file open without reading.
* Bugfix: Properly honour client exit (end wait for data).
* Bugfix: Issue #23: do not block open with a read waiting for data.
* Bugfix: WebM files had no duration. Added duration to Matroska container.
* Bugfix: Fixed EOF detection for Blu-ray chapters.
* Bugfix: Force mpeg format for DVDs to avoid misdetections.
* Bugfix: Force mpegts format for Blurays to avoid misdetections.
* Bugfix: Take DVD chapter duration from IFO as probed playtime from VOB segment is sometimes wrong.
* Bugfix: Take Blu-ray chapter duration from directory as probed playtime from MTS segment is sometimes wrong.
* Fixed deprecation:
Important changes in 1.5 (2018-06-08)
* Feature: Added WebM output format using VP9 video and Opus audio codec.
* Feature: Input format check is now done by FFmpeg, that means if the input file is
supported by FFmpeg, it will be transcoded. For performance, files are not
opened and scanned, the file's extension is checked only (e.g. mp3, wav, rm etc.).
* Feature: Replaced mutagen-inspect with internal code which also works with WAV and WebM.
test_tags works for all formats now. python-mutagen is no longer required.
* Feature: Check if sample rate or sample format is supported by audio codec and change if
necessary. Avoid transcode fails e.g. if 44.1KHz sampling rate is requested but
not supported (e.g. OPUS only supports 8K, 16K, 24K or 48K). Select nearest
supported sample rate or sample format.
Important changes in 1.4 (2018-05-30)
* The timeout for suspend and abort have been changed. Decoding will now be suspended
after 15 seconds (formerly 2 minutes). If no activity is detected after further 15 seconds
(formerly 3 minutes) decoding will be aborted. This will only happen if the file is actively
closed, so if playback is simply paused decoding will continue. The new limits proofed to
be fine and reduce system load significantly.
* Feature: Enhanced logging, added a colour profile to screen logs and raised or lowered
some messages log levels appropriately. Also added a few informative log
messages.
* Feature: Blu-ray support: Detect Blu-ray files in directories and list separate chapters
and titles as separate files.
* Feature: DVD support: Detect IFO files and list separate DVD chapters or programs
as separate files.
* Feature: S/VCD support: Detect Video CDs in directories and list chapters
as separate files.
* Feature: Changed the fuse operations code module to c++ (minimise danger of
memory leaks or buffer overruns)
* Feature: Added --enablescript option that will add virtual index.php to every
directory. It reads scripts/videotag.php from the ffmpegs binary directory.
This can be very handy to test video playback. Of course, feel free to
replace videotag.php with your own script.
* Feature: By default ignore decoding errors so that transcoding does not stop just
because a few frames are garbled. Can be disabled with the "decoding_errors"
option.
* Bugfix: Sometimes the pixel format could not be detected, raising an assert/application
crash with newer FFmpeg API versions. Fixed by setting it to the output format.
This will mostly ever create defect encoder results, but at least the FFmpegfs
process will not be shut down writing a core file.
* Bugfix: Set mp4 profile to high/3.1 to enable playback under enable playback under
Win 7.
* Bugfix: Fixed formatting of help text.
* Workaround: Fixed Libav support: Deinterlace code did not compile. Should be possible
to get it working, but for now it is simply disabled.
But honestly I don't want to get it working. I am thinking of dropping
Libav completely.
* Fixed deprecation: 2018-xx-xx - xxxxxxx - lavf 58.9.100 - avformat.h
Deprecate use of av_iformat_next(), av_oformat_next().
Important changes in 1.3 (2018-05-04)
Changes in this release:
* Feature: Added option to deinterlace video if required (will improve picture
quality when viewed in browsers via HTML5.
* Feature: Set stream duration from source file as hint for encoder.
* Feature: Enhanced logging output for better readability.
* Feature: Added pre-buffer option. Files will be decoded up to this limit first
before made accessible. This ensures smooth startup.
* Feature: Enhanced configure that checks whether libavresample or libswresample
is present.
* Feature: Improved recoding detection. Files are recoded if the source file size
or timestamp changes, or different encoding options are selected
(e.g. a different bitrate, vidoe size etc.).
* Feature: Allow profiles for target browsers or players. Currently selectable:
NONE no profile
FF optimise for Firefox
EDGE optimise for MS Edge and Internet Explorer > 11
IE optimise for MS Edge and Internet Explorer <= 11
CHROME Google Chrome
SAFARI Apple Safari
OPERA Opera
MAXTHON Maxthon
Defaults to NONE
* Feature: enhanced error output for SQLite (if supported by library version)
* Feature: copy album arts from source if supported by target format (MP3/4).
Use --noalbumarts parameter to disable, e.g., for streaming files.
* Bugfix: Only four lines of code: Avoid locking other clients when trying to get
the size of a file currently being decoded. Also speeds up directory
access quite significantly.
* Bugfix: Fixed lost frames at end of files (files where cut short)
* Bugfix: Fixed crash when video files were transcoded to audio only (e.g. mp3)
* Bugfix: Make WAV size prediction more accurate
* Bugfix: Recode existing cache files if not found in database (handle database inconsistencies).
* Bugfix: Fixed sharing problems with sqlite database when accessed by multiple instances.
* Bugfix: Files were truncated (mostly mp3) when cp'ed directly while transcoding. Now files
will have the final size as expected.
* Bugfix: Create valid WAV header for files transcoded on-the-fly.
* Bugfix: Ensure a file gets recoded when the last attempt failed.
* Bugfix: Ensure that transcoding errors get passed on to calling process, e.g. cp or rsync.
Otherwise copy operations might not notice that the file is invalid.
FFMpeg has evolved, many API parts have been deprecated and will be dropped
soon. This release adopts these changes by conditionally using the new
APIs from the FFMpeg version on that they are available.
* Fixed deprecation: 2017-xx-xx - xxxxxxx - lavr 4.0.0 - avresample.h
Deprecate the entire library. Merged years ago to provide compatibility
with Libav, it remained unmaintained by the FFmpeg project and duplicated
functionality provided by libswresample.
swresample is the preferred library in FFMpeg, so it will be used if compiled
with FFMpeg by default, even before being deprecated. With libav, which
makes libavresample available only, the latter will be used.
* Fixed deprecation: 2016-04-21 - 7fc329e - lavc 57.37.100 - avcodec.h
Added a new audio/video encoding and decoding API with decoupled input
and output -- avcodec_send_packet(), avcodec_receive_frame(),
avcodec_send_frame() and avcodec_receive_packet().
* Fixed deprecation: 2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
Deprecate AVFormatContext filename field which had limited length, use the
new dynamically allocated url field instead.
* Fixed deprecation: 2018-xx-xx - xxxxxxx - lavf 58.9.100 - avformat.h
Deprecate use of av_register_input_format(), av_register_output_format(),
av_register_all(), av_iformat_next(), av_oformat_next().
NOTE: av_iformat_next/av_oformat_next() lack a replacement (currently
still used in tools/probetest.c "static void probe" in 58.10.100)
* Fixed deprecation: 2018-xx-xx - xxxxxxx - lavc 58.10.100 - avcodec.h
Deprecate use of avcodec_register(), avcodec_register_all(),
av_codec_next(), av_register_codec_parser(), and av_parser_next().
Added av_codec_iterate() and av_parser_iterate().
* Fixed deprecation: 2016-04-11 - 6f69f7a / 9200514 - lavf 57.33.100 / 57.5.0 - avformat.h
Added AVStream.codecpar, deprecate AVStream.codec.
* Fixed deprecation: 2018-04-01 - f1805d160d - lavfi 7.14.100 - avfilter.h
Deprecate use of avfilter_register(), avfilter_register_all(),
avfilter_next(). Added av_filter_iterate().
Important changes in 1.2 (2018-04-03)
Changes in this release:
* Fixed issue #4: File size was wrong when file was first accessed.
* Fixed issue #5: Fixed crashes when transcoding.
* Feature: None. This a bug fix release.
Important changes in 1.1 (2018-03-19)
Changes in this release:
* Fixed: make clean for checks did not delete all logs
* Feature request #1: WAV output support (by github user Avuton)
* Feature: OGG output support
* Fixed: Did not write correct ID3v2 headers (thanks for the fix to gitbug user sdrik)
* Feature: Include configure command line arguments and host OS in "-V" option.
* Feature: Added --videoheight=HEIGHT and --videowidth=WIDTH parameters to allow
video size change. If source video is larger it will be scaled down.
If already smaller the size will be left as is. You should only set
one parameter, if both are set the aspect ratio may be changed and the
result look strange.
* Feature: Added clear_cache option to clear the whole cache everytime
the application is started.
* Note: Dropped ISMV option as it did not work as expected, especially creating an
mp4 on-the-fly did not work. The streamlined mp4 format already does the work.
Important changes in 1.00 (2018-01-19)
Changes in this release:
* Cheers! Made it! This is release version 1.0, the first production release.
* Fixed compile for FFmpeg versions prior to 3.0.
Important changes in 0.95 (2017-12-29)
NOTE: The cache format has changed and is not compatible with prior versions.
Please do a "rm -Rf /tmp/ffmpegfs" before starting this version to
create a new cache.
TODO: see new TODO file from now on.
Changes in this release:
* Heureka! This is the first beta release towards V1.0. From now on only bug
fixes will go into the code.
* Implemented automatic cache maintenance (ensure cache size, disk space, delete
outdated entries).
* Fixed checks ("make check" works now. Known problem: mp4 sizes seem to differ
when using different FFmpeg releases. Will be addressed soon.).
* Fixed mp3 format (The mp3s were completely braindead.).
* Fixed suspend timeout coming although file currently accessed.
* Fixed crash during shutdown because sqlite was used too late.
* Fixed handling of multiple destination types in same cache.
* Properly pass on errno/save and store in cache database.
* Additional database fields for target parameters (bitrate, error code etc.).
Will be used in later versions to detect if a file needs re-transcoding.
* Files will be recoded if source file changes (size or timestamp).
* Report compiler version when run with -v parameter.
* Set gcc optimisation higer (now -o3).
Important changes in 0.94 (2017-12-19)
Changes in this release:
* Decided to rename mp3fs to FFmpegfs because the project has grown far beyond
a simple clone of mp3fs and the changes it will surely never be pushed back
to the parent project. A big random applause to the makers of mp3fs for giving
me a good head start!
* Cache management: Keep cache size within limit, ensure min. disk space, prune
oldest entries
* Fixed many crashes
* Fixed memory leaks
* Fixed mp4 check suite
* Added mp3 check suite
* Added --disable_cache parameter
* Added --prune_cache parameter. Starts cache pruning manually.
* TODO: Add intelligent stream copy, e.g., if transcoding a transport stream
that already represents a H264 video stream it would be possible to
simply repackage it to a mp4 container without recoding.
* TODO: Cover art support still missing
Important changes in 0.92-FFmpeg (2017-12-14)
Changes in this release:
* Files will now be decoded to /tmp/ instead of memory.
* Full support for video files (mp4 target only).
* Removed --statcachesize option as caching will be handled by new disk cache.
* Fixed sync problems while accessing the same file concurrently
* Fixed many crashes due to incorrect usage of FFmpeg
* Cache directory user defineable
* Delete cache entries after predefined time
* Detect if file has changed and re-transcode
* Limit cache size
* Suspend transcode after n seconds
* Exit transcode after n seconds
* TODO: Add intelligent stream copy, e.g., if transcoding a transport stream
that already represents a H264 video stream it would be possible to
simply repackage it to a mp4 container without recoding.
Important changes in 0.91-FFmpeg (2017-10-04)
Added FFmpeg for decoding and encoding.
Changes in this release:
* Replaced decoding and encoding with FFmpeg.
* Removed discrete FLAC/Ogg/MP3 libraries. FFmpeg supports a wide range of
formats, including these, so they are no longer required.
* TODO: Supports a huge number of file formats now (run "mp3fs --codecs" for
a list).
* The standard target format is mp4 now (use "-o mp3" or "--output mp3"
to change back to mp3).
* Many other formats are possible, e.g. "-o ogg", they will be added later
because due to the manner in which Fuse requires access to the files they
need to be implemented with care.
* See manual or run "mp3fs -h" for even more new options.
* Run "mp3fs -f" to get a list of all supported input formats.
* Caching of file attributes is now the default as if
"--statcachesize=500" was given. Added "--statcachesize=0" to turn off
(not really a bright idea, though).
* TODO: Files will now be decoded to /tmp/ instead of memory if larger
than 100MB. Added "--maxmemcache=X" to change. Examples for X: 80000,
80MB or 1GB. Do not set to a too large value as you may run out of
memory.
* TODO: Support for video files.
* TODO: Add intelligent stream copy, e.g., if transcoding a transport stream
that already represents a H264 video stream it would be possible to
simply repackage it to a mp4 container without recoding.
Important changes in 0.91 (2014-05-14)
This is mainly bug fixes.
Changes in this release:
* Fixed a segfault caused by an overflow reading the list of available
decoders.
* A number of problems with the previous distribution tar are now fixed.
* The output of `mp3fs --version` has been made more complete.
Important changes in 0.9 (2014-04-06)
This is a major new release, and brings us very close to a 1.0 release!
Changes in this release:
* All transcoding code has been completely rewritten. Encoding and
decoding have been abstracted out into base classes defining interfaces
that can be implemented by different codec classes, with just a FLAC
decoder and MP3 encoder at the moment.
* The build system has been modified as well to support this usage.
* A number of small bugs or code inefficiencies have been fixed.
Important changes in 0.32 (2012-06-18)
This release has a lot of bug fixes and some code cleanup.
Changes in this release:
* The file size calculation should always be correct.
* A crash affecting programs like scp that might try to access past the
end of the file has been fixed.
* Too many other little fixes were made to list here. See the ChangeLog
for full details.
Important changes in 0.31 (2011-12-04)
This is a minor update, with bug fixes and a new feature.
Changes in this release:
* The ReplayGain support added earlier now can be configured through the
command line.
* Filename translation (from .flac to .mp3) is now fixed on filesystems
such as XFS that do not populate dirent.d_type.
* A couple other minor bugs fixes and changes were made.
Important changes in 0.30 (2010-12-01)
This is a major new release, and brings mp3fs much closer to an eventual
1.0 release.
Changes in this release:
* Support for additional metadata tags has been added. (From Gregor
Zurowski)
* Documentation improvements: the help message is more useful, and a man
page has been added.
* Choosing bitrate is now done with a command-line or mount option, rather
than the old comma syntax.
* A new option to select LAME encoding quality is now available. (From
Gregor Zurowski)
* Debug output can be enabled at runtime.
* Old external libraries included in distribution (StringIO, talloc) have
been removed and replaced.
* Numerous bug fixes have been made. (Some from Gregor Zurowski)
...
0.01 Initial release 06/Aug/2006
========================================================================
Copyright (C) 2010-2014 K. Henriksson
Copyright (C) 2017-2024 Norbert Schlia (FFmpeg support)
This documentation may be distributed under the GNU Free Documentation License
(GFDL) 1.3 or later with no invariant sections, or alternatively under the GNU