Converting Real Media with ffmpeg

2019-06-05 02:41发布

问题:

I have a number of old crusty Real Media files I need to convert and was hoping to write a script to batch process them. I'm able to do a Real Media -> AVI conversion with FFMpegX, but when I try to replicate the conversion with ffmpeg, it always errors out with something like:

[avi @ 0x10084fa00] Too large number of skipped frames 117425 > 60000

It may have something to do with the funky format of these Real Media files:

Duration: 01:28:23.42, start: 0.000000, bitrate: 448 kb/s
    Stream #0:0: Data: none, 32 kb/s
    Stream #0:1: Data: none, 192 kb/s
    Stream #0:2: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
    Stream #0:3: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:4: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 8 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:5: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 5 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:6: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 27 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:7: Audio: cook (cook / 0x6B6F6F63), 22050 Hz, mono, fltp, 32 kb/s
    Stream #0:8: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 192 kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc
    Stream #0:9: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 136 kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc
    Stream #0:10: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
    Stream #0:11: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
    Stream #0:12: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:13: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:14: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:15: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 5 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc

Does anyone have any tips on either how to find out what FFMpegX is doing to make the conversion work, or a better way to go about using ffmpeg to do this?

EDIT

Including the ffmpeg command (thank you to @Mondain for teaching me about the stream mapping!) and output:

Command:

ffmpeg -i cc121307pm.rm -map 0:8 -map 0:7 -c:v libx264 -c:a libfaac -b:a 32k test.avi

Output:

ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
  built on Aug  7 2013 12:29:30 with gcc 4.2.1 (GCC) (Apple Inc. build 5664)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=/usr/bin/gcc-4.2 --host-cflags='-Os -w -pipe -march=core2 -msse4.1 -mmacosx-version-min=10.6' --host-ldflags=-L/usr/local/lib --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
  libavutil      52. 18.100 / 52. 18.100
  libavcodec     54. 92.100 / 54. 92.100
  libavformat    54. 63.104 / 54. 63.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 42.103 /  3. 42.103
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
[rm @ 0x10180f200] Unsupported stream type 00000265
[rm @ 0x10180f200] Unsupported stream type 00000652
[rm @ 0x10180f200] max_analyze_duration 5000000 reached at 5004000 microseconds
Input #0, rm, from 'input.rm':
  Metadata:
    File ID         : 41deac0f-94fb-3595-325c-c717943bc532
    Content Rating  : (PICS-1.1 "http://www.classify.org/safesurf" labels comment "RealProducer Plus 8.5.0.200 Windows" ratings (SS~~000 1))
    Modification Date: 12/13/2007 16:26:16
    Generated By    : RealProducer Plus 8.5.0.200 Windows
    Keywords        : 
    Abstract        : 
    Target Audiences: 28K Modem (20 Kbps);56K Modem (34 Kbps);256K DSL/Cable Modem (225 Kbps);
    Video Quality   : Normal Motion Video
    Audio Format    : Voice Only
    Creation Date   : 12/13/2007 14:57:49
    ASMRuleBook     : #($Bandwidth < 15000),Stream2Bandwidth = 6500, Stream3Bandwidth = 5499;#($Bandwidth >= 15000) && ($Bandwidth < 20000),Stream2Ba
    title           : 
    author          : 
    copyright       : ?2007
    comment         : 
  Duration: 01:28:23.42, start: 0.000000, bitrate: 448 kb/s
    Stream #0:0: Data: none, 32 kb/s
    Stream #0:1: Data: none, 192 kb/s
    Stream #0:2: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
    Stream #0:3: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:4: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 8 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:5: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 5 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:6: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 27 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:7: Audio: cook (cook / 0x6B6F6F63), 22050 Hz, mono, fltp, 32 kb/s
    Stream #0:8: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 192 kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc
    Stream #0:9: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 136 kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc
    Stream #0:10: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
    Stream #0:11: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
    Stream #0:12: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:13: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:14: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
    Stream #0:15: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 5 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
[libx264 @ 0x101889c00] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
[libx264 @ 0x101889c00] profile High, level 1.3
Output #0, avi, to 'test.avi':
  Metadata:
    File ID         : 41deac0f-94fb-3595-325c-c717943bc532
    Content Rating  : (PICS-1.1 "http://www.classify.org/safesurf" labels comment "RealProducer Plus 8.5.0.200 Windows" ratings (SS~~000 1))
    Modification Date: 12/13/2007 16:26:16
    Generated By    : RealProducer Plus 8.5.0.200 Windows
    Keywords        : 
    Abstract        : 
    Target Audiences: 28K Modem (20 Kbps);56K Modem (34 Kbps);256K DSL/Cable Modem (225 Kbps);
    Video Quality   : Normal Motion Video
    Audio Format    : Voice Only
    Creation Date   : 12/13/2007 14:57:49
    ASMRuleBook     : #($Bandwidth < 15000),Stream2Bandwidth = 6500, Stream3Bandwidth = 5499;#($Bandwidth >= 15000) && ($Bandwidth < 20000),Stream2Ba
    INAM            : 
    author          : 
    ICOP            : ?2007
    ICMT            : 
    ISFT            : Lavf54.63.104
    Stream #0:0: Video: h264 (H264 / 0x34363248), yuv420p, 320x240, q=-1--1, 30 tbn, 30 tbc
    Stream #0:1: Audio: aac ([255][0][0][0] / 0x00FF), 22050 Hz, mono, s16, 32 kb/s
Stream mapping:
  Stream #0:8 -> #0:0 (rv20 -> libx264)
  Stream #0:7 -> #0:1 (cook -> libfaac)
Press [q] to stop, [?] for help
[rm @ 0x10180f200] DATA tag in middle of chunk, file may be broken.
Truncating packet of size 775215378 to 283607526
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 686581284 to 279055389
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 845942319 to 279042877
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 519635011 to 279040757
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 302013449 to 260425302
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 671112232 to 260422550
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 670137329 to 260371048
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 674387680 to 260336787
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 698852899 to 260336757
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 881600768 to 260281240
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 623325768 to 241694111
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 273397034 to 241679920
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 245534365 to 241615319
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 264614026 to 220525004
[rm @ 0x10180f200] Impossibly sized packet
[rm @ 0x10180f200] DATA tag in middle of chunk, file may be broken.
Truncating packet of size 637535515 to 219973842
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 432193588 to 219973831
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 286760544 to 219962162
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 1070610764 to 219737624
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 259875548 to 219371853
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 362059391 to 219371844
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 885179606 to 219371833
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 587434829 to 206214002
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 816942211 to 165623435
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 471624979 to 113266905
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 674059889 to 113266894
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 459361272 to 113253548
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 637535515 to 91792709
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 432193588 to 91792698
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 286760544 to 91781029
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 157876310 to 91505934
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 469953408 to 91505925
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 260215377 to 91486921
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 877425642 to 91335612
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 259887697 to 91322050
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 885071836 to 91245341
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 264614182 to 90930431
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 811350015 to 90930422
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 128974975 to 90713958
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 801151589 to 89195724
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 654645420 to 85989435
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 184860915 to 85989426
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 1072093904 to 85980304
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 907644163 to 85521587
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 187973624 to 52762203
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 315276941 to 52762157
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 947559309 to 23894660
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 183681448 to 2582872
[rm @ 0x10180f200] Impossibly sized packet
input.rm: Input/output error
frame=    0 fps=0.0 q=0.0 Lsize=      10kB time=00:00:00.00 bitrate=N/A    
video:0kB audio:0kB subtitle:0 global headers:0kB muxing overhead inf%
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

回答1:

It would appear that your file contains several streams and when working with ffmpeg, you will need to select the ones you want to convert. One would assume that you want an Audio / Video pair at the highest quality within the file. Here is how you use the "map" option to target streams: http://trac.ffmpeg.org/wiki/How%20to%20use%20-map%20option

If I had this file I would use this command:

ffmpeg -i [real-input-file] \
-map 0:8 -map 0:7 \
-c:v libx264 \
-c:a libfaac -b:a 32k \
output.mkv